一.定義
etcd是乙個鍵值(key-value)儲存倉庫,相當於分布式儲存資料庫,用於共享配置和服務發現。
二.主要特點
1.簡單:基於http+json的api讓你用curl就可以輕鬆使用。
2.安全:可選ssl客戶認證機制。
3.快速:每個例項每秒支援一千次寫操作。
4.可信:使用raft演算法充分實現了分布式。
預設使用的場景:
分布式系統中的資料分為控制資料和應用資料。使用etcd的場景預設處理的資料都是控制資料,對於應用資料,只推薦資料量很小,但是更新訪問頻繁的情況。
三.在部分場景的實際運用
1.服務發現
本質上來說,服務發現就是想要了解集群中是否有程序在監聽udp或tcp埠,並且通過名字就可以查詢和連線。要解決服務發現的問題,需要有下面三大支柱,缺一不可。
(1)乙個強一致性、高可用的服務儲存目錄。基於raft演算法的etcd天生就是這樣乙個強一致性高可用的服務儲存目錄。
(2)一種註冊服務和監控服務健康狀態的機制。使用者可以在etcd中註冊服務,並且對註冊的服務設定key ttl,定時保持服務的心跳以達到監控健康狀態的效果。
(3)一種查詢和連線服務的機制。通過在etcd指定的主題下註冊的服務也能在對應的主題下查詢到。為了確保連線,我們可以在每個服務機器上都部署乙個proxy模式的etcd,這樣就可以確保能訪問etcd集群的服務都能互相連線。
2.訊息發布與訂閱
在分布式系統中,最適用的一種元件間通訊方式就是訊息發布與訂閱。即構建乙個配置共享中心,資料提供者在這個配置中心發布訊息,而訊息使用者則訂閱他們關心的主題,一旦主題有訊息發布,就會實時通知訂閱者。通過這種方式可以做到分布式系統配置的集中式管理與動態更新。
(1)**應用中用到的一些配置資訊放到etcd上進行集中管理。**這類場景的使用方式通常是這樣:應用在啟動的時候主動從etcd獲取一次配置資訊,同時,在etcd節點上註冊乙個watcher並等待,以後每次配置有更新的時候,etcd都會實時通知訂閱者,以此達到獲取最新配置資訊的目的。
(2)**分布式搜尋服務中,索引的元資訊和伺服器集群機器的節點狀態存放在etcd中,供各個客戶端訂閱使用。**使用etcd的key ttl功能可以確保機器狀態是實時更新的。
分布式日誌收集系統。這個系統的核心工作是收集分布在不同機器的日誌。收集器通常是按照應用(或主題)來分配收集任務單元,因此可以在etcd上建立乙個以應用(主題)命名的目錄p,並將這個應用(主題相關)的所有機器ip,以子目錄的形式儲存到目錄p上,然後設定乙個etcd遞迴的watcher,遞迴式的監控應用(主題)目錄下所有資訊的變動。這樣就實現了機器ip(訊息)變動的時候,能夠實時通知到收集器調整任務分配。
(3)**系統中資訊需要動態自動獲取與人工干預修改資訊請求內容的情況。**通常是暴露出介面,例如jmx介面,來獲取一些執行時的資訊。引入etcd之後,就不用自己實現一套方案了,只要將這些資訊存放到指定的etcd目錄中即可,etcd的這些目錄就可以通過http的介面在外部訪問。
3.負載均衡
在場景一中也提到了負載均衡,本文所指的負載均衡均為軟負載均衡。分布式系統中,為了保證服務的高可用以及資料的一致性,通常都會把資料和服務部署多份,以此達到對等服務,即使其中的某乙個服務失效了,也不影響使用。由此帶來的壞處是資料寫入效能下降,而好處則是資料訪問時的負載均衡。因為每個對等服務節點上都存有完整的資料,所以使用者的訪問流量就可以分流到不同的機器上。
(1)etcd本身分布式架構儲存的資訊訪問支援負載均衡。etcd集群化以後,每個etcd的核心節點都可以處理使用者的請求。所以,把資料量小但是訪問頻繁的訊息資料直接儲存到etcd中也是個不錯的選擇,如業務系統中常用的二級**表(在表中儲存**,在etcd中儲存**所代表的具體含義,業務系統呼叫查表的過程,就需要查詢表中**的含義)。
(2)利用etcd維護乙個負載均衡節點表。etcd可以監控乙個集群中多個節點的狀態,當有乙個請求發過來後,可以輪詢式的把請求**給存活著的多個狀態。
四.小結
etcd是個鍵值儲存資料庫,主要功能和特點總結如下:
(1)可對在etcd上註冊的服務進行監控健康狀態,並及時反饋
(2)確保訪問etcd的集群都能正常連線和訪問
(3)應用中用到的一些配置資訊放到etcd上進行集中管理
(4)分布式搜尋服務中,索引的元資訊和伺服器集群機器的節點狀態存放在etcd中,供各個客戶端訂閱使用。
(5)etcd的核心節點都可以處理使用者的請求。
(6)etcd監控多個節點,有請求發過來後,根據節點的情況進行分配派發。
簡單了解python變數的作用域
1.效果圖 2.作用域 是 物件生效的區域 物件能被使用的區域 全域性作用域在任意位置可生效 區域性作用域在函式內生效 c 全域性變數 def fn d 10 a定義在了函式內部,所以他的作用域就是函式內部,函式外部無法訪問 print 函式內部 c c print 函式內部 d d fn prin...
etcd 啟動分析 Etcd單機啟動與簡單操作
推薦把解壓的etcd資料夾放在 usr local bin 目錄 2,啟動單機etcd服務 nohup etcd listen client urls advertise client urls log etcd.log 2 1 listen client urls 用於指定etcd和客戶端的連線埠...
GO 操作etcd簡單示例
etcd是使用go語言開發的乙個開源的 高可用的分布式key value儲存系統,可以用於配置共享和服務的註冊和發現。注意事項 解決辦法修改依賴版本 修改依賴 go mod edit require google.golang.org grpc v1.26.0 或在go.mod裡加上 replace...