主頁 > 軟體設計 > Redis的三種持久化策略及選取建議

Redis的三種持久化策略及選取建議

2023-05-16 13:41:14 軟體設計

概述

Redis是一個基于記憶體的高性能的鍵值型資料庫,它支持三種不同的持久化策略:RDB(快照)、AOF(追加檔案)、混合,這三種策略各有優缺點,需要根據不同的場景和需求進行選擇和配置,本文將介紹這三種策略

RDB(快照)

概述

RDB持久化策略是指在一定的時間間隔內,將Redis記憶體中的資料以二進制檔案的形式保存到硬碟上,這個二進制檔案就是一個快照,它記錄了某個時刻Redis記憶體中的所有資料,RDB持久化策略可以通過組態檔或者命令來觸發,組態檔中可以設定多個條件,當任意一個條件滿足時,就會執行一次快照操作,如下所示:

save 900 1 # 900秒內執行一次 set 操作 則持久化1次
save 300 10 # 300秒內執行10次 set 操作,則持久化1次
save 60 10000 # 60秒內執行10000次 set 操作,則持久化1次

命令有兩種:

  • save:不建議使用,會阻塞redis服務的行程,直到成功創建RDB檔案
  • bgsave:父行程創建一個子行程生成RDB檔案,父行程可以正常處理客戶端的指令,不影響主行程的服務

優缺點

RDB持久化策略的優點有:

  • RDB檔案是一個緊湊的二進制檔案,占用空間小,傳輸速度快,適合做備份和災難恢復
  • RDB檔案恢復資料的速度比AOF快,因為只需要加載一次檔案即可
  • RDB持久化對Redis服務器的性能影響較小,因為大部分作業由子行程完成

RDB持久化策略的缺點有:

  • RDB檔案不能實時或者近實時地反映Redis記憶體中的資料,因為它是定時觸發的,如果在兩次快照之間發生故障,可能會丟失一部分資料
  • RDB檔案在生成程序中可能會占用較多的記憶體和CPU資源,因為需要復制主行程的記憶體并執行壓縮操作

AOF(追加檔案)

概述

AOF持久化策略是指將Redis服務器執行的每一條寫命令都記錄到一個文本檔案中,這個文本檔案就是一個追加檔案(append only file)

AOF有三種持久化策略,也就是刷盤策略,可以根據不同的場景使用不同的刷盤策略

然而隨著時間的推移,AOF檔案也會越來越大,因為它記錄了所有的寫命令,這樣會導致AOF檔案占用過多的磁盤空間,以及恢復資料的時間過長,為了解決這個問題,Redis提供了AOF重寫機制,來壓縮和優化AOF檔案,

優缺點

AOF持久化策略的優點有:

  • AOF檔案可以實時或者近實時地記錄Redis記憶體中的資料,因為它是每次寫命令或者每秒鐘同步一次,如果在同步之間發生故障,可能會丟失一部分資料,但是資料丟失的概率比RDB小,
  • AOF檔案是一個文本檔案,可以方便地查看和編輯,AOF檔案中的命令是Redis協議格式的,可以直接用Redis客戶端來執行,
  • AOF檔案可以自動進行重寫,以減少冗余命令和檔案體積,重寫程序不影響Redis服務器的正常服務,也不會丟失任何資料,

AOF持久化策略的缺點有:

  • AOF檔案通常比RDB檔案大,占用更多的磁盤空間
  • AOF檔案恢復資料的速度比RDB慢,因為需要重新執行所有的命令
  • AOF檔案在寫入程序中可能會出現資料不一致的情況,例如命令只寫入了一半或者寫入了錯誤的命令,這種情況下需要用redis-check-aof工具來修復AOF檔案

AOF刷盤策略

當Redis重啟時,可以通過重新執行追加檔案中的命令來恢復資料,AOF持久化策略可以通過組態檔來開啟和設定,它決定了寫命令記錄到AOF檔案的頻率,有三個選項:

  • no:寫入快取,什么時候刷盤由redis決定
  • everysec:每隔一秒刷一次盤
  • always:寫入快取時同時寫入磁盤(盡快刷盤,而不是實時刷盤)

