3dwoo大學簡體電腦書店
etcd技術內幕
( 簡體 字)
作者:百里燊類別:1. -> 程式設計 -> 綜合
出版社:電子工業出版社etcd技術內幕 3dWoo書號: 49383
詢問書籍請說出此書號!
有庫存
NT售價: 445
出版日:7/1/2018
頁數:412
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787121343865 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第1章 etcd入門
1.1 etcd簡介
1.2 數據模型
1.3 環境搭建
1.3.1 環境變量
1.3.2 代碼結構
1.3.3 運行
本章小結
第2章 Raft協議
2.1 Leader選舉
2.2 日志復制
2.3 網絡分區的場景
2.4 日志壓縮與快照
2.5 其他技術點
2.5.1 linearizable語義
2.5.2 只讀請求
2.5.3 PreVote狀態
2.5.4 Leader節點轉移
本章小結
第3章 etcd-raft模塊詳解
3.1 raft結構體
3.1.1 Config結構體
3.1.2 Storage接口及其實現
3.1.3 unstable結構體
3.1.4 raftLog結構體
3.1.5 raft實現
3.2 Node接口
3.2.1 node結構體
3.2.2 初始化
3.2.3 run()方法
3.2.4 Node接口實現
3.3 raftexample示例分析
3.3.1 raftNode
3.3.2 HTTP服務端
3.3.3 kvstore
本章小結
第4章 網絡層
4.1 Go語言網絡編程基礎
4.1.1 http.Server
4.1.2 RoundTripper
4.2 etcd-rafthttp模塊詳解
4.2.1 rafthttp.Transporter接口
4.2.2 Peer接口
4.2.3 pipeline
4.2.4 streamWriter實例
4.2.5 streamReader實例
4.2.6 snapshotSender
4.3 Handler實例
4.3.1 pipelineHandler
4.3.2 streamHandler
4.3.3 snapshotHandler
本章小結
第5章 WAL日志與快照
5.1 WAL日志
5.1.1 初始化
5.1.2 打開日志
5.1.3 讀取日志
5.1.4 追加日志
5.1.5 文件切換
5.2 SnapShotter
本章小結
第6章 storage
6.1 etcd v2版本存儲
6.1.1 node
6.1.2 Event
6.1.3 watcher和watcherHub
6.1.4 store
6.2 etcd v3版本存儲
6.2.1 backend
6.2.2 watcher機制
6.2.3 Lessor
本章小結
第7章 etcd-server詳解
7.1 raftNode結構體
7.2 RaftCluster
7.3 EtcdServer
7.3.1 初始化
7.3.2 注冊Handler
7.3.3 啟動
7.4 ApplierV2和applierV3
7.4.1 ApplierV2
7.4.2 applierV3
7.5 AlarmStore
本章小結
第8章 etcd客戶端詳解
8.1 GRPC基礎
8.1.1 定義proto文件
8.1.2 服務端
8.1.3 創建客戶端
8.2 Client v3
8.2.1 kvServer
8.2.2 EtcdServer
8.2.3 Client
8.3 Client v2
8.3.1 KeysAPI接口
8.3.2 httpClient接口
本章小結
參考文獻
etcd是一個可靠的的分布式KV存儲,由CoreOS公司開發,其底層使用Raft算法保證一致性,主要用于共享配置和服務發現。本書主要從源碼角度深入剖析etcd,首先介紹etcd的背景知識,并介紹如何搭建起源碼環境以及相關的命令。然后從基本的Raft協議開始介紹,幫助讀者了解Raft協議的背景。接著分析etcd-raft模塊對Raft協議的實現,etcd-raft模塊是etcd的核心模塊之一,該模塊也被很多其他的項目中直接作為Raft協議的底層實現。然后介紹Http編程基礎以及etcd-rafthttp模塊的工作原理和具體實現,介紹etcd中如何處理WAL日志文件以及快照數據文件,詳細分析了etcd的底層存儲。最后重點介紹etcd服務端和etcd客戶端的相關內容。

