概述

上篇说到构建良好的架构,依托于基础设施建设(自动化测试、自动化部署、服务监控,服务发现、配置中心等等),决定成败的往往是基础设施建设,所以从搭建一个注册中心和配置中心开始我们新一阶段的启程。

注册中心

注册中心选型

你有没有思考过这样一个问题,为什么会有这么多的注册中心(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。

  • 采用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

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的使用,查询官方文档吧。

微服务 - Consul服务注册中心相关推荐

  1. 微服务架构:注册中心 ZooKeeper、Eureka、Consul 、Nacos 对比!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 前言 服务注册中心本质上是为了解耦服务提供者和服务消费者. ...

  2. 分布式服务发现与注册中心 Consul 中文入门指南

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 基础概念 什么是注册中心 随着微服务理论发展的成熟,越来越多互联网公司采用微服务架构来支持业务发展.各个微服务之间 ...

  3. 微服务笔记:第一章_微服务简介|Eureka注册中心|Nacos注册中心|Nacos配置管理|Feign|Gateway服务网关

    微服务笔记:第一章_微服务简介|Eureka注册中心|Nacos注册中心|Nacos配置管理|Feign|Gateway服务网关 1. 微服务简介 1.1 服务架构演变 1.2 SpringCloud ...

  4. 2:Alibaba微服务组件Nacos注册中心

    Spring Cloud Alibaba系列目录 提示:这里是第二章:Alibaba微服务组件Nacos注册中心 微服务和Spring Cloud Alibaba介绍 Alibaba微服务组件Naco ...

  5. 【微服务】Eureka注册中心

    文章目录 前置导入 Eureka的结构和作用 搭建eureka-server 创建eureka-server服务 引入eureka依赖 编写启动类 编写配置文件 启动服务 总结 服务注册 引入依赖 配 ...

  6. 微服务架构之注册中心

    假设你发布了一个服务,并且已经在一台机器上部署了服务,那如果我想调用这个服务,我该如何知道你部署的这台机器的地址呢? 这个问题就跟我想去吃肯德基一样,我可以去谷歌地图上搜索肯德基,然后谷歌地图会返回所 ...

  7. 理解nacos 服务治理(注册中心)、Nacos简介、下载与配置持久化到Mysql

    Nacos简介 什么是Nacos Nacos致力于帮助您发现.配置和管理微服务.Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流且管理. Nacos帮助您更敏 ...

  8. Consul(注册中心)部署

    目录 前言 一.Docker consul(注册中心) 1.什么是consul 2.consul干什么 3.常见的注册中心 4.Consul 特性 5.Consul的使用场景 6.Consul的基本架 ...

  9. consul java 注册中心_Spring Cloud微服务架构实战之Consul注册中心02:consul入门案例...

    获取springcloud实战项目详细视频教程,请留言联系. 1.创建项目 我们创建聚合项目来讲解 Consul,首先创建一个 pom 父工程. 2.添加依赖 pom.xml 4.0.0 com.ex ...

最新文章

  1. ArcGIS10新功能之制作地图集
  2. python入门(12)dict
  3. Gartner:2013-2014年全球MSS市场分析
  4. java stream Collectors
  5. HBuilderX是什么
  6. 让你更好的使用jQuery插件
  7. 7-4 计算职工工资 (15 分)
  8. java中的配置文件
  9. 通过yum安装Oracle instant client
  10. SQLServer示例数据库AdventureWorks下载地址
  11. 小白的网站seo经验
  12. 八、图像金字塔(高斯金字塔、拉普拉斯金字塔)
  13. java 过滤微信昵称_java过滤微信昵称特殊字符
  14. 高中英语解析(3500词汇)
  15. 当数学题加上了程序员思想
  16. 用递归的方式分析白色相簿2 coda篇各结局概率
  17. iOS 网易新闻首页进化版Demo(MXSegmentedPager),自带平行头部拉伸
  18. 跟真人发音差不多的软件,确定不了解一下?
  19. 数据项目管理的痛点与实践
  20. 盘点中国联通2015年:工于谋国 拙于谋身

热门文章

  1. C++判断两字符串是否相等
  2. Java实现抽奖功能
  3. 自动生成统计报表功能
  4. 【免杀前置课——Windows编程】五、窗口控件——什么是控件、Windolws 窗口两大类、Windows标准控件/通用控件、控件响应的接收、创建窗口制作不同控件
  5. Ubuntu 20.04.2.0 LTS 更改默认关联视频播放器VLC的方法
  6. RankNet,LambdaRank,LambdaMart
  7. 简易爬虫实现校园网剩余流量查询
  8. 后端生成PDF一些工具
  9. win7 共享 win10 打印机
  10. Github项目文档的管理