以下是三個策略的對比:

型別 資料安全性 性能
no
everysec 較高 較高
always

AOF重寫

AOF重寫機制的原理是:Redis會創建一個新的AOF檔案,然后根據記憶體中的當前資料狀態,生成相應的寫命令,并寫入到新的AOF檔案中,這樣新的AOF檔案就只包含了最終資料的寫命令,而不包含任何無效或者冗余的命令,例如:

# 原始AOF檔案
set a 1
set b 2
incr a
del b
set c 3

# 重寫后的AOF檔案
set a 2
set c 3

上圖就是重寫前和重寫后的檔案對比,因為AOF是追加的,是順序讀寫(ES也是這樣的),所以重寫后的命令set a 1incr a變成為set a 2,為了保證在AOF重寫期間的新資料不丟失,Redis中引入了AOF重寫緩沖區,當開始執行AOF檔案重寫之后又接收到客戶端的請求命令,不但要將命令寫入原本的AOF緩沖區(根據上面提到的引數刷盤),還要同時寫入AOF重寫緩沖區:

一旦子行程完成了AOF檔案的重寫,此時會向父行程發出信號,父行程收到信號之后會進行阻塞(阻塞期間不執行任何命令),并進行以下兩項作業:

  • AOF重寫緩沖區的檔案重繪到新的AOF檔案內
  • 將新AOF檔案進行改名并原子操作的替換掉舊的AOF檔案

隨后,在完成了上面的兩項作業之后,整個AOF重寫作業完成,父行程開始正常接收命令,

  • 自動觸發:自動觸發可以通過以下引數進行設定,
# 檔案大小超過上次AOF重寫之后的檔案的百分比,默認100
# 也就是默認達到上一次AOF重寫檔案的2倍之后會再次觸發AOF重寫
auto-aof-rewrite-percentage 100
# 設定允許重寫的最小AOF檔案大小,默認是64M
# 主要是避免滿足了上面的百分比,但是檔案還是很小的情況,
auto-aof-rewrite-min-size 64mb
  • 手動觸發:執行bgrewriteaof命令,

選取正確的持久化策略

Redis現有的持久化策略有三種:

  • AOF
  • RDB
  • AOF與RDB混合

他們各有優缺點,需要結合不同的應用場景綜合考慮,首先先講解AOFRDB的選擇,再講解混合模式

AOF和RDB的選擇

在Redis中,AOF和RDB兩種持久化方式各有優缺點,一般來說,有以下幾個方面需要參考:

  • 資料安全性:如果要求資料不丟失,推薦AOF
    • AOF可以采取每秒同步一次資料或每次寫操作都同步用來保證資料安全性
      • 如果使用每秒同步一次策略,則最多丟失一秒的資料
      • 如果使用每次寫操作都同步策略,安全性達到了極致,但這會影響性能
    • RDB是一個全量的二進制檔案,恢復時只需要加載到記憶體即可,但是可能會丟失最近幾分鐘的資料(取決于RDB持久化策略)
  • 資料恢復速度:如果要求快速恢復資料,推薦RDB
    • AOF需要重新執行所有的寫命令,恢復時間會更長
    • RDB是一個全量的二進制檔案,恢復時只需要加載到記憶體即可
  • 資料備份和遷移:如果要求方便地進行資料備份和遷移,推薦RDB
    • AOF檔案可能會很大,傳輸速度慢
    • RDB檔案是一個緊湊的二進制檔案,占用空間小,傳輸速度快
  • 資料可讀性:如果要求能夠方便地查看和修改資料,推薦AOF
    • AOF是一個可讀的文本檔案,記錄了所有的寫命令,可以用于災難恢復或者資料分析
    • RDB是一個二進制檔案,不易查看和修改
資料安全性 資料恢復速度 資料備份和遷移 資料可讀性
AOF
RDB

AOF與RDB的混合模式

