标签:nload 配置 center 包括 pass 瓶颈 简单的 架构 html
在上篇.Net微服务实践(四)[网关]:Ocelot限流熔断、缓存以及负载均衡中介绍Ocelot的限流、熔断、缓存、负载均衡以及其他一些特性,Ocelot的基本配置和功能都已经介绍完了。本篇我们会介绍服务发现Consul.
Consul是一款简单、易用、可伸缩性强的服务治理系统。主要核心功能有:服务发现、健康检查、键值存储和多数据中心。
服务发现是consul的核心功能,分为服务注册和服务查找。
服务发现的方式又分自主式和代理式
自主式
由各个服务主动的将自己节点信息添加(删除)到注册中心。实现是通过统一封装或者程序库,由服务各个节点承担服务发现的功能,与代理式相比由各自节点分担的访问压力。
代理式
由一个系统(负载均衡系统)或者服务(API网关)来完成服务发现。因为由一个系统或者服务完成,随着注册服务的增加会带来性能瓶颈,因此需要对此做集群
健康检查
consul代理会每隔一段时间对注册中心的服务节点进行访问,如果响应码为“20X"认为是健康。
键值存储
键值存储可以认为是一个简易的k/v数据库,因此可以用此来存放配置信息。
数据中心
consul支持多数据中心,多数据中心进一步保证了Consul的可用性。
Consul有两种模式,Client和Server,无论各种模式都有一个consul agent。
Client模式
Client模式是一个轻量级的consul agent,只拥有注册服务、健康检查、转发查询等功能。
Server模式
Server模式与Client模式相比,除了拥有Client模式的功能还多出了数据存储,leader选举等。
官方建议Server模式应保证3-5个,而且应该是奇数,为什么呢,因为少于3个无法保证高可用,多于5个又会给数据库同步的一致性带来压力,而Client数量控制则没有讲究
下面介绍一下Windows系统下如何快速简单的部署一个Consul的开发环境(实际生产环境要部署集群)
下载 https://www.consul.io/downloads.html windows 版本,解压
添加consul.exe 的路径到环境变量
cmd运行 consul ,验证
启动cosul服务, cmd中输入 consul agent -dev (dev是开发模式,生产环境下不要使用)
consul提供了丰富和command CLI和API来管理和操作Consul, 例如服务的注册、服务的查找、服务取消注册、健康检查等都有相应的Command CLI和 API
详细的大家可以参考官方的API文档和Command CLI文档
在这里我们介绍几个比较常用的API
服务注册
PUT http://localhost:8500/v1/agent/service/register
body
{
"ID": "nginx1",
"Name": "nginx",
"Tags": ["primary", "v1"],
"Address": "127.0.0.1",
"Port": 80,
"EnableTagOverride": false,
"Check": {
"DeregisterCriticalServiceAfter": "100s",
"HTTP": "http://localhost:5000/health",
"Interval": "1s"
}
}
注册一个ID为nginx1的服务
服务查找
GET http://localhost:8500/v1/agent/services
调用后我们可以在response中看到刚刚注册的nginx1的服务
{
"nginx1": {
"ID": "nginx1",
"Service": "nginx",
"Tags": [
"primary",
"v1"
],
"Meta": {},
"Port": 80,
"Address": "127.0.0.1",
"TaggedAddresses": {
"lan_ipv4": {
"Address": "127.0.0.1",
"Port": 80
},
"wan_ipv4": {
"Address": "127.0.0.1",
"Port": 80
}
},
"Weights": {
"Passing": 1,
"Warning": 1
},
"EnableTagOverride": false
}
}
服务取消注册
PUT http://localhost:8500/v1/agent/service/deregister/nginx1
取消注服务nginx1, 这时我们再调用服务查找的API,会返现response中已经没有nginx1这个服务了
代理健康检查
GET http://localhost:8500/v1/agent/checks
http 状态码返回200, 表示正常
本篇我们对consul做了基本的介绍、如何在windows系统下快速的搭建consul的开发环境,以及Consul的常用API介绍。 接下来我们会结合Ocelot,在Ocelot中集成Consul做服务发现。
示例代码下载地址: https://github.com/lcyhjx/ocelot-demo/tree/master
.Net微服务实践(五)[服务发现]:Consul介绍和环境搭建
标签:nload 配置 center 包括 pass 瓶颈 简单的 架构 html
原文地址:https://www.cnblogs.com/lcyhjx/p/12687648.html