TOP
1/1
無庫存,下單後進貨(採購期約45個工作天)
  • etcd技術內幕(簡體書)

  • ISBN13:9787121343865
  • 出版社:電子工業出版社
  • 作者:百里燊
  • 裝訂/頁數:平裝/412頁
  • 規格:26cm*19cm (高/寬)
  • 版次:1
  • 出版日:2018/07/01
人民幣定價:89元
定  價:NT$534元
優惠價: 87465
可得紅利積點:13 點

無庫存,下單後進貨(採購期約45個工作天)

商品簡介

目次

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,也歡迎讀者朋友通過此郵箱與我進行交流。
致謝
感謝我的母親,謝謝您的付出和犧牲!
感謝白醬陪我看過一盞盞亮起的路燈,感謝三十在技術上提供的幫助。
感謝電子工業出版社博文視點的陳曉猛老師,是您的辛勤工作讓本書的出版成為可能。同時還要感謝許多我不知道名字的幕後工作人員為本書付出的努力。

百里燊
目  錄


第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接口
本章小結
參考文獻

購物須知

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約20個工作天;
海外無庫存之書籍,平均作業時間約45個工作天,然不保證確定可調到貨,尚請見諒。