最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

.Net Core服務(wù)治理Consul自動擴展和服務(wù)調(diào)用

 更新時間:2022年01月06日 10:55:27   作者:老馬-Max  
這篇文章介紹了.Net Core服務(wù)治理Consul自動擴展和服務(wù)調(diào)用,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

今天有寫文章的時間了,開心。延續(xù)上一篇的話題繼續(xù),順便放上一篇的傳送門:點這里

服務(wù)調(diào)用

既然服務(wù)注冊已經(jīng)搞完了,那么現(xiàn)在就開始調(diào)用這些注冊好的服務(wù)。先做一下準備動作,把consul容器跑起來:

打開控制臺確認正常:

然后多跑幾個應(yīng)用程序模擬多點部署:

程序跑完以后檢察一下服務(wù)列表:

戳進去看看:

一切準備就緒,完美。然后進入編碼環(huán)節(jié)。老規(guī)矩,直接上碼:

public static string Convert(string consulUri, string centerName, string reqUri)
        {
            ConsulClient client = new ConsulClient(x =>
            {
                x.Address = new Uri(consulUri);
                x.Datacenter = centerName;
            });

            //獲取consul中注冊的服務(wù)列表
            var consulServiceList = client.Agent.Services().Result.Response;

            //統(tǒng)一請求地址
            Uri uri = new Uri(reqUri);

            //取出分組名稱
            string groupName = uri.Host;

            //匹配出對應(yīng)的服務(wù)
            var serviceList = consulServiceList.Where(x => x.Value.Service.ToLower().Equals(groupName.ToLower())).ToArray();

            //隨機訪問策略
            var service = serviceList[new Random().Next(serviceList.Length)].Value;

            return $"{uri.Scheme}://{service.Address}:{service.Port}{uri.PathAndQuery}";
        }

上面是自行封裝的方法,作用很簡單:把通用的請求地址轉(zhuǎn)換為實際發(fā)起請求的地址,比如調(diào)用起來是這樣的:

string realUri = ConsulService.Convert("http://127.0.0.1:8700", "dc1", "http://shenzhen-ma/v1/client/base/index");

發(fā)現(xiàn)了么,分組名稱“shenzhen-ma”直接替代了具體的ip和端口。這樣做真的可以拿到請求結(jié)果么?隨便寫一個測試用的controller:

public async Task<IActionResult> Post()
        {
            string realUri = ConsulService.Convert("http://127.0.0.1:8700", "dc1", "http://shenzhen-ma/v1/client/base/index");

            string result = await Service.Tool.HttpHelper.Get(realUri);

            return Ok(result);
        }

看請求結(jié)果:

5001應(yīng)用程序請求到了5004的數(shù)據(jù)。多試幾下再看看:

很顯然,通過統(tǒng)一的請求地址,實際的請求分發(fā)到了不同的節(jié)點上。

復(fù)盤一波

到剛才,我已經(jīng)完成了服務(wù)調(diào)用這個關(guān)鍵步驟。consul做了什么呢?它幫我們把統(tǒng)一的請求地址轉(zhuǎn)換成了真實發(fā)生作用的請求地址。未來如果增加了新的服務(wù)器,無需調(diào)整,它自己就能夠發(fā)現(xiàn)新的服務(wù)——這就是大家廣泛理解的服務(wù)發(fā)現(xiàn)。實際上,這個功能就賦予了我們動態(tài)增加節(jié)點的能力。能伸能縮,是微服務(wù)的一個重要特征。當然,因為沒有配置健康檢查,我的consul現(xiàn)在還不能自動移除不可用的服務(wù),能伸不能縮,很尷尬。這個么,時間有限,放在下一篇文章去寫。這一篇文章能講清楚服務(wù)調(diào)用,并由此能理解什么是服務(wù)發(fā)現(xiàn),我覺得就達標。

到此這篇關(guān)于.Net Core服務(wù)治理Consul自動擴展和服務(wù)調(diào)用的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

万盛区| 晋中市| 西乌珠穆沁旗| 丰镇市| 苏尼特左旗| 五寨县| 万州区| 三都| 武功县| 彭山县| 信阳市| 乌鲁木齐县| 安溪县| 惠安县| 外汇| 洱源县| 雅江县| 林口县| 固阳县| 甘南县| 资中县| 玉门市| 宜丰县| 鸡泽县| 大洼县| 利津县| 洛南县| 永安市| 理塘县| 兴文县| 德令哈市| 四川省| 江永县| 固镇县| 旬阳县| 龙山县| 玛曲县| 大冶市| 贡觉县| 大新县| 怀化市|