2021年7月17日星期六

.Net Core微服务——服务发现:Consul(一)

先思考一些问题:它是做什么的、以及怎么使用它。带着这些问题往下走。

consul是做什么的

consul用于微服务下的服务治理。服务治理是什么?它包含但不限于:服务发现、服务配置、健康检查、键值存储、安全服务通信、多数据中心等。

为什么需要服务治理?举个例子:最开始的服务比较简单,各服务之间通过API就能访问。后面业务复杂了,服务也跟着复杂了,搞分布式了,而分布式又必然是多服务器部署,这就有一个问题:如果服务之间还是用API访问,那某个服务所在的服务器挂掉以后这个服务就不能用了,也不能自动转移,那么只能人肉运维了。这时候大家在想:如果下游调用上游,只需要一个统一的地址,不用关注负载均衡、节点失效之类的问题,也不用关注可用性,这些都有一个中间件来完成,那该有多好。这个中间件要做的事情,就是服务治理,也就是本文的consul,它就是解决这个事的。但其实也不是只有它能做这个事,zooKeeper、etcd也能做这个事,也没有什么高下之分,用什么主要看自己,看公司。对自己来说,哪个摸得透、玩的熟就用哪个。对公司来说,哪个市场认可度高就用哪个,说白了就是哪个用的人多。用的人多会的人就多,招人换人速度就快了,互联网企业追求的不就是速度么?"时间就是金钱,效率就是生命",这句话早期在深圳随处可见,至今仍然适用。

题外话有点多,接着往下走。

怎么使用consul

这里只讲docker内的consul。首先下载一个镜像:

dokcer pull consul

然后运行起来:

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

成功运行后能看到如下页面:

 tips:consul的默认端口是8500,docker启动可以映射到任意端口。

 服务注册

服务发现的概念,简单来说就是所有节点程序启动时都去consul注册一下,注册后的信息统一保存在consul中以供调用。是不是很简单?

现在net core 3.1下完成consul服务注册。

首先需要添加nuget包:

 然后自行封装一个注册服务,节省时间先上源码:

  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的启动地址   string center = configuration.GetSection("center").Value.ToString();//数据中心名称   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,//权重,负载均衡的重要参数 "address": "",//consul地址 "center": "dc1"//数据中心}

最后,这个服务需要在程序启动的时候调用,只一次就好。直接把调用放在startup里就好,这样程序启动的时候就会自动注册一个服务。

为了能够动态修改配置文件,接下来通过控制台启动程序:

dotnet run --urls="" --ip="127.0.0.1" --port=5000

启动成功以后,转到consul的ui看一下:

原文转载:http://www.shaoqun.com/a/884608.html

跨境电商:https://www.ikjzd.com/

米谷:https://www.ikjzd.com/w/1788

欧舒丹:https://www.ikjzd.com/w/1756

indiegogo:https://www.ikjzd.com/w/265


先思考一些问题:它是做什么的、以及怎么使用它。带着这些问题往下走。consul是做什么的consul用于微服务下的服务治理。服务治理是什么?它包含但不限于:服务发现、服务配置、健康检查、键值存储、安全服务通信、多数据中心等。为什么需要服务治理?举个例子:最开始的服务比较简单,各服务之间通过API就能访问。后面业务复杂了,服务也跟着复杂了,搞分布式了,而分布式又必然是多服务器部署,这就有一个问题:如
cares:https://www.ikjzd.com/w/1302
易趣:https://www.ikjzd.com/w/210
2021最适合夏季旅游的城市推荐,2021夏季去哪里旅游最好:http://www.30bags.com/a/425132.html
2021最受中国游客欢迎的泰国酒店是哪家:http://www.30bags.com/a/421417.html
2021最温暖的打开方式:邀您来惠州共赴一场"暖冬之旅":http://www.30bags.com/a/435628.html
2021最新!邦涛海滩不完全攻略,带你了解普吉岛最豪华的度假区......:http://www.30bags.com/a/275368.html
老公洗澡老婆被上王总 当着老公被他上司干:http://lady.shaoqun.com/m/a/274803.html
少妇口述:好色男邻居趁老公出差跟我一夜情:http://www.30bags.com/m/a/249609.html
中年女性想和你发生关系,一般会发出四个信号,见面要主动:http://lady.shaoqun.com/a/424219.html
怎么从接吻中分辨出一个男人是否对你动了真情?:http://lady.shaoqun.com/a/424220.html
女人一旦有了婚外情,就会有以下表现。希望男人能尽早防范:http://lady.shaoqun.com/a/424221.html
接吻后,真正爱你的男人会交出这些"卡片":http://lady.shaoqun.com/a/424222.html

没有评论:

发表评论