之前寫過一篇關於集羣 Consul 負載均衡https://blog.csdn.net/qq_38559484/article/details/104041267的文章
裏面的記錄現在看來是沒有寫全,所有現在在補充一份(重新寫了一次)也是爲了讓自己加深印象
新加了輪詢,權重 均衡策略,網關gataway 緩存 熔斷 限流
環境 win10,開發工具 VS2019
能夠完成 consul示例 要感謝朝夕教育的Eleven 老師,看他的視頻寫的
流程圖
流程圖應該沒畫錯,中間包括了服務的註冊與發現,服務的健康檢查,
代碼我就沒分開
服務端很簡單,webapi走起
ConsulHelper,服務的註冊,裏面設置了一些屬性 主要是服務的健康檢查 ,服務註冊到consul,每隔一段時間就去調用一下服務 這樣就是健康檢查,若是超過多少時間沒有響應,將在consul裏刪除服務。
若是這個服務地址A之前註冊到consul裏,後來出現異常,從consul裏刪除,在重新啓用該服務地址A,那麼consul裏也會重新添加該服務地址A
▶在consul集羣之前,單服務實例的時候,客戶端直接調用服務地址
▶在consul集羣后,只需要找到對應的consul地址,根據負載均衡策略調用服務地址
▶在用網關後 只需要配置好網關對應的consul地址,就等於訪問consul一樣
在沒有網關之前,客戶端需要訪問consul裏的服務,需要寫上一大堆代碼來發現和調用consul裏的服務
有了網關之前,這些操作都可以刪除,
調用網關,最重要的就是配置網關的配置文件 configuration.json
限流和熔斷暫時沒試。
幾條命令:
1 啓動 consul
consul agent -dev
2 啓用服務
dotnet SK.MicServices.Servicesinstance.dll --urls="http://*:4557" --ip="127.0.0.1" --port=4557 --weight=1
dotnet SK.MicServices.Servicesinstance.dll --urls="http://*:4558" --ip="127.0.0.1" --port=4558 --weight=3
dotnet SK.MicServices.Servicesinstance.dll --urls="http://*:4559" --ip="127.0.0.1" --port=4559 --weight=6
port 是端口,weight 是權重 若是輪詢或者平均分配 則可以不用weight
3最後是啓動 網關
dotnet SK.MicServices.GatewayDemo.dll --urls="http://*:9527" --ip="127.0.0.1" --port=9527
這裏注意,之前我想把端口設置爲 666 或者888這樣的 結果訪問不了 換個端口就可以了
結果圖:
調用網關結果:這裏做了緩存,在不同的時間刷新的,可以看到調用同一個網關地址,返回不同的服務端口