這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
昨天在討論平台新架構的時候,還在說要搞個組態管理的服務出來,方便介面的管理。然後今天就看到了這個……人品爆發了嗎?
好吧,不扯淡,直接翻譯 Doozer 的 README 吧。Doozer 我還沒實測,不過感覺,如果真得像 README 上面說得那樣,還是很有用,很有用的。
關鍵——這個玩意提供了 go 的介面。(補充一點,忘了說了,這個是用 go 開發的)
項目代碼託管於此:Doozer。
———————-翻譯分割線———————-
Doozer
這是什嗎?
Doozer 是高可用的,完整一致性的用於小量、極端重要的資料的儲存。當資料變化時,它立刻通知接入的用戶端(不緩衝),對於那些很少更新,但是希望更新發生時即時性高的用戶端來說是非常理想的。Doozer 對於名字服務、主要資料庫選取和多個裝置之間的配置資料同步很適合。瞭解什麼時候應該使用它?下面,有詳細的資訊。
通過郵件清單同其他使用者和開發人員討論 doozer。
快速開始
- 下載 doozerd
- 解壓縮
- 啟動 doozerd
$ doozerd
- 設定一個鍵,然後再讀出來
$ echo "hello, world" | doozer set /message 0 $ doozer get /message 11046 13 hello, world
- 5. 訪問 http://localhost:8080 查看訊息
它是如何工作的?
Doozer 是一個網路服務。一票機器(通常是三、五或七個)每個都運行一個 doozer 服務進程。這些進程使用標準的全一致性分布式完整性演算法進行通訊。用戶端接入一個或多個 doozer 伺服器,發出命令,如 GET、SET 和 WATCH,並且接收響應。
(在這裡插入一個網路結構圖)
每個 doozerd 進程完整的複製一份資料存放區,並且提供讀寫請求;沒有“master”或“leader”的區別。Doozer 被設計為儲存能存放於記憶體的資料;它永遠都不會將資料寫入持久化檔案。一個獨立的工具提供了用於備份和恢複的持久化儲存。
什麼時候應當使用它?
這裡有一些情景:
- 名字服務
有若干機器提供 HTTP 要求的服務。當發生硬體故障,這些機器中的一個壞掉了,你將其替換為另一個網路地址上的新的機器。而由於原有的 DNS 記錄的 TTL 使得用戶端會緩衝一段時間,DNS 資料的更新到達用戶端,可能需要一段時間。
代替 DNS,可以使用 Doozer。用戶端可以訂閱它們感興趣的名字,然後在這些名字的地址變化時,用戶端會收到通知。
- 主要資料庫選取
部署了 MySQL 系統。為了使其具有高可用性,在另一台物理獨立的機器上增加了一個從伺服器。當主伺服器異常時,可以將某台從伺服器變為主伺服器。在任何時間,用戶端需要知道哪個伺服器是主伺服器,而發生問題的時候,從伺服器之間也需要協調。
可以使用 doozer 儲存當前主伺服器的地址,以及在發生異常時協調所需要的任何資訊。
- 配置
在多個不同的機器上有一些進程,並且期望它們使用相同的設定檔,這些檔案會不定期更新。所有進程使用相同的配置非常重要。
將設定檔儲存在 doozer 中,然後讓進程從 doozer 中讀取配置。
我能為這個項目做些什嗎?
參閱協議說明查看命令列表
類似的項目
Doozer 同下面的軟體類似:
* Apache Zookeeper http://zookeeper.apache.org/
* Google Chubby http://labs.google.com/papers/chubby.html
Hacking on Doozer
* hacking on doozer
* 郵件清單
許可證和作者
Doozer 發佈於 MIT 許可證。參閱 LICENSE 瞭解更多資訊。
Doozer 由 Blake Mizerany 和 Keith Rarick 建立。輸入
git shortlog -s
得到完整的貢獻者名單。