綜合上一節,我們可以根據不同的場景和需求來選擇合適的持久化方式,但是,在實際應用中,并不一定要二選一,也可以同時使用AOF和RDB兩種持久化方式,這樣可以利用AOF來保證資料不丟失,作為資料恢復的第一選擇;用RDB做不同程度的冷備份,當AOF備份檔案丟失或損壞不可用時,可以使用RDB快照檔案快速地恢復資料

綜上所述,混合模式兼并了RDB重啟后的快速恢復能力和AOF丟失資料風險低的能力,具體操作流程如下:

  1. 子行程會通過BGSAVE 寫入AOF中
  2. 觸發BGREWRITEAOF后,會將AOF寫入到檔案
  3. 將含有RDB和AOF的資料覆寫舊的AOF檔案(這時AOF檔案一半為RDB,一半為AOF)

混合模式的AOF檔案:

REDIS0008?redis-ver4.0.1?redis-bits繞?ctime聮~`?used-mem?? ?aof-preamble??repl-id(6c3378899b63bc4ebeaafaa09c27902d514eeb1f?repl-offset??? list1?77   /   appleorangegrape?e k1v1彝髖S[zb*2
$6
SELECT
$1
0
*3
$4
sadd
$8
gamedisk
$4
nioh
*3
$4
sadd
$8
gamedisk
$4
tomb

如果想要開啟混合模式,在redis.conf中配置:

aof-use-rdb-preamble yes

同時使用AOF和RDB兩種持久化方式也需要注意一些問題:

  • AOF重寫和RDB持久化可能會同時發生沖突,導致記憶體、CPU和磁盤的消耗增加,為了解決這個問題,Redis采用了一些策略來協調兩者之間的關系,具體可以參考下面的介紹(AOF重寫和RDB持久化的沖突
  • AOF檔案可能會變得很大,導致磁盤空間不足或者恢復時間過長,為了解決這個問題,Redis提供了AOF重寫機制來壓縮AOF檔案,具體可以參考上一節(AOF重寫
  • AOF檔案可能會被損壞或者丟失,導致資料無法恢復,為了解決這個問題,Redis提供了AOF校驗機制來檢測AOF檔案是否完整,具體可以參考下面的介紹(AOF校驗機制

AOF重寫和RDB持久化的沖突

在Redis中,AOF重寫和RDB持久化可能會同時發生,這會導致一些沖突和問題,例如:

  • AOF重寫和RDB持久化都需要fork子行程,如果兩個子行程同時存在,會增加記憶體的消耗和系統的負載,
  • AOF重寫和RDB持久化都需要寫入磁盤,如果兩個檔案同時寫入,會增加磁盤的壓力和IO的開銷,
  • AOF重寫和RDB持久化都需要在完成后通知主行程,如果兩個信號同時到達,可能會造成信號丟失或者處理錯誤,

為了解決這些沖突和問題,Redis采用了以下策略:

  • 如果AOF重寫和RDB持久化同時被觸發,那么只有一個子行程會被創建,優先執行RDB持久化,然后再執行AOF重寫,這樣可以避免同時存在兩個子行程的情況,
  • 如果AOF重寫正在進行,而此時又收到了RDB持久化的請求,那么RDB持久化會被延遲到AOF重寫完成后再執行,這樣可以避免同時寫入兩個檔案的情況,
  • 如果AOF重寫和RDB持久化都完成了,那么主行程會先處理RDB持久化的信號,然后再處理AOF重寫的信號,這樣可以避免信號丟失或者處理錯誤的情況,

總之,Redis通過優先級、延遲和順序等方式來協調AOF重寫和RDB持久化的沖突和問題,保證了資料的完整性和一致性,下圖為簡要說明,

場景 策略
AOF重寫與RDB持久化同時被觸發 優先RDB
AOF重寫正在進行 優先AOF
AOF重寫和RDB持久化都完成 優先RDB

AOF校驗機制

AOF校驗機制是指在Redis啟動時,對AOF檔案進行檢查,判斷檔案是否完整,是否有損壞或者丟失的資料,如果發現AOF檔案有問題,Redis會拒絕啟動,并給出相應的錯誤資訊

AOF校驗機制的原理是使用一個64位的校驗和(checksum)來對AOF檔案進行驗證,校驗和是一個數字,它是根據AOF檔案的內容計算出來的,如果AOF檔案的內容發生了任何改變,那么校驗和也會發生變化,因此,通過比較計算出來的校驗和和保存在AOF檔案末尾的校驗和,就可以判斷AOF檔案是否完整,

具體來說,AOF校驗機制的程序如下:

  • 當Redis執行AOF重寫時,它會在新的AOF檔案末尾寫入一個特殊的命令:*1\r\n$6\r\nCHECKSUM\r\n,這個命令表示接下來要寫入一個校驗和
  • Redis會使用CRC64演算法,對新的AOF檔案中除了最后一行之外的所有內容進行計算,得到一個64位的數字作為校驗和,并將這個數字以16進制的形式寫入到新的AOF檔案末尾,
  • Redis會將新的AOF檔案替換舊的AOF檔案,并將校驗和保存在記憶體中
  • 當Redis重啟時,它會讀取AOF檔案,并使用同樣的CRC64演算法,對除了最后一行之外的所有內容進行計算,得到一個64位的數字作為校驗和,并將這個數字與記憶體中保存的校驗和進行比較
  • 如果兩個校驗和相同,說明AOF檔案沒有損壞或者丟失資料,Redis會繼續啟動并加載AOF檔案中的資料
  • 如果兩個校驗和不同,說明AOF檔案有問題,Redis會拒絕啟動,并給出類似于Bad file format reading the append only file: checksum mismatch這樣的錯誤資訊

通過這種方式,Redis可以保證在啟動時檢測到AOF檔案是否完整,從而避免加載錯誤或者不完整的資料,當然,這種機制也有一些局限性:

  • AOF校驗機制只能在Redis啟動時執行,如果在運行程序中AOF檔案被修改或者損壞,Redis無法及時發現
  • AOF校驗機制只能檢測到AOF檔案是否完整,但不能檢測到AOF檔案是否正確,比如說,如果有人惡意地修改了AOF檔案中的某些命令或者引數,導致資料邏輯上出現錯誤,那么Redis無法識別出這種情況,
  • AOF校驗機制會增加Redis啟動時的時間開銷,因為需要對整個AOF檔案進行計算,如果AOF檔案很大,那么這個程序可能會很慢,

總之,AOF校驗機制是一種簡單而有效的方法,可以保證在Redis啟動時檢測到AOF檔案是否完整,但是它也有一些局限性和代價,需要在實際應用中權衡利弊,

三種模式的選擇建議

具體的選擇建議如下:

  • 如果對資料完整性要求不高,可以只使用RDB,或者將AOF的同步頻率設定為每秒一次
  • 如果想讓資料盡可能不丟失,可以只使用AOF,并將AOF的同步頻率設定為每次寫入操作都同步
  • 如果對資料完整性和性能都有要求,可以同時使用AOF和RDB,并將AOF的同步頻率設定為每秒一次,這樣既可以保證資料的安全性,又可以利用RDB進行快速的資料恢復
  • 如果既想節省磁盤空間,又想提高資料恢復速度,可以只使用RDB,并適當調整RDB的快照頻率

這三種模式各有優缺點,需要根據具體的場景和需求來進行選擇和配置,在選擇時,需要考慮以下幾個因素:

  • 資料完整性:即資料丟失的風險和可接受的范圍
  • 資料恢復速度:即從持久化檔案恢復到記憶體中所需的時間
  • 磁盤空間占用:即持久化檔案所占用的磁盤空間大小
  • 寫入性能:即持久化操作對Redis服務端的寫入性能的影響

注意:
AOF策略設定為 always 或 everysec,并且BGSAVE BGREWRITEAOF正在對磁盤執行大量 I/O 時,Redis 刷盤可能會阻塞
可以設定no-appendfsync-on-rewrite yes,來緩解這個問題,這樣的話,當另一個子行程正在保存的時候,Redis 的持久性與appendfsync no相同,實際上,最嚴重的情況是丟失30秒的日志

持久化策略常見問題及解決方案

AOF檔案過大

當AOF檔案過大時,會占用磁盤空間,影響寫入性能,甚至導致Redis啟動失敗,可以使用bgrewriteaof命令或者配置auto-aof-rewrite-percentageauto-aof-rewrite-min-size引數來觸發AOF重寫操作,將AOF檔案壓縮為最小的命令集合

# 檔案大小超過上次AOF重寫之后的檔案的百分比,默認100
# 也就是默認達到上一次AOF重寫檔案的2倍之后會再次觸發AOF重寫
auto-aof-rewrite-percentage 100
# 設定允許重寫的最小AOF檔案大小,默認是64M
# 主要是避免滿足了上面的百分比,但是檔案還是很小的情況,
auto-aof-rewrite-min-size 64mb

AOF檔案損壞

當AOF檔案損壞時,會導致Redis無法正常啟動或者恢復資料,可以使用redis-check-aof工具來修復AOF檔案,或者使用備份的RDB檔案來恢復資料

AOF 檔案可能會被截斷

在 Redis 啟動程序中,當 AOF 資料被加載回記憶體時,可能會發現 AOF 檔案在最后被截斷

  • aof-load-truncated yes,則加載截斷的 AOF 檔案,并且記錄日志
  • aof-load-truncated no,則服務器會因錯誤拒絕啟動,且需要在啟動服務器之前使用redis-check-aof修復aof檔案

可以在redis.conf中配置:

aof-load-truncated yes

可記錄時間戳幫助恢復資料

如果在AOF記錄時間戳,可能會與現有的AOF決議器不兼容,默認關閉

redis.conf中配置:

aof-timestamp-enabled no

RDB檔案丟失

當RDB檔案丟失時,會導致Redis無法恢復資料,為了解決這個問題,可以使用備份的AOF檔案或者其他節點的RDB檔案來恢復資料,或者增加RDB的快照頻率來減少資料丟失的風險

RDB檔案損壞

當RDB檔案損壞時,會導致Redis無法恢復資料,為了解決這個問題,可以使用redis-check-rdb工具來檢查和修復RDB檔案,或者使用備份的AOF檔案或者其他節點的RDB檔案來恢復資料

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/552572.html

標籤:架構設計

上一篇:Kafka 高可靠高性能原理探究

下一篇:返回列表

標籤雲
其他(159118) Python(38137) JavaScript(25431) Java(18044) C(15226) 區塊鏈(8267) C#(7972) AI(7469) 爪哇(7425) MySQL(7186) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5340) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4572) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2433) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1973) 功能(1967) Web開發(1951) HtmlCss(1937) python-3.x(1918) C++(1917) 弹簧靴(1913) xml(1889) PostgreSQL(1876) .NETCore(1860) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • Redis的三種持久化策略及選取建議

    Redis三種不同的持久化策略:RDB(快照)、AOF(追加檔案)、混合。這三種策略各有優缺點,需要根據不同的場景和需求進行選擇和配置。本文將介紹這三種策略、選取建議及常見問題的解決方案 ......

    uj5u.com 2023-05-16 13:41:14 more
  • Kafka 高可靠高性能原理探究

    在探究 Kafka 核心知識之前,我們先思考一個問題:什么場景會促使我們使用 Kafka? 說到這里,我們頭腦中或多或少會蹦出異步解耦和削峰填谷等字樣,是的,這就是 Kafka 最重要的落地場景。 ......

    uj5u.com 2023-05-16 13:35:24 more
  • 如何繪制漂亮的架構圖,方法論+工具

    架構圖一詞應用比較廣泛,涉及到各個行業,從軟硬體領域來對架構圖分類就有如下幾種 物理架構 描述整個資訊系統需要使用到的軟硬體設施,以及其部署位置及各個軟硬體之間的關聯關系。軟硬體設施包括主機、服務器、交換機、路由器、防火墻、快取服務器、注冊中心、資料庫等等。 如下兩種架構圖屬于物理架構: 部署圖 基 ......

    uj5u.com 2023-05-15 07:53:25 more
  • 長文圖解:詳解金字塔原理如何應用于架構設計

    0 文章概述 大家想一想作業中有沒有遇到以下情況:一位同事用了很長時間羅列了很多事實和資料向你說明一件事情,但是你聽完根本不知道他想要說什么。一位同事用了大量筆墨撰寫了技術方案,不僅有文字還有圖表,但是你看完也不知道這個方案到底要解決什么問題以及如何落地。 上述情況的出現大概率是因為表述者沒有使用結 ......

    uj5u.com 2023-05-15 07:53:20 more
  • 如何繪制漂亮的架構圖,方法論+工具

    架構圖一詞應用比較廣泛,涉及到各個行業,從軟硬體領域來對架構圖分類就有如下幾種 物理架構 描述整個資訊系統需要使用到的軟硬體設施,以及其部署位置及各個軟硬體之間的關聯關系。軟硬體設施包括主機、服務器、交換機、路由器、防火墻、快取服務器、注冊中心、資料庫等等。 如下兩種架構圖屬于物理架構: 部署圖 基 ......

    uj5u.com 2023-05-15 07:52:49 more
  • 長文圖解:詳解金字塔原理如何應用于架構設計

    0 文章概述 大家想一想作業中有沒有遇到以下情況:一位同事用了很長時間羅列了很多事實和資料向你說明一件事情,但是你聽完根本不知道他想要說什么。一位同事用了大量筆墨撰寫了技術方案,不僅有文字還有圖表,但是你看完也不知道這個方案到底要解決什么問題以及如何落地。 上述情況的出現大概率是因為表述者沒有使用結 ......

    uj5u.com 2023-05-15 07:52:45 more
  • 一文揭秘DDD到底解決了什么問題

    DDD作為架構設計思想幫助微服務控制規模復雜度,那它是怎么做到的呢? 一、架構設計是為了解決系統復雜度 談到架構,相信每個技術人員都是耳熟能詳,但如果深入探討一下,“為何要做架構設計?”或者“架構設計目的是什么?”類似的問題,大部分人可能從來沒有思考過,或者即使有思考,也沒有太明確可信的答案。 1. ......

    uj5u.com 2023-05-14 09:32:36 more
  • 一文揭秘DDD到底解決了什么問題

    DDD作為架構設計思想幫助微服務控制規模復雜度,那它是怎么做到的呢? 一、架構設計是為了解決系統復雜度 談到架構,相信每個技術人員都是耳熟能詳,但如果深入探討一下,“為何要做架構設計?”或者“架構設計目的是什么?”類似的問題,大部分人可能從來沒有思考過,或者即使有思考,也沒有太明確可信的答案。 1. ......

    uj5u.com 2023-05-14 09:26:48 more
  • 分布式系統常見問題

    一.概述 分布式系統存在網路,時鐘,以及許多不可預測的故障。分布式事務,一致性與共識問題,迄今為止仍沒有得到很好的解決方案。要想完美地解決分布式系統中的問題不太可能,但是實踐中應對特定問題仍有許多可靠的解決方案。本文不會談及諸如BASE, CAP, ACID 等空泛的理論,只基于實踐中遇到的問題提出 ......

    uj5u.com 2023-05-14 08:32:39 more
  • 分布式系統常見問題

    一.概述 分布式系統存在網路,時鐘,以及許多不可預測的故障。分布式事務,一致性與共識問題,迄今為止仍沒有得到很好的解決方案。要想完美地解決分布式系統中的問題不太可能,但是實踐中應對特定問題仍有許多可靠的解決方案。本文不會談及諸如BASE, CAP, ACID 等空泛的理論,只基于實踐中遇到的問題提出 ......

    uj5u.com 2023-05-14 08:31:54 more