etcd作為最簡單(輕量,精簡)的kv服務。etcd可以應用很多方面,但是它有一個特點,etcd只是基礎,需要你自己實現功能。它不像其其它組件開箱即用,也正是如此,它足夠簡單精巧。
回到主題,etcd里面並沒有服務注冊發現的功能,所以要自己開發。
推薦一篇介紹文章 https://blog.csdn.net/bbwangj/article/details/82584988
etcd的服務注冊發現,主要就是用了etcd中KV存儲接TTL
基本做法:存儲Key(一般是系統唯一的)V(服務配置),存儲時要設置一個TTL周期。
然后定時刷新該Key(etcd中是一個指令,發送租約的ID)。
etcd沒有consul里面的功能,consul會主動調用服務接口查詢,檢測監控狀態。
因此在etcd則采用上面租約的方式,類似心跳上報,超時就在etcd中取消了。
最后我封裝了一個庫etcd.Provider.Service。里面采用了上面的方式
一個服務存儲
Key:/系統/Services/srvname/srvid
value:ServiceEntry實體的json序列化,包含了服務的信息
注意:srvid必須在你的服務中配置唯一,同時決定了整個key的唯一
gti地址:https://github.com/jinyuttt/etcd.Provider.Service.git
nuget:etcd.Provider.Service
最后提一句:etcd中訂閱發布是利用watch功能;負載均衡就是利用租約存儲功能;分布式通知與協調是利用watch功能;
分布式鎖是利用lock功能;隊列也是存儲和watch功能。