Docker 高可用配置中心Etcd
一:簡介
Etcd是一個開源的分散式的鍵值儲存庫,用於配置共享和服務發現。通常以叢集的形式進行部署,各工作節點會選出一個leader節點主導工作。通常用於儲存資料庫的連線配置,快取配置,通用配置資訊等。
Etcd的特點有:
1. 簡單:基於HTTP+JSON的API,用curl命令就可以輕鬆使用
2. 安全: 可選SSL客戶認證機制
3. 快速:每個例項每秒支援一千次寫操作
4. 可信:使用Raft演算法充分實現了分散式
Etcd主要解決的是分散式系統中資料一致性的問題,而分散式系統中的資料分為控制資料和應用資料。Etcd處理的資料預設為控制資料,對於應用資料,它只推薦處理資料量很小但訪問頻繁的情況。
二:Etcd使用場景
1. 服務發現
在同一個分散式叢集中的程式或服務,互相感知並建立連線,這就是服務發現。從本質上說服務發現就是要了解叢集中是否有程式在監聽UDP或TCP埠,並透過對應的字串資訊進行查詢和連線。 解決服務發現的問題,需要以下幾個方面:
a.一個強一致性,高可用的服務儲存目錄
b.一種註冊服務和監控服務健康狀態的機制
c.一種查詢和連線服務的機制
1.訊息釋出與訂閱
在分散式系統中,最適合的元件間通訊方式是訊息釋出和訂閱機制。具體而言,即構建一個配置共享中心,資料提供者在這個配置中心釋出訊息,而訊息使用者則訂閱他們相關的主題,一旦相關主題有訊息釋出,就會實時通知訂閱者。透過這種方式可以實現分散式系統配置的集中式管理和實時動態更新。
2.負載均衡
3.分散式通知與協調
使用etcd中的Watcher機制,透過註冊與非同步通知機制,實現分散式環境下不同系統之間的通知與協調,從而對資料變更進行實時處理。
a. 透過etcd進行低耦合的心跳檢測
檢測系統和被檢測系統透過etcd上某個目錄關聯而非直接關聯起來,這樣可以大大減少系統的耦合性。
b.透過etcd完成系統排程
管理人員在控制檯做一些操作,實際上只需要修改etcd上某些目錄節點的狀態,etcd就會自動把這些變化通知給註冊了Watcher的推送系統客戶端,推送系統再做出相應的推送任務。
c.透過etcd完成工作彙報
大部分類似的任務分發系統會在子任務七朵花,到etcd來註冊一個臨時工作目錄,並且定時將自己的進度進行彙報(即將進度寫入到這個臨時目錄),這樣任務管理者就能夠實時知道任務進度。
4.分散式鎖與競選
a.保持獨佔鎖
b.控制時序鎖
使用分散式鎖可以完成Leader競選,對於一些長時間的CPU計算或者使用I/O操作,只需要競選出的Leader計算或處理一次,再把結果複製給其他Follower即可,從而避免重複勞動,節省計算資源。
5.分散式佇列
6.叢集監控
三:Etcd架構
Etcd中涉及的術語有:
1. Raft:etcd所採用的保證分散式系統強一致性的演算法
2. Node:一個Raft狀態機例項
3. Member:一個etcd例項,管理著一個Node,可以為客戶端請求提供服務
4. Cluster:由多個Member構成的可以協同工作的etcd叢集
5. Peer:對同一個etcd叢集中另外一個Member的稱呼
6. Client: 向etcd叢集傳送HTTP請求的客戶端
7. WAL:預寫式日誌,是etcd用於持久化儲存的日誌格式
8. Snapshot : etcd防止WAL檔案過多而設定的快照,儲存etcd資料狀態
9. Proxy:etcd的一種模式,為etcd叢集提供反向代理服務
10.Leader: Raft演算法中透過競選而產生的處理所有資料提交的節點
11.Follower:競選失敗的節點作為Raft中的從屬節點,為演算法提供強一致性保證
12.Candidate:Follower超過一定時間接收不到Leader的心跳時,轉變為Candidate開始Leader競選
13.Term:某個節點成為Leader到下一次競選開始的時間週期,成為一個Term
14. Index:資料項編號,Raft中透過Term和Index來定位資料。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2146516/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- pg14+etcd+Patroni 高可用配置流程
- 附018.K3S-ETCD高可用部署
- MMM高可用配置
- 整合spring cloud雲架構 -高可用的分散式配置中心SpringCloud架構分散式
- Spring Cloud(八)高可用的分散式配置中心 Spring Cloud ConfigSpringCloud分散式
- Docker 搭建 Nacos 配置中心Docker
- Docker部署Apollo配置中心Docker
- NFS-Ganasha 高可用配置NFS
- Spring Cloud(九)高可用的分散式配置中心 Spring Cloud Config 整合 Eureka 服務SpringCloud分散式
- Linux 高可用仲裁裝置配置Linux
- HDFS High Availability(HA)高可用配置AI
- ES資料庫高可用配置資料庫
- 【SpringCloud】微服務Eureka高可用配置SpringGCCloud微服務
- 如何設定一個生產級別的高可用etcd叢集
- Spring Cloud 系列(二)Eureka 高可用註冊中心SpringCloud
- (五)spring cloud微服務分散式雲架構-配置中心服務化和高可用SpringCloud微服務分散式架構
- 安裝配置ETCD
- MHA高可用配置及故障切換
- opengauss高可用之keepalived配置 原創
- Hadoop框架:HDFS高可用環境配置Hadoop框架
- 7. Nginx實現高可用配置Nginx
- SpringCloud實踐(三) 高可用的Eureka註冊中心SpringGCCloud
- nginx內建高可用配置與第三方高可用模組nginx_ustream_check_mudule配置Nginx
- 高可用Flink on YARN叢集快速配置Yarn
- Kafka高可用叢集部署與配置指南Kafka
- SpringCloud分散式微服務雲架構 第七篇: 高可用的分散式配置中心(Config)SpringGCCloud分散式微服務架構
- 高可用服務之Keepalived郵件通知配置
- Redis操作及叢集搭建以及高可用配置Redis
- Kubernetes安裝之一:HA-高可用配置
- Etcd叢集靜態配置
- 【DB寶19】在Docker中使用MySQL高可用之MHADockerMySql
- 業餘草 SpringCloud教程 | 第七篇: 高可用的分散式配置中心(Spring Cloud Config)(Finchley版本)SpringGCCloud分散式
- 在Linux中,如何進行高可用性配置?Linux
- MHA+MySQL主從配置實現MySQL高可用MySql
- PostgreSQL repmgr高可用叢集+keepalived高可用SQL
- centos7 安裝k8s1.30.1高可用叢集(非獨立etcd叢集)CentOSK8S
- 螞蟻集團萬級規模 K8s 叢集 etcd 高可用建設之路K8S
- 資料中心基礎設施高可用提升研究與實踐
- Spring Cloud Eureka 實現高可用服務發現註冊中心SpringCloud