日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Consul初探-集成ocelot

發布時間:2023/12/4 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Consul初探-集成ocelot 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

由于 Consul 的高可用性、豐富的API、友好的 Web 控制臺界面等特點,Consul 的發展非常迅猛,得益于 .NETCore 社區的快速發展和社區成員的貢獻,我們現在可以非常方便快速的將 Consul 集成到 .NETCore 中,在 Ocelot 的集成方面也是非常的便捷,在 API Gateway 項目中,只需要通過引用一個包,就可以在項目中服務發現了。

今天要完成的架構圖

上面就是今天要完成的業務架構圖,客戶端、Ocelot 網關、Consul 集群、計算器服務集群,這幾個模塊組成了基本的分布式網關模型。

建立 APIGateway 項目

建立空項目

首先我們建立一個空的 Asp.NetCore WebApplication 程序,對于一個簡單的網關程序來說,空項目足夠了,因為我們寫代碼的地方不多

Ocelot 的包引用

我們只需要引用 Ocelot.Provider.Consul ,即可完成 ocelot 和 consul 的依賴引用

配置網關

首先,我們需要為 ocelot 網關編寫一個配置文件,ocelot 的配置功能非常豐富,具體參考:https://ocelot.readthedocs.io/en/latest/,本次我們只編寫一個最簡單的 ocelot.json 文件,該配置文件決定了客戶端的請求該如何轉發到從 Consul 發現到真正的服務實例中。

{ "ReRoutes": [ { "UseServiceDiscovery": true, // 使用服務發現 "DownstreamPathTemplate": "/{url}", // 轉發路由規則 "DownstreamScheme": "http", // 協議 "ServiceName": "node-1", // 服務名稱 "LoadBalancerOptions": { // 負載均衡的算法(這里使用平均) "Type": "RoundRobin" }, "UpstreamPathTemplate": "/{url}", // 下游請求路由 "UpstreamHttpMethod": [ "Get", "Post" ], // 支持請求方法 "ReRoutesCaseSensitive": false // 路由大小寫敏感設置 } ], "GlobalConfiguration": { // 網關全局配置 "RequestKey": "OcRequestId", "ServiceDiscoveryProvider": { // 服務發現的配置 "Host": "172.16.1.218", "Port": 8500, "ConfigurationKey": "node-1" } } }

上面就是 ocelot 網關的配置,接下來,還需要在 Startup.cs 類中進行簡單的配置。

進行服務注入
  • public void ConfigureServices(IServiceCollection services)

  • {

  • var ocelotConfig = new ConfigurationBuilder().AddJsonFile("ocelot.json", false, true).Build();

  • services.AddOcelot(ocelotConfig)

  • .AddConsul()

  • .AddConfigStoredInConsul();

  • }

  • 首先加載 ocelot.json 文件,然后將配置注入到服務中

    設置路由轉發
  • public void Configure(IApplicationBuilder app, IHostingEnvironment env)

  • {

  • app.UseHttpsRedirection()

  • .UseOcelot()

  • .Wait();

  • }

  • 通過上面的代碼,將 ocelot 注入請求管道中,到這里,配置的工作就已經完成了

    創建一個計算器服務

    為了演示網關轉發和服務發現,我們需要構建一個簡單的計算器服務,我準備使用該計算器服務運行兩個實例,兩個實例運行于同一臺服務器上,分別偵聽 12008/12009 端口,在服務啟動后,該計算器服務將會自動的把自己注冊到 Consul 代理服務器集群中,然后 APIGateway 網關從 Consul 發現 12008/12009 服務,并使用負載均衡的機制對兩個服務進行調用。

    為了方便演示,這里的計算器服務就使用上一篇的代碼進行測試了

    運行計算器服務(12008/12009)

    我們需要啟動兩個服務實例,然后注冊到 Consul 中,啟動服務

    查看 Consul 代理服務器集群的狀態

    服務注冊正常

    啟動 ocelot 網關

    訪問 Ocelot 網關

    計算器服務(12008/12009) 服務實例提供的路由地址為:/home/add/{x:int}/{y:int} ,ocelot 網關的偵聽地址為:http://172.16.10.227:12200 ,根據路由轉發規則,ocelot 網關會把客戶端的請求完整的轉發到 12008/12009 服務實例上,所以我們可以通過下面的 url 請求服務,即:ocelot網關+12008/12009 路由,組合起來就是:http://172.16.10.227:12200/home/add/{x:int}/{y:int},那么真正的請求 url 為:http://172.16.10.227:12200/home/add/10/10,預期輸出結果為:30

    通過上面的輸出,可以看到,從網關到真正的服務實例,這個環節已經打通了,通過不斷的刷新網頁請求,下方的兩個服務實例總是一前一后的持續輸出日志,這就足以證明我們在 ocelot 服務網關配置的負載均衡算法 "Type": "RoundRobin" 發揮了作用。

    ocelot 配置文件管理

    通過查看 Consul Web 控制臺的界面的 Key/Value 菜單,發現 ocelot 將配置文件 ocelot.json 存儲到 Consul 中了,我們可以在 Consul 中對網關進行可視化管理,修改保存即可。

    結束語

    從實驗結果看,在 .NETCore 中集成 APIGateway 和 Consul 還是比較簡單的事情,當然,大部分的項目在項目開放進程中,大概率是不會一次性使用到這么多組件的,不過我相信,隨著架構的演進,這些項目最終也不得不考慮服務注冊、發現、調度、負載均衡等這些問題,引入網關,就勢在必行了。

    .NETCore 集成 Consul 導讀

    • 1、Consul初探-在深交之前先認識

    • 2、Consul初探-從安裝到運行

    • 3、Consul初探-服務注冊和發現

    • 4、Consul初探-集成ocelot

    源代碼下載

    本文所有源代碼已托管到 Github ,歡迎下載測試 https://github.com/lianggx/Examples/tree/master/Ron.Consul ,如果覺得還行,請點擊 star ,謝謝支持。


    總結

    以上是生活随笔為你收集整理的Consul初探-集成ocelot的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。