【部落格383】etcd儲存結構
內容:記錄etcd的儲存結構
etcd框架:
模組解析:
etcd server:對外接收客戶端的請求,對應etcd程式碼中的etcdserver目錄,其中還有一個
raft.go的模組與etcd-raft庫進行通訊。etcdserver中與儲存相關的模組是applierV3,
這裡封裝了V3版本的資料儲存,WAL(write ahead log),用於寫資料日誌,etcd啟動時
會根據這部分內容進行恢復。
etcd raft:etcd的raft庫,前面的文章已經具體分析過這部分程式碼。除了與本節點的etcd
server通訊之外,還與叢集中的其他etcd server進行互動做一致性資料同步的工作
etcd的資料處理步驟:
一個請求與一個etcd叢集互動的主要流程分為兩大部分:
1. 寫資料到某個etcd server中。
2. 該etcd server與叢集中的其他etcd節點進行互動,當確保資料已被儲存之後應答客戶端。
請求流程劃分為了以下的子步驟:
• 1.1:etcd server收到客戶端請求。
• 1.2:etcd server將請求傳送給本模組的raft.go,它負責與etcd raft模組進行通訊。
• 1.3:raft.go將資料封裝成raft日誌的形式提交給raft模組。
• 1.4:raft模組會首先儲存到raftLog的unstable儲存部分。
• 1.5:raft模組通過raft協議與叢集中其他etcd節點進行互動。
注意:
如果寫入資料的etcd是leader節點,則直接在leader節點處理提交的資料。
如果提交資料到非leader節點的話需要路由到etcd leader節點去。
而應答步驟如下:
• 2.1:叢集中其他節點向leader節點應答接收這條日誌資料。
• 2.2:當超過叢集半數以上節點應答接收這條日誌資料時,etcd raft通過Ready結構體
通知etcd server中的raft該日誌資料已經commit。
• 2.3:raft.go收到Ready資料將首先將這條日誌寫入到WAL模組中。
• 2.4:通知最上層的etcd server該日誌已經commit。
• 2.5:etcd server呼叫applierV3模組將日誌寫入持久化儲存中。
• 2.6:etcd server應答客戶端該資料寫入成功。
• 2.7:最後etcd server呼叫etcd raft,修改其raftLog模組的資料,將這條日誌寫入到
raftLog的storage中。
注意:
• etcd raft模組在應答某條日誌資料已經commit之後,是首先寫入到WAL模組中的,
因為這個模組只是新增一條日誌,所以速度會很快,即使在後面applierV3寫入失敗,
重啟的時候也可以根據WAL模組中的日誌資料進行恢復。
• etcd raft中的raftLog,按照前面文章的分析,其中的資料是儲存到記憶體中的,
重啟即失效,上層應用真實的資料是持久化儲存到WAL和applierV3中的。
相關文章
- etcd MVCC 儲存結構及流程MVC
- 大運儲存部落格開通
- 儲存結構
- etcd-raft-儲存分析Raft
- Redis儲存結構以及儲存格式Redis
- Oracle體系結構部落格連結Oracle
- JanusGraph -- 儲存結構
- CentOS 儲存結構CentOS
- etcd學習(9)-etcd中的儲存實現
- 【部落格399】etcd的應用場景
- 個人部落格開發系列:文章實時儲存
- 圖的儲存結構
- 三種儲存結構
- MySQL Innodb 儲存結構 & 儲存Null值 解析MySqlNull
- MySQL優化---儲存過程和儲存函式-1-轉自部落格園MySql優化儲存過程儲存函式
- 傾情奉獻 部落格園部落格下載工具 完美下載所有部落格 儲存格式為DOC,PDF,EPUB,XPS
- 個人部落格圖片儲存推薦--又拍雲
- InnoDB記錄儲存結構
- php圖的儲存結構PHP
- HBase 資料儲存結構
- redis 儲存結構原理 2Redis
- oracle物理儲存結構理解Oracle
- Oracle資料儲存結構Oracle
- SAP儲存地點結構
- MySQL InnoDB的儲存結構總結MySql
- 資料結構相關部落格目錄資料結構
- MySQL的varchar儲存原理:InnoDB記錄儲存結構MySql
- 部落格一鍵儲存本地exe視覺化介面檔案視覺化
- 【資料結構——圖和圖的儲存結構】資料結構
- PostgreSQL儲存引擎之page結構SQL儲存引擎
- 儲存器的層次結構
- 圖(Graph)——圖的儲存結構
- 【RocketMQ】RocketMQ儲存結構設計MQ
- innodb表空間儲存結構
- oracle邏輯儲存結構理解Oracle
- 串的順序儲存結構
- Oracle RAC 體系結構--儲存Oracle
- 管理資料庫儲存結構資料庫