winserver的consul部署 北京_賽車采集修復 實踐與.net core客戶端使用
北京_賽車采集修復
地址一:【hubawl.com】狐霸源碼論壇
地址二:【bbscherry.com】
Consul
Consul是一款簡單、易用、可伸縮性強的服務治理系統。
主要核心功能有:
服務發現
健康檢查
鍵值存儲
多數據中心
consul代理會每個一段時間對註冊中心的服務節點進行訪問,如果響應碼為“20X"認為是健康。
鍵值存儲可以認為是一個簡易的k/v數據庫,因此可以用此來存放配置信息。
服務發現
服務發現分服務註冊和服務查找。
服務註冊
將服務節點信息(地址+端口)添加(刪除)到註冊表,註冊表會記錄著服務的節點信息和狀態
服務查找
由其他的服務或者系統通過註冊表查詢到指定可用服務的節點信息。
服務發現的方式
服務發現的方式又分自主式和代理式。
自主式
由各個服務主動的將自己節點信息添加(刪除)到註冊中心。實現是通過統一封裝或者程序庫,由服務各個節點承擔服務發現的功能,與代理式相比由各自節點分擔的訪問壓力。
640?wx_fmt=png
代理式
由一個系統(負載均衡系統)或者服務(API網關)來完成服務發現。因為由一個系統或者服務完成,隨著註冊服務的增加會帶來性能瓶頸,因此需要對此做集群。
640?wx_fmt=png
Consul模式
Consul有兩種模式,Client和Server,無論各種模式都有一個consul agent。
Client模式
Client模式是一個輕量級的consul agent,只擁有註冊服務、健康檢查、轉發查詢等功能。
Server模式
Server模式與Client模式相比,除了擁有Client模式的功能還多出了數據存儲,leader選舉等。
官方建議Server模式應保證3-5個,而且應該是奇數,為什麽呢,因為少於3個無法保證高可用,多於5個又會給數據庫同步的一致性帶來壓力,而Client數量控制則沒有講究。
640?wx_fmt=png
集群部署
在服務器A,打開cmd,
consul agent -server -bootstrap-expect=1 -bind=192.168.20.80 -client=192.168.20.80 -join=192.168.20.80 -datacenter=dc1 -data-dir=data -ui -node=consul-80
在服務器B,打開cmd,
consul agent -server -bind=192.168.20.81 -client=192.168.20.81 -join=192.168.20.80 -data-dir=data -node=consul-81
640?wx_fmt=png
指令簡析
-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管理後臺
客戶端實踐
安裝Consul
640?wx_fmt=png
封裝擴展
只貼部分核心代碼,具體可以查看demo源碼。
註入ConsulClient
640?wx_fmt=png
把當前服務註冊到Consul
640?wx_fmt=png
添加健康檢查接口
與上述封裝可以在同一個庫,避免每個web服務都要寫一個
640?wx_fmt=png
在Startup.cs對Consul封裝進行調用
ConfigureServices
640?wx_fmt=png
Configure
640?wx_fmt=png
K/V擴展
只實現了put、get、delete,剩下可以自行按需添加
640?wx_fmt=png
部署啟動
修改appsettings.json,填寫目標consul地址和本服務地址
640?wx_fmt=png
啟動後,如果服務正常則可以顯示下圖效果。
640?wx_fmt=png
winserver的consul部署 北京_賽車采集修復 實踐與.net core客戶端使用