微服务~Consul服务注册与发现
服务发现是基于微服务架构的关键原则之一。尝试配置每个客户端或某种形式的约定可能非常困难,可以非常脆弱。Consul通过HTTP API和DNS提供服务发现服务。Spring Cloud Consul利用HTTP API进行服务注册和发现。这不会阻止非Spring云应用程序利用DNS界面。Consul代理服务器在通过八卦协议进行通信的群集中运行,并使用筏式协议协议。
文章参考:
https://www.jianshu.com/p/28c6bd590ca0
http://blog.csdn.net/y435242634/article/details/78639663
Consul 四大特性
- Service Discovery (服务发现)
- Health Check (健康检查)
- Multi Datacenter (多数据中心)
- Key/Value Storage
Consul相关知识点
Agent
- Agent 是一个守护进程
- 运行在Consul集群的每个成员上
- 有Client 和 Server 两种模式
- 所有Agent都可以被调用DNS或者HTTP API,并负责检查和维护同步
Client
- Client 将所有RPC请求转发至Server
- Client 是相对无状态的
- Client 唯一做的就是参与LAN Gossip Pool
- Client 只消耗少量的资源和少量的网络带宽
Server
- 参与 Raft quorum(一致性判断)
- 响应RPC查询请求
- 维护集群的状态
- 转发查询到Leader 或 远程数据中心
Datacenter数据中心
- 私有的
- 低延迟
- 高带宽
Consensus (一致性)
Consul 使用consensus protocol 来提供CAP(一致性,高可用,分区容错性)Gossip
一种协议: 用来保证 最终一致性 , 即: 无法保证在某个时刻, 所有节点状态一致, 但可以保证”最终”一致
启动Consul
Consul安装之后,代理必须运行。 代理可以在服务器或客户端模式下运行。 每个数据中心都必须至少有一台服务器,但推荐使用3台或5台服务器。 一个单一的服务器部署是非常不推荐的,因为在故障情况下数据丢失是不可避免, 所有其他代理以客户端模式运行。 客户端是一个非常轻量级的进程,它注册服务,运行健康检查,并将查询转发给服务器。 代理程序必须在集群中的每个节点上运行。
下面介绍几个命令:
consul agent -dev 以开发模式启动代理,不会持久化信息
consul members
查看集群成员
注册服务
服务可以通过提供服务定义或通过对HTTP API进行适当的调用来注册。
服务定义是注册服务最常用的方式,所以我们将在这一步中使用这种方法。 我们将建立在上一步中介绍的代理配置。
首先,为Consul配置创建一个目录。 Consul将所有配置文件加载到配置目录中,因此Unix系统上的一个通用约定是将目录命名为/etc/consul.d(.d后缀意味着“该目录包含一组配置文件”)。
建立服务配置目录:mkdir /etc/consul.d
添加文件:echo '{"service": {"name": "web", "tags": ["rails"], "port": 80}}' | sudo tee /etc/consul.d/web.json
以开发模式启动:consul agent -dev -config-dir=/etc/consul.d
加入集群
将新节点添加到集群:consul join 192.168.100.101(其中101这个节点是master)
显示成员:consul members
查看UI管理页面
http://localhost:8500
待续...