本文轉載自:https://www.infoq.cn/article/etcd-interpretation-application-scenario-implement-principle
隨着 CoreOS 和 Kubernetes 等項目在開源社區日益火熱,它們項目中都用到的 etcd 組件作爲一個高可用強一致性的服務發現存儲倉庫,漸漸爲開發人員所關注。在雲計算時代,如何讓服務快速透明地接入到計算集羣中,如何讓共享配置信息快速被集羣中的所有機器發現,更爲重要的是,如何構建這樣一套高可用、安全、易於部署以及響應快速的服務集羣,已經成爲了迫切需要解決的問題。etcd 爲解決這類問題帶來了福音,本文將從 etcd 的應用場景開始,深入解讀 etcd 的實現方式,以供開發者們更爲充分地享用 etcd 所帶來的便利。
經典應用場景
要問 etcd 是什麼?很多人第一反應可能是一個鍵值存儲倉庫,卻沒有重視官方定義的後半句,用於配置共享和服務發現。
實際上,etcd 作爲一個受到 ZooKeeper 與 doozer 啓發而催生的項目,除了擁有與之類似的功能外,更專注於以下四點。
- 簡單:基於 HTTP+JSON 的 API 讓你用 curl 就可以輕鬆使用。
- 安全:可選 SSL 客戶認證機制。
- 快速:每個實例每秒支持一千次寫操作。
- 可信:使用 Raft 算法充分實現了分佈式。
隨着雲計算的不斷髮展,分佈式系統中涉及到的問題越來越受到人們重視。受阿里中間件團隊對ZooKeeper 典型應用場景一覽一文的啓發,筆者根據自己的理解也總結了一些 etcd 的經典使用場景。讓我們來看看 etcd 這個基於 Raft 強一致性算法的分佈式存儲倉庫能給我們帶來哪些幫助。
值得注意的是,分佈式系統中的數據分爲控制數據和應用數據。使用 etcd 的場景默認處理的數據都是控制數據,對於應用數據,只推薦數據量很小,但是更新訪問頻繁的情況。
etcd場景總結:
- 場景一:服務發現(Service Discovery)
- 場景二:消息發佈與訂閱
- 場景三:負載均衡
- 場景四:分佈式通知與協調
- 場景五:分佈式鎖
- 場景六:分佈式隊列
- 場景七:集羣監控與 Leader 競選