赞
踩
微服务架构本质上就是把单体架构架构进行拆分成为多个服务,当然项目相对单体架构要变得更加的复杂
**集群是啥?**集群就是一个整体,我给他同时部署多个,但是里面功能都是一样的,这叫集群。什么redis集群,Nginx集群等,
微服务是一个整体拆分多个服务部分,然后服务之间进行互相的通信,所以呢一般做分布式微服务的时候呢一般都是会搭建集群的,防止有服务实例挂掉
当我们一个服务配置多个实例的时候呢,我们会搞Nginx服务转发,基于Nginx的配置文件,这个具体可以自行百度,或者翻阅我之前的文章,Nginx我们大多用来做转发和负载均衡,而且Nginx里面的会自动屏蔽出现问题的服务实例,无需操心,但是呢Nginx是被动的,有点不太灵活的就是提前都是我们配置好的,所以一般微服务的时候的呢也不选择Nginx
consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。服务部署简单,
1. 服务发现,
2. 服务注册
3. 健康检查
4. 负载均衡
consul的答题流程呢请看上面的图,就是说我们请求的服务实例都是从consul里面去拿过来,然后进行请求,而我们启动的服务呢会自动的注册到consul里面去,这就比Nginx要方便了。当然既然consul可以拿到实例,我们就可以进行一系列的操作,比方说负载均衡,健康监测等,
健康检查:就是自己定义一个流程,定时的去请求的接口,看看是否有问题吧。
https://www.consul.io/
consul有服务注册,发现,负载均衡已经健康监测的功能,就来学习一下
.net core 当中使用consul
我们有consul的中间件
consul agent -dev 启动consul的命令
直接在浏览器当中输入 http://localhost:8500
先启动在这边不动
在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,按照上面的命令自己改变
启动了三个服务实例,再看consul
已经成功注册到了consul当中
网关在微服务架构当中相当的重要
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。