亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

.Net?Core服務(wù)治理Consul使用服務(wù)發(fā)現(xiàn)

 更新時(shí)間:2022年01月06日 11:11:38   作者:老馬-Max  
Consul是HashiCorp公司推出的開(kāi)源工具,Consul由Go語(yǔ)言開(kāi)發(fā),部署起來(lái)非常容易,只需要極少的可執(zhí)行程序和配置文件,具有綠色、輕量級(jí)的特點(diǎn)。Consul是分布式的、高可用的、?可橫向擴(kuò)展的用于實(shí)現(xiàn)分布式系統(tǒng)的服務(wù)發(fā)現(xiàn)與配置

先思考一些問(wèn)題:它是做什么的、以及怎么使用它。帶著這些問(wèn)題往下走。

consul是做什么的

consul用于微服務(wù)下的服務(wù)治理。服務(wù)治理是什么?它包含但不限于:服務(wù)發(fā)現(xiàn)、服務(wù)配置、健康檢查、鍵值存儲(chǔ)、安全服務(wù)通信、多數(shù)據(jù)中心等。

為什么需要服務(wù)治理?舉個(gè)例子:最開(kāi)始的服務(wù)比較簡(jiǎn)單,各服務(wù)之間通過(guò)API就能訪問(wèn)。后面業(yè)務(wù)復(fù)雜了,服務(wù)也跟著復(fù)雜了,搞分布式了,而分布式又必然是多服務(wù)器部署,這就有一個(gè)問(wèn)題:如果服務(wù)之間還是用API訪問(wèn),那某個(gè)服務(wù)所在的服務(wù)器掛掉以后這個(gè)服務(wù)就不能用了,也不能自動(dòng)轉(zhuǎn)移,那么只能人肉運(yùn)維了。這時(shí)候大家在想:如果下游調(diào)用上游,只需要一個(gè)統(tǒng)一的地址,不用關(guān)注負(fù)載均衡、節(jié)點(diǎn)失效之類的問(wèn)題,也不用關(guān)注可用性,這些都有一個(gè)中間件來(lái)完成,那該有多好。這個(gè)中間件要做的事情,就是服務(wù)治理,也就是本文的consul,它就是解決這個(gè)事的。但其實(shí)也不是只有它能做這個(gè)事,zooKeeper、etcd也能做這個(gè)事,也沒(méi)有什么高下之分,用什么主要看自己,看公司。對(duì)自己來(lái)說(shuō),哪個(gè)摸得透、玩的熟就用哪個(gè)。對(duì)公司來(lái)說(shuō),哪個(gè)市場(chǎng)認(rèn)可度高就用哪個(gè),說(shuō)白了就是哪個(gè)用的人多。用的人多會(huì)的人就多,招人換人速度就快了,互聯(lián)網(wǎng)企業(yè)追求的不就是速度么?“時(shí)間就是金錢,效率就是生命”,這句話早期在深圳隨處可見(jiàn),至今仍然適用。

題外話有點(diǎn)多,接著往下走。

怎么使用consul

這里只講docker內(nèi)的consul。首先下載一個(gè)鏡像:

dokcer pull consul

然后運(yùn)行起來(lái):

docker run -itd -p 8700:8500 --name myconsuldemo consul

成功運(yùn)行后能看到如下頁(yè)面:

tips:consul的默認(rèn)端口是8500,docker啟動(dòng)可以映射到任意端口。

服務(wù)注冊(cè)

服務(wù)發(fā)現(xiàn)的概念,簡(jiǎn)單來(lái)說(shuō)就是所有節(jié)點(diǎn)程序啟動(dòng)時(shí)都去consul注冊(cè)一下,注冊(cè)后的信息統(tǒng)一保存在consul中以供調(diào)用。是不是很簡(jiǎn)單?

現(xiàn)在net core 3.1下完成consul服務(wù)注冊(cè)。

首先需要添加nuget包:

然后自行封裝一個(gè)注冊(cè)服務(wù),節(jié)省時(shí)間先上源碼:

public static void Reg(IConfiguration configuration)
        {
            string ip = configuration.GetSection("ip").Value.ToString();

            string port = configuration.GetSection("port").Value.ToString();

            string weight = configuration.GetSection("weight").Value.ToString();

            string address = configuration.GetSection("address").Value.ToString();//consul的啟動(dòng)地址

            string center = configuration.GetSection("center").Value.ToString();//數(shù)據(jù)中心名稱

            ConsulClient client = new ConsulClient(x =>
            {
                x.Address = new Uri(address);
                x.Datacenter = center;
            });

            client.Agent.ServiceRegister(new AgentServiceRegistration()
            {
                ID = $"server {ip}:{port}",
                Name = "shenzhen-ma",//分組名稱
                Address = ip,
                Port = int.Parse(port)
            });
        }

配置文件:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ip": "127.0.0.1",
  "port": 5100,
  "weight": 1,//權(quán)重,負(fù)載均衡的重要參數(shù)
  "address": "http://127.0.0.1:8700",//consul地址
  "center": "dc1"http://數(shù)據(jù)中心
}

最后,這個(gè)服務(wù)需要在程序啟動(dòng)的時(shí)候調(diào)用,只一次就好。直接把調(diào)用放在startup里就好,這樣程序啟動(dòng)的時(shí)候就會(huì)自動(dòng)注冊(cè)一個(gè)服務(wù)。

為了能夠動(dòng)態(tài)修改配置文件,接下來(lái)通過(guò)控制臺(tái)啟動(dòng)程序:

dotnet run --urls="http://*:5000" --ip="127.0.0.1" --port=5000

啟動(dòng)成功以后,轉(zhuǎn)到consul的ui看一下:

能看到多了一個(gè)分組【shenzhen-ma】,點(diǎn)進(jìn)去看下我們的服務(wù):

127.0.0.1:5000,沒(méi)毛病。這時(shí)候模擬一下多節(jié)點(diǎn),再多啟動(dòng)兩個(gè)程序試試看:

5001,5002也自動(dòng)注冊(cè)進(jìn)入了這個(gè)分組。

因?yàn)闀r(shí)間關(guān)系,今天只能寫(xiě)到這里了,還有很多東西沒(méi)有寫(xiě),服務(wù)調(diào)用、健康檢查什么的,我會(huì)盡快再發(fā)文的。

到此這篇關(guān)于.Net Core服務(wù)治理Consul使用服務(wù)發(fā)現(xiàn)的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論