etcd是一個可靠的分布式KV存儲,其底層使用Raft算法保證一致性,主要用于共享配置和服務發現。etcd是CoreOS公司發起的一個開源項目,其源代碼地址為https://github.com/ coreos/etcd。
目前提供配置共享和服務發現功能的組件還是比較多的,其中應用最廣泛、大家最熟悉的應該就是ZooKeeper了,很多開源項目都在不同程度上依賴了ZooKeeper,例如,Dubbo、Kafka。在Golang社區中,etcd是唯一一個可以媲美ZooKeeper的組件,在有些方面,etcd甚至超越了ZooKeeper,給開發者眼前一亮的感覺。
etcd作為一個優秀的分布式KV存儲產品,其底層的etcd-raft模塊實現了Raft協議,可以幫助開發者快速實現最終一致性功能。etcd以其高性能、易維護、Raft實現等優點,受到越來越多的開發人員的青睞,在Golang社區中聲名大噪。
etcd的代碼中有很多亮點,為了提高整體性能,其實現中使用了大量的goroutine和Channel。etcd 3 中開始使用BoltDB作為底層的持久存儲,使用BTree索引加速查詢,還提供了可靠的Watcher功能,同時提供了基于GRPC的新版本客戶端。當然,etcd 3依然兼容etcd 2的內存存儲和HTTP API。
etcd 3中有很多令人稱贊的功能和優秀的設計,但至今還沒有深入剖析etcd 3的內部設計和實現細節的圖書,本書以etcd 3為基礎,詳細分析了etcd的架構設計和實現細節,其中穿插介紹了etcd源碼中涉及的基礎知識,以及筆者在實踐中的思考。
如何閱讀本書
由于篇幅限制,本書并沒有詳細介紹Go語言的基礎知識,但為了便于理解讀者理解etcd的設計思想和實現細節,筆者介紹了一些必需且重要的基礎內容,例如,Go語言提供的HTTP功能。
本書共8章,主要從源碼角度深入剖析etcd的原理和實現。建議讀者先閱讀前兩章,了解Raft協議之后,再開始學習etcd的工作原理和代碼實現。
第1章簡要介紹etcd的背景知識及其基本的數據模型,然后介紹如何搭建源碼環境及相關的命令。
第2章從基本的Raft協議開始介紹,幫助讀者了解Raft協議的背景知識、大致工作原理、如何處理各種異常場景,以及幾個比較重要的擴展點。
第3章著重分析etcd中的raft模塊對Raft協議的實現,etcd-raft模塊是etcd的核心模塊之一,GitHub上很多其他項目直接使用etcd-raft模塊作為其Raft協議的底層實現。同時,本章也介紹了etcd自帶的raftexample示例,幫助讀者了解etcd-raft模塊的基本使用方法,方便讀者在實踐中直接使用etcd-raft模塊。
第4章簡單介紹HTTP編程基礎,以及etcd-rafthttp模塊的工作原理和具體實現,其中涉及RoundTripper的基本原理、rafthttp.Transporter的實現及多種Handler的實現。
第5章介紹etcd中如何處理WAL日志文件和快照數據文件,其中分析了WAL結構體和Snapshotter的具體實現。
第6章詳細分析etcd的底層存儲,對etcd v2和etcd v3兩個版本的存儲都做了詳細的介紹,不僅分析了底層的KV存儲,還分析了watcher機制和Lessor的實現原理。
第7章重點介紹etcd服務端的內容,etcd服務端會組裝并協調前面介紹的各個組件,并且在它們的基礎上擴展出了更多的功能。
第8章主要介紹etcd客戶端的相關內容,詳細分析了v2和v3兩個版本客戶端的具體實現。
如果讀者在閱讀本書的過程中,發現任何不妥之處,請將您寶貴的意見和建議發送到郵箱shen_baili @163.com,也歡迎讀者朋友通過此郵箱與我進行交流。
致謝
感謝我的母親,謝謝您的付出和犧牲!
感謝白醬陪我看過一盞盞亮起的路燈,感謝三十在技術上提供的幫助。
感謝電子工業出版社博文視點的陳曉猛老師,是您的辛勤工作讓本書的出版成為可能。同時還要感謝許多我不知道名字的幕后工作人員為本書付出的努力。

百里燊
pagetop