微服务之注册中心和配置中心Consul怎么使用


这篇文章主要介绍“微服务之注册中心和配置中心Consul怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微服务之注册中心和配置中心Consul怎么使用”文章能帮助大家解决问题。

注册中心

注册中心选型

你有没有思考过这样一个问题,为什么会有这么多的注册中心(etcd/ZooKeeper/Consul),选用那个最适合自己,是不是在选用的时候会眼花缭乱?

我在开始做的时候,自己也有很多困惑,将近3年的时候里我都在不停的学习,但是还是有很多不同的框架和产品,后来我明白了其中的原因,他们就像生活中的可乐、果汁、和牛奶一样,你在使用的时候选取你的编程语言(Java、Go、PHP),程序易接入的就好了。

产生注册中心五花八门的原因是因为语言很多,都想打造最适合自己的体系生态,我选择Consul为大家讲解,因为它安装和接入都比较方便。

不用被这些假象所困扰,多学习网络和系统的底层原理,万变不离其宗,技术人应该是给出解决方案。

CAP原理

  • 一致性: 所有节点在同一时间具有相同的数据

  • 可用性:保证每个请求不管成功或者失败都有响应

  • 分区容错:系统中任意信息的丢失或失败不会影响系统的继续运作

FeatureConsulZooKeeperetcd
服务健康检查服务状态、内存、硬盘长链接、Keepalive链接心跳
多数据中心支持——
K/V存储服务支持支持支持
一致性RaftPaxosRaft
CAP定理CPCPCP
使用接口(多语言能力)Http/Dns客户端Http/Grpc
安全acl/httpaclHttps支持

Consul介绍

使用PHP、和Go编写,使用Consul作为注册中心和配置中心比较方便,所以我选用的是Consul。

  • 采用Raft算法实现,有服务发现,Key/Value存储,可以做配置中心使用,有健康检查,并提供了web管理页面。

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算法

  • 解决了分布式中领导选举和一致性问题

  • Raft算法是比较出名的共识算法,比如Redis的哨兵、Consul

Consul 集群的特点:

  • 任期机制,Raft是终身任期的,它永远都是领导者

  • 心跳机制,它决定领导者是否能有效的和跟随者通信

  • 随机的选举超时时间,因为是随机的所以决定了不会再同一时间进行选举

  • 先到先得,一届任期内,先收到谁的投票就会给谁,剩下的请求一律拒绝

  • 过半机制,收到一半的投票才会

Consul 集群的角色:

  • Followers 追随者:接受到领导者发送的消息,当心跳超时时,主动推荐自己成为候选人。

  • Candidate 候选人:发送Rpc消息,让其它节点投票给自己,当投票超过半数时,成为领导者。

  • Leader 领导者:向其他节点发送心跳,只要心跳不超时,一直为领导者。

算法的详情可以点击官网视频查看

Consul 基本使用

注册服务

1.注册服务是Consul最基础的服务,点击查看官网Api

PUT192.168.88.144:8500/v1/agent/service/register{"Name":"audio","Id":"audio","Tags":["v2","primary"],"Address":"192.168.88.144","Port":8500,"Check":{"HTTP":"192.168.88.144:8500","Interval":"10s"}}
{"id":"web","name":"web","port":80,"check":{"name":"pingcheck","args":["ping","-c1","test.stark"],"interval":"30s","status":"passing"}}

2.发现服务

GET192.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 下:

关于“微服务之注册中心和配置中心Consul怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注主机评测网行业资讯频道,小编每天都会为大家更新不同的知识点。


上一篇:C++怎么用jsoncpp库实现写入和读取json文件

下一篇:基于Mongodb分布式锁怎么解决定时任务并发执行问题


Copyright © 2002-2019 测速网 https://www.inhv.cn/ 皖ICP备2023010105号 城市 地区 街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!
热门搜索