ETCD介紹 (一)


什么是ETCD?

etcd是一個Go言編寫的分布式、高可用的一致性鍵值存儲系統,用於提供可靠的分布式鍵值存儲、配置共享和服務發現等功能。

特點

  • 簡單
    易使用:基於HTTP+JSON的API讓你用curl就可以輕松使用
    易部署:使用Go語言編寫,跨平台,部署和維護簡單

  • 可靠:
    強一致:使用Raft算法充分保證了分布式系統數據的強一致性
    高可用:具有容錯能力,假設集群有n個節點,當有(n-1)/2節點發送故障,依然能提供服務
    持久化:數據更新后,會通過WAL格式數據持久化到磁盤,支持Snapshot快照
    快速:每個實例每秒支持一千次寫操作,極限寫性能可達10K QPS
    安全:可選SSL客戶認證機制


ETCD簡單使用

# 安裝命令
 sudo apt install etcd
 
# 查看版本
etcd --version

# 測試安裝是否成功
curl http://127.0.0.1:2379/version

# 增 / 改
 curl http://127.0.0.1:2379/v2/keys/message -XPUT -d value="Hello world"
 etcdctl put message "Hello world"

# 刪除
 curl http://127.0.0.1:2379/v2/keys/message -XDELETE
 etcdctl del message

# 查
 curl http://127.0.0.1:2379/v2/keys/message
 etcdctl get message
 
# 存儲有過期時間的key
 curl http://127.0.0.1:2379/v2/keys/foo -XPUT -d value=bar -d ttl=5
 
# watch
 etcdctl watch key

服務架構


基本概念

  • HTTP Server
    • 用於處理用戶發送的API請求以及其他etcd節點的同步與心跳信息的請求。
  • Store
    • 用於處理etcd支持的各類功能的事務,包括數據索引,節點狀態的變更,監控與反饋,事件處理與執行等,是etcd對用戶提供的大多數API功能的具體實現。
  • Raft
    • Raft分布式強一致性算法的具體實現,是etcd的核心。
  • WAL
    • Write Ahead Log(預寫式日志)是etcd的數據存儲方式,WAL中所有數據提交前都會事先記錄日志,這種技術在mysql中也有用到(binlog)。除了在內存中存有所有數據的狀態及節點的索引以外,etcd就通過WAL進行持久化存儲。
  • Snapshot
    • 是為了防止數據過多而進行的狀態快照
  • Entry
    • 表示存儲的具體日志內容。

RPC簡介

  • ETCD中節點間通信,以及事務處理都是通過RPC機制,RPC(Remote Procedure Call)是遠程過程調用,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。

  • RPC采用客戶機/服務器模式。請求程序就是一個客戶機,而服務提供程序就是一個服務器。首先,客戶機調用進程發送一個有進程參數的調用信息到服務進程,然后等待應答信息。


核心算法 Raft

通常來說,在分布式環境下,可以通過兩種手段達成一致:

  • Symmetric, leader-less :所有Server都是對等的,Client可以和任意Server進行交互
  • Asymmetric, leader-based:任意時刻,有且僅有1台Server擁有決策權,Client僅和該Leader交互

經典應用場景

1. 服務注冊與發現(Service Discovery)
2. 配置中心
3. 負載均衡
4. 分布式鎖
5. 分布式隊列
6. 分布式通知與協調
7. 消息發布和訂閱


發展現狀

Raft算法雖然誕生不久,但是在業界已經引起廣泛關注,強烈推薦大家瀏覽其官網http://raftconsensus.github.io,上面有豐富的學習資料,目前Raft算法的開源實現已經涵蓋幾乎所有主流語言(C/C++/Java/Python/Javascript …),其流行程度可見一斑。由此可見,一項技術能否在工業界大行其道,有時“可理解性”、“可實現性”才是至關重要的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM