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

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

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

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

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

上干貨。

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

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

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

接下來(lái)還需要修改下配置文件:

{
  "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以后新增的配置。

這里說(shuō)下配置項(xiàng)LoadBalancerOptions(負(fù)載均衡),官方實(shí)現(xiàn)了4個(gè)負(fù)載均衡器,分別是:

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

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

"LoadBalancerOptions": {
        "Type": "CookieStickySessions",
        "Key": "ASP.NET_SessionId",
        "Expiry": 1800000 //過(guò)期時(shí)間
    },

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

consul需要單獨(dú)搭建,所以我準(zhǔn)備了一個(gè)擁有6個(gè)節(jié)點(diǎn)的consul集群:

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

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

多刷新幾下:

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

熱更新

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

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

這一份配置文件里包含了當(dāng)前版本的ocelot支持的所有配置項(xiàng),并且修改后即時(shí)生效。

改個(gè)路由證明下:

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

save以后再請(qǐng)求:

這感覺(jué),酸爽。

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

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

相關(guān)文章

最新評(píng)論