上篇说到构建良好的架构,依托于基础设施建设(自动化测试、自动化部署、服务监控,服务发现、配置中心等等),决定成败的往往是基础设施建设,所以从搭建一个注册中心和配置中心开始我们新一阶段的启程。
你有没有思考过这样一个问题,为什么会有这么多的注册中心(etcd/ZooKeeper/Consul),选用那个最适合自己,是不是在选用的时候会眼花缭乱?
我在开始做的时候,自己也有很多困惑,将近3年的时候里我都在不停的学习,但是还是有很多不同的框架和产品,后来我明白了其中的原因,他们就像生活中的可乐、果汁、和牛奶一样,你在使用的时候选取你的编程语言(Java、Go、PHP),程序易接入的就好了。
【资料图】
产生注册中心五花八门的原因是因为语言很多,都想打造最适合自己的体系生态,我选择Consul为大家讲解,因为它安装和接入都比较方便。
不用被这些假象所困扰,多学习网络和系统的底层原理,万变不离其宗,技术人应该是给出解决方案。
Feature | Consul | ZooKeeper | etcd |
|---|---|---|---|
服务健康检查 | 服务状态、内存、硬盘 | 长链接、Keepalive | 链接心跳 |
多数据中心 | 支持 | — | — |
K/V存储服务 | 支持 | 支持 | 支持 |
一致性 | Raft | Paxos | Raft |
CAP定理 | CP | CP | CP |
使用接口(多语言能力) | Http/Dns | 客户端 | Http/Grpc |
安全 | acl/https | acl | Https支持 |
使用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是终身任期的,它永远都是领导者心跳机制,它决定领导者是否能有效的和跟随者通信随机的选举超时时间,因为是随机的所以决定了不会再同一时间进行选举先到先得,一届任期内,先收到谁的投票就会给谁,剩下的请求一律拒绝过半机制,收到一半的投票才会Consul 集群的角色:
Followers 追随者:接受到领导者发送的消息,当心跳超时时,主动推荐自己成为候选人。Candidate 候选人:发送Rpc消息,让其它节点投票给自己,当投票超过半数时,成为领导者。Leader 领导者:向其他节点发送心跳,只要心跳不超时,一直为领导者。算法的详情可以点击官网视频查看
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的使用,查询官方文档吧。
标签:
仓储物流“成渝圈”如何乘势而上? 12月3日,连接昆明和万象的中老铁路全线开通运营,被惠及的显...
两件西周青铜簋时隔三千年成功配对 考古工作者介绍,这个铜簋的盖、身分别时隔40余年出土,纹饰...
“医保砍价”不是一个人在战斗 晁星 “我眼泪都快掉下来了”“每一个小群体都不该被放弃”…...
“购物成瘾”真的是一种病 刘艳 牛雅娟 本周日即将迎来“双十二”促销季,很多人又开始摩拳...
因迷恋山间风景,一男子在甘孜州稻城县海拔4000多米的无人区迷失方向,随后与同伴失联。12月的稻城...
嫌疑人DNA信息比中后,成都市公安局刑侦支队技术处DNA实验室民警白小刚一下坐在凳子上,恍惚迟疑间...
一批反映南京大屠杀历史的新书发布 新华社南京12月7日电(记者邱冰清、蒋芳)“以史为鉴,开创未来...
我在现场·照片背后的故事|电影《亲爱的》里面没有的结局,在我眼前“上映” 12月6日,在深圳市...
冥想?泡脚?不如听听助眠音乐 晚上睡不着,白天睡不醒,成为最贴合都市人群的“睡眠画像”。随...
养老话题 老年教育面临缺口 “终身教育”潜力无限 【现实挑战】“新老年”群体愿意在培养兴...
孙海洋被拐14年儿子如何找到的? 警方侦办另一宗拐骗儿童案时发现线索,通过人像比对、DNA确认找...
北京天文馆、圆明园将对未成年人免费开放 12月6日,北京天文馆发布通知称,12月8日起试行对未成...
今年全国粮食总产量再创新高 连续7年保持在1 3万亿斤以上 根据对全国31个省(区、市)的抽样调...
斑块软的很危险 硬的就无碍? 血管里的“垃圾”分类 赶快学起来! 一项最新研究显示:中国...
诺西那生钠注射液大幅降价 聚焦医保谈判背后脊髓性肌萎缩症家庭 医保目录公布那天 好多家长都...
抖音“窗花剪剪”遭抄袭 被判获赔20万元 法院认为“窗花剪剪”的这种表达方式理应受到《著作权...
公安机关近日侦破3起拐卖儿童案件 失散十几年 3组家庭终于团圆了 北京青年报记者12月6日从公...
2021年度十大网络用语发布 本报讯(记者 路艳霞)作为年度“汉语盘点”活动最具网络特色的组成部...
北京天文馆向未成年人免费开放 本报讯(记者 牛伟坤)北京天文馆对票价免费及优惠政策作出调整:1...
2021北京百个网红打卡地发布 本报讯(记者 李洋)2021北京网红打卡地推荐榜单昨晚正式发布。自然...