随着微服務興起,服務的管理顯得極其重要。都知道微服務就是”拆“,把臃腫的單塊應用,拆分成多個輕量級的服務,每個服務可以在短周期内重構、疊代、傳遞。随着微服務的數量增多,因量變引起了品質,帶來新的問題其中一個是服務的管理問題。随着業務發展微服務增多,可能技術負責人也無法清楚記着服務的部署情況,服務的健康也不能時刻關注着,是以服務治理系統的作用必不可少。
本篇文章的源碼:
demo:https://github.com/SkyChenSky/Consul.Demo
封裝:https://github.com/SkyChenSky/Sikiro.Tookits.Consul
Consul是一款簡單、易用、可伸縮性強的服務治理系統。
主要核心功能有:
服務發現
健康檢查
鍵值存儲
多資料中心
consul代理會每個一段時間對注冊中心的服務節點進行通路,如果響應碼為“20X"認為是健康。
鍵值存儲可以認為是一個簡易的k/v資料庫,是以可以用此來存放配置資訊。
服務發現分服務注冊和服務查找。
将服務節點資訊(位址+端口)添加(删除)到系統資料庫,系統資料庫會記錄着服務的節點資訊和狀态
由其他的服務或者系統通過系統資料庫查詢到指定可用服務的節點資訊。
服務發現的方式又分自主式和代理式。
由各個服務主動的将自己節點資訊添加(删除)到注冊中心。實作是通過統一封裝或者程式庫,由服務各個節點承擔服務發現的功能,與代理式相比由各自節點分擔的通路壓力。
由一個系統(負載均衡系統)或者服務(API網關)來完成服務發現。因為由一個系統或者服務完成,随着注冊服務的增加會帶來性能瓶頸,是以需要對此做叢集。
Consul有兩種模式,Client和Server,無論各種模式都有一個consul agent。
Client模式是一個輕量級的consul agent,隻擁有注冊服務、健康檢查、轉發查詢等功能。
Server模式與Client模式相比,除了擁有Client模式的功能還多出了資料存儲,leader選舉等。
官方建議Server模式應保證3-5個,而且應該是奇數,為什麼呢,因為少于3個無法保證高可用,多于5個又會給資料庫同步的一緻性帶來壓力,而Client數量控制則沒有講究。
下載下傳consul https://www.consul.io/downloads.html
在伺服器A,打開cmd,
在伺服器B,打開cmd,
打開浏覽器輸入http://192.168.20.80:8500
-server
consul以server模式啟動,不填則預設以client模式
-bootstrap-expect=1
叢集節點數,當叢集節點數達到聲明數量才會進行資料同步
-bind=192.168.20.80
目前consul服務綁定位址
-client=192.168.20.80
http接口綁定位址,用戶端調用需要
-join=192.168.20.80
啟動服務時加入目标叢集
-node=consul-81
服務節點名稱
-ui
啟動web管理背景
隻貼部分核心代碼,具體可以檢視demo源碼。
把目前服務注冊到Consul
與上述封裝可以在同一個庫,避免每個web服務都要寫一個
隻實作了put、get、delete,剩下可以自行按需添加
修改appsettings.json,填寫目标consul位址和本服務位址
啟動後,如果服務正常則可以顯示下圖效果。
作 者:
陳珙
出 處:http://www.cnblogs.com/skychen1218/
關于作者:專注于微軟平台的項目開發。如有問題或建議,請多多賜教!
版權聲明:本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連結。
聲援部落客:如果您覺得文章對您有幫助,可以點選文章右下角推薦一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!