etcd註冊服務

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功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章