1. 程式人生 > >Etcd架構與實現解析

Etcd架構與實現解析

Confd
在分散式系統中,理想情況下是應用程式直接和 Etcd 這樣的服務發現/配置中心互動,通過監聽 Etcd 進行服務發現以及配置變更。但我們還有許多歷史遺留的程式,服務發現以及配置大多都是通過變更配置檔案進行的。Etcd 自己的定位是通用的kv儲存,所以並沒有像 Consul 那樣提供實現配置變更的機制和工具,而 Confd 就是用來實現這個目標的工具。
Confd 通過watch機制監聽 Etcd 的變更,然後將資料同步到自己的一個本地儲存。使用者可以通過配置定義自己關注那些key的變更,同時提供一個配置檔案模板。Confd 一旦發現數據變更就使用最新資料渲染模板生成配置檔案,如果新舊配置檔案有變化,則進行替換,同時觸發使用者提供的reload指令碼,讓應用程式重新載入配置。
Confd 相當於實現了部分 Consul 的agent以及consul-template的功能,作者是kubernetes的Kelsey Hightower,但大神貌似很忙,沒太多時間關注這個專案了,很久沒有釋出版本,我們著急用,所以fork了一份自己更新維護,主要增加了一些新的模板函式以及對metad後端的支援。