这篇文章主要介绍“微服务之注册中心和配置中心Consul怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微服...
这篇文章主要介绍“微服务之注册中心和配置中心Consul怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微服务之注册中心和配置中心Consul怎么使用”文章能帮助大家解决问题。
注册中心
注册中心选型
你有没有思考过这样一个问题,为什么会有这么多的注册中心(etcd/ZooKeeper/Consul),选用那个最适合自己,是不是在选用的时候会眼花缭乱?
我在开始做的时候,自己也有很多困惑,将近3年的时候里我都在不停的学习,但是还是有很多不同的框架和产品,后来我明白了其中的原因,他们就像生活中的可乐、果汁、和牛奶一样,你在使用的时候选取你的编程语言(Java、Go、PHP),程序易接入的就好了。
产生注册中心五花八门的原因是因为语言很多,都想打造最适合自己的体系生态,我选择Consul为大家讲解,因为它安装和接入都比较方便。
不用被这些假象所困扰,多学习网络和系统的底层原理,万变不离其宗,技术人应该是给出解决方案。
CAP原理
Feature | Consul | ZooKeeper | etcd |
---|
服务健康检查 | 服务状态、内存、硬盘 | 长链接、Keepalive | 链接心跳 |
多数据中心 | 支持 | — | — |
K/V存储服务 | 支持 | 支持 | 支持 |
一致性 | Raft | Paxos | Raft |
CAP定理 | CP | CP | CP |
使用接口(多语言能力) | Http/Dns | 客户端 | Http/Grpc |
安全 | acl/https | acl | Https支持 |
Consul介绍
使用PHP、和Go编写,使用Consul作为注册中心和配置中心比较方便,所以我选用的是Consul。
Consul 内部端口说明:
TCP/8300:8300端口用于服务器节点,客户端通过RPC协议调用服务端节点。
TCP/UDP/8301: 8301端口用于单个数据中心所有节点之间的互相通信,即对LAN池信息的同步,它使得整个数据中心能够自动的发现服务器地址,分布式监测点的故障,事件广播。
TCP/UDP/8302: 8302端口用于单个或多个数据中心之间的服务器节点的信息同步(WAL池信息的同步),它针对互联网的高延迟进行了优化,能够实现跨数据中心请求。
HTTP/8500: 8500端口基于Http服务,用于Api接口和Ui访问。
DNS/8600: 8600端口作为DNS服务器,它使得我们可以通过节点查询节点信息。
Consul Raft算法
Consul 集群的特点:
Consul 集群的角色:
Followers 追随者:接受到领导者发送的消息,当心跳超时时,主动推荐自己成为候选人。
Candidate 候选人:发送Rpc消息,让其它节点投票给自己,当投票超过半数时,成为领导者。
Leader 领导者:向其他节点发送心跳,只要心跳不超时,一直为领导者。
算法的详情可以点击官网视频查看
Consul 基本使用
注册服务
1.注册服务是Consul最基础的服务,点击查看官网Api
PUT 192.168.88.144:8500/v1/agent/service/register
{
"Name":"audio",
"Id":"audio",
"Tags":[
"v2",
"primary"
],
"Address":"192.168.88.144",
"Port":8500,
"Check":{
"HTTP":"http://192.168.88.144:8500",
"Interval":"10s"
}
}
{
"id": "web",
"name": "web",
"port": 80,
"check": {
"name": "ping check",
"args": ["ping", "-c1", "test.stark.com"],
"interval": "30s",
"status": "passing"
}
}
2.发现服务
GET http://192.168.88.144:8500/v1/health/service/audio
[
{
"Node": {
"ID": "38779dca-bffd-e399-6597-266aff68132c",
"Node": "server01-virtual-machine",
"Address": "127.0.0.1",
"Datacenter": "dc1",
"TaggedAddresses": {
"lan": "127.0.0.1",
"lan_ipv4": "127.0.0.1",
"wan": "127.0.0.1",
"wan_ipv4": "127.0.0.1"
},
"Meta": {
"consul-network-segment": ""
},
"CreateIndex": 13,
"ModifyIndex": 17
},
"Service": {
"ID": "audio",
"Service": "audio",
"Tags": [
"v2",
"primary"
],
"Address": "192.168.88.144",
"TaggedAddresses": {
"lan_ipv4": {
"Address": "192.168.88.144",
"Port": 8500
},
"wan_ipv4": {
"Address": "192.168.88.144",
"Port": 8500
}
},
"Meta": null,
"Port": 8500,
// ...
}
]
Service API Service 相关的 API 都在 /v1/agent/service 下:
/agent/services:该端点返回在本地代理程序中注册的所有服务;
/agent/service/{service_id}:返回在本地代理上注册的单个服务实例的完整服务定义;
/agent/health/service/name/{service_name}/
/agent/health/service/id/{service_id}:通过名称或id检索本地代理上的聚合服务状态;
/agent/service/register:注册服务;
/agent/service/deregister/{service_id} :注销服务;
/agent/service/maintenance/{service_id}:该端点将给定的服务置于“维护模式”,在维护模式下,该服务将被标记为不可用,并且不会出现在DNS或API查询中。
关于“微服务之注册中心和配置中心Consul怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注捷杰建站行业资讯频道,小编每天都会为大家更新不同的知识点。