先思考一些問題:它是做什麼的、以及怎麼使用它。帶着這些問題往下走。
consul是做什麼的
consul用于微服務下的服務治理。服務治理是什麼?它包含但不限于:服務發現、服務配置、健康檢查、鍵值存儲、安全服務通信、多資料中心等。
為什麼需要服務治理?舉個例子:最開始的服務比較簡單,各服務之間通過API就能通路。後面業務複雜了,服務也跟着複雜了,搞分布式了,而分布式又必然是多伺服器部署,這就有一個問題:如果服務之間還是用API通路,那某個服務所在的伺服器挂掉以後這個服務就不能用了,也不能自動轉移,那麼隻能人肉運維了。這時候大家在想:如果下遊調用上遊,隻需要一個統一的位址,不用關注負載均衡、節點失效之類的問題,也不用關注可用性,這些都有一個中間件來完成,那該有多好。這個中間件要做的事情,就是服務治理,也就是本文的consul,它就是解決這個事的。但其實也不是隻有它能做這個事,zooKeeper、etcd也能做這個事,也沒有什麼高下之分,用什麼主要看自己,看公司。對自己來說,哪個摸得透、玩的熟就用哪個。對公司來說,哪個市場認可度高就用哪個,說白了就是哪個用的人多。用的人多會的人就多,招人換人速度就快了,網際網路企業追求的不就是速度麼?“時間就是金錢,效率就是生命”,這句話早期在深圳随處可見,至今仍然适用。
題外話有點多,接着往下走。
怎麼使用consul
這裡隻講docker内的consul。首先下載下傳一個鏡像:
然後運作起來:
成功運作後能看到如下頁面:
tips:consul的預設端口是8500,docker啟動可以映射到任意端口。
服務注冊
服務發現的概念,簡單來說就是所有節點程式啟動時都去consul注冊一下,注冊後的資訊統一儲存在consul中以供調用。是不是很簡單?
現在net core 3.1下完成consul服務注冊。
首先需要添加nuget包:
然後自行封裝一個注冊服務,節省時間先上源碼:
配置檔案:
最後,這個服務需要在程式啟動的時候調用,隻一次就好。直接把調用放在startup裡就好,這樣程式啟動的時候就會自動注冊一個服務。
為了能夠動态修改配置檔案,接下來通過控制台啟動程式:
啟動成功以後,轉到consul的ui看一下:
能看到多了一個分組【shenzhen-ma】,點進去看下我們的服務:
127.0.0.1:5000,沒毛病。這時候模拟一下多節點,再多啟動兩個程式試試看:
5001,5002也自動注冊進入了這個分組。
因為時間關系,今天隻能寫到這裡了,還有很多東西沒有寫,服務調用、健康檢查什麼的,我會盡快再發文的。