etcd是一個類似於zk的工具,用於保存值,節點-值這種映射關系的。節點組織結構類似unix文件系統結構,從/最開始。比如一個/test/name節點,值為guanxianseng。可以通過etcdctl這個客戶端,執行命令
etcdctl set /test/name guanxianseng
也可以通過客戶端命令,獲取我們設置的值
etcdctl get /test/name
當然這里返回的值就是
guanxianseng
我們之前設置的
這里etcd與zk還是有區別的。首先,zk使用的是ZAB協議,是雅虎在POXOS協議上修改的。etcd用的是raft協議,也是PAXOS協議的精簡版。通過選擇leader,客戶端將request提交給集群,集群把request打到leader。leader將request發給集群中其余節點,進行詢問、提交等動作,保證一致性。
當然,etcd和zk還有其他一些區別。以后,想看的時候在去找找
1. 安裝etcd
1.1 如果是centos可以通過
yum install etcd
進行安裝
如果是ubuntu,可以通過
apt-get install etcd
這里ubuntu我是猜的,centos我在vmware里面試過可以的。這里可能需要用到root權限。個人比較喜歡root權限,方便
這里,我想吐槽一下ubuntu,經常跳什么出現內部錯誤。很煩人,centos感覺穩定很多,突然覺得ubuntu很low
1.2 通過官網
https://github.com/coreos/etcd/releases/
下載對應的版本,解壓,執行etcd和etcdctl就可以了
1.3 驗證安裝成功
啟動etcd
etcd
執行客戶端命令
etcdctl -verison
客戶端輸出對應的版本號
etcdctl version: 3.1.7 API version: 2
OK,安裝成功。其實,就是一解壓過程
2. 客戶端使用
2.1 可以通過etcdctl在bash里面執行對應的客戶端命令。如前面所說的,etcdctl set name guanxianseng ,get命令等
2.2 使用java客戶端操作
etcd java客戶端有很多,比如etcd4j
https://github.com/adohe/etcd4j
jetcd
https://github.com/diwakergupta/jetcd
我這里使用的是etcd4j
maven依賴
<dependency> <groupId>com.xqbase</groupId> <artifactId>etcd4j</artifactId> <version>1.2</version> </dependency>
...
照着etcd4j的說明文檔來就是了
3. etcd集群
現在,服務器為了高可用,都會搭建集群,防止單點故障。這里etcd也可以搭建集群,不過單機搭建偽集群好像不好弄。經常提示端口已被占用,沒有那么多機器。以后用到了在說吧。