.net core 微服务架构的学习--(1)--服务治理Consul

.net core 微服务架构的学习–初始

微服务架构本质上就是把单体架构架构进行拆分成为多个服务,当然项目相对单体架构要变得更加的复杂

微服务架构 的学习路线

.net core 微服务架构的学习--(1)--服务治理Consul_第1张图片

集群和微服务,

**集群是啥?**集群就是一个整体,我给他同时部署多个,但是里面功能都是一样的,这叫集群。什么redis集群,Nginx集群等,
微服务是一个整体拆分多个服务部分,然后服务之间进行互相的通信,所以呢一般做分布式微服务的时候呢一般都是会搭建集群的,防止有服务实例挂掉

Nginx

当我们一个服务配置多个实例的时候呢,我们会搞Nginx服务转发,基于Nginx的配置文件,这个具体可以自行百度,或者翻阅我之前的文章,Nginx我们大多用来做转发和负载均衡,而且Nginx里面的会自动屏蔽出现问题的服务实例,无需操心,但是呢Nginx是被动的,有点不太灵活的就是提前都是我们配置好的,所以一般微服务的时候的呢也不选择Nginx

Consul

consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。服务部署简单,
1. 服务发现,
2. 服务注册
3. 健康检查

4. 负载均衡
.net core 微服务架构的学习--(1)--服务治理Consul_第2张图片
consul的答题流程呢请看上面的图,就是说我们请求的服务实例都是从consul里面去拿过来,然后进行请求,而我们启动的服务呢会自动的注册到consul里面去,这就比Nginx要方便了。当然既然consul可以拿到实例,我们就可以进行一系列的操作,比方说负载均衡,健康监测等,
健康检查:就是自己定义一个流程,定时的去请求的接口,看看是否有问题吧。

有了微服务的理论知识呢就知道consul很重要

下面来学习consul

https://www.consul.io/
consul有服务注册发现负载均衡已经健康监测的功能,就来学习一下
.net core 当中使用consul
我们有consul的中间件
.net core 微服务架构的学习--(1)--服务治理Consul_第3张图片

创建两个项目(ConsulClient和ConsulService)

.net core 微服务架构的学习--(1)--服务治理Consul_第4张图片

先下载consul

consul agent -dev 启动consul的命令
.net core 微服务架构的学习--(1)--服务治理Consul_第5张图片
直接在浏览器当中输入 http://localhost:8500
.net core 微服务架构的学习--(1)--服务治理Consul_第6张图片
先启动在这边不动

ConsulService当中配置consul,


            ConsulClient client = new ConsulClient(
                con => {
                    con.Address = new Uri("http://localhost:8500/");//consul的服务地址,配置在文件当中
                    con.Datacenter = "weishao"; 
                });
            string ip = configuration["ip"];//获取命令行ip
          int port = int.Parse(configuration["port"]);//命令行参数必须传入
            client.Agent.ServiceRegister(new AgentServiceRegistration()
            {
                ID = "weishao" + Guid.NewGuid(),//服务的实例名字,不重
                Name = "weishao",//分组名字,一般同一个服务实例多个服务实例,进行一个分组
                Address = ip,//ip地址
                Port = port,//不同实例的端口,就是到时候启动程序的时候我们设定端口
                //Tags = new string[] { weight.ToString() },//标签//负载均衡的使用
                //Check = new AgentServiceCheck()//配置健康心跳检查,定时去访问是否健康
                //{
                //    Interval = TimeSpan.FromSeconds(12),//每个12秒去检查一下
                //    HTTP = $"http://{ip}:{port}/Api/Health/Index",//心跳健康的api 直接返回code=200
                //    Timeout = TimeSpan.FromSeconds(5),//检查超时间
                //    DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(5)//健康失败的回收时间
                //}
            });

启动一个5005服务实例
dotnet ConsulService.dll --urls=“http://*:5005” --ip=“127.0.0.1” --port=5005
接着多启动几个,5006和5007,按照上面的命令自己改变
.net core 微服务架构的学习--(1)--服务治理Consul_第7张图片
.net core 微服务架构的学习--(1)--服务治理Consul_第8张图片
.net core 微服务架构的学习--(1)--服务治理Consul_第9张图片

启动了三个服务实例,再看consul
.net core 微服务架构的学习--(1)--服务治理Consul_第10张图片
已经成功注册到了consul当中
.net core 微服务架构的学习--(1)--服务治理Consul_第11张图片

接下来来搭建服务发现的流程(ConsulClient)

网关(gateway)

网关在微服务架构当中相当的重要

  1. 提供服务服务入口,是服务对外透明
  2. 节省流量,提高性能。
  3. 提供一系列的功能,包括流量控制,管理,安全,过滤等。
    .net core 微服务架构的学习--(1)--服务治理Consul_第12张图片

你可能感兴趣的:(.net5微服务学习,.netcore,微服务,架构)