欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.Net?Core微服務(wù)網(wǎng)關(guān)Ocelot集成Consul

 更新時間:2022年01月06日 11:33:56   作者:老馬-Max  
這篇文章介紹了.Net?Core微服務(wù)網(wǎng)關(guān)Ocelot集成Consul的方法,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧

有consul基礎(chǔ)的都知道,consul可以發(fā)現(xiàn)新增的服務(wù),剔除掉無效的服務(wù),賦予應(yīng)用自動伸縮的能力。而ocelot如果集成了consul,那ocelot也能擁有這些能力,還可以自主選擇負載均衡策略,靈活性更強。

(建議看完前一篇文章再來實踐這一篇,不然可能有難度)

上干貨。

首先打開上一篇新建好的項目,繼續(xù)添加nuget包:

然后注冊相關(guān)服務(wù):

public void ConfigureServices(IServiceCollection services)
        {
            services.AddOcelot()
                .AddConsul()
                .AddConfigStoredInConsul();
        }

接下來還需要修改下配置文件:

{
  "Routes": [
    {
      "DownstreamPathTemplate": "/{url}",
      "DownstreamScheme": "http",
      //"DownstreamHostAndPorts": [
      //  {
      //    "Host": "123.123.123.123",
      //    "Port": 5050
      //  }
      //],
      "UpstreamPathTemplate": "/MJ/{url}",
      "UpstreamHttpMethod": [ "Get", "Post" ],
      "ServiceName": "study_consul",
      "LoadBalancerOptions": {
        "Type": "RoundRobin"
      }
    }
  ],
  "GlobalConfiguration": {
    "ServiceDiscoveryProvider": {
      "Host": "42.193.182.64",
      "Port": 88
    }
  }
}

注釋部分是原先常規(guī)的轉(zhuǎn)發(fā)規(guī)則,變色部分是集成consul以后新增的配置。

這里說下配置項LoadBalancerOptions(負載均衡),官方實現(xiàn)了4個負載均衡器,分別是:

  • 1、LeastConnection - 跟蹤哪些服務(wù)正在處理請求,并向現(xiàn)有請求最少的服務(wù)發(fā)送新請求。
  • 2、RoundRobin - 輪詢。
  • 3、NoLoadBalancer - 從配置或服務(wù)發(fā)現(xiàn)中獲取第一個可用服務(wù)。
  • 4、CookieStickySessions - 使用 cookie 將所有請求粘貼到特定服務(wù)器。

如果選擇了第四個,那么需要額外的參數(shù)來描述cookie,比如:

"LoadBalancerOptions": {
        "Type": "CookieStickySessions",
        "Key": "ASP.NET_SessionId",
        "Expiry": 1800000 //過期時間
    },

關(guān)于負載均衡器,本文不多做詳解,回到主題。

consul需要單獨搭建,所以我準備了一個擁有6個節(jié)點的consul集群:

然后在集群下注冊了3個服務(wù):

這時運行網(wǎng)關(guān)并請求,網(wǎng)關(guān)會把請求自動轉(zhuǎn)到遠程的consul,并且在已有的consul服務(wù)中輪詢調(diào)用。來看一下運行結(jié)果:

多刷新幾下:

如果你得到了類似的結(jié)果,恭喜你,已經(jīng)完成了集成的操作。同時,還可以解鎖一個新操作:熱更新。

熱更新

打開consul控制面板,找到Key/Value,你會發(fā)現(xiàn)這里多了一個鍵值對:

進入查看會發(fā)現(xiàn),這是ocelot的配置:

這一份配置文件里包含了當前版本的ocelot支持的所有配置項,并且修改后即時生效。

改個路由證明下:

原來:"UpstreamPathTemplate": "/MJ/{url}"
現(xiàn)在:"UpstreamPathTemplate": "/{url}"

save以后再請求:

這感覺,酸爽。

既然是搞技術(shù),自然不能脫離實際。上面的consul集群、consul客戶端、網(wǎng)關(guān)程序都部署在不同的阿里云服務(wù)器上,和生產(chǎn)環(huán)境一樣。學(xué)習的話,部署到本機也可以,consul單機也可以。如果你沒有consul基礎(chǔ)或者理解的不清晰,可以看我之前的系列文章,應(yīng)該有幫助,往前翻一翻就有。友情提醒一下,單體的ocelot、consul禁止上生產(chǎn),太脆弱,一掛全完。

到此這篇關(guān)于.Net Core微服務(wù)網(wǎng)關(guān)Ocelot集成Consul的文章就介紹到這了。希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論