【Spring Cloud】Consul注册中心实现服务发现
【学习背景】
除了前面两篇博客中学习到的Eureka和Zookeeper可以实现服务的发布与调用,本篇博客要总结的Consul同样也可做服务的注册中心。
【学习内容】
1. Consul是什么?
Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源. Consul 支持健康检查,并允许 HTTP 和 DNS 协议调用 API 存储键值对.
2. Consul优势
-
使用 Raft 算法来保证一致性, 比复杂的 Paxos 算法更直接.
-
支持多数据中心,内外网的服务采用不同的端口进行监听。 多数据中心集群可以避免单数据中心的单点故障,而其部署则需要考虑网络延迟, 分片等情况等.
-
支持健康检查.
-
支持 http 和 dns 协议接口
-
官方提供web管理界面
3. Consul安装
下载地址:https://www.consul.io/downloads.html
下载好之后,进入到consul.exe目录下,执行命令,启动Consul:consul agent -dev -ui -node =cy
-dev 表示开发服务器模式启动;
-ui 可以用界面访问,默认能访问;
-node 节点名为cy。
测试访问地址:http://localhost:8500
启动成功的话,我们可以看到如下管理界面:
4. demo搭建
和学习zookeeper注册中心一样,建立一个Consul注册中心项目,添加Consul Discovery依赖,如下:
添加对应的配置文件信息:
server:
port: 8900
spring:
application:
name: consul-service-provider
cloud:
consul:
host: localhost
port: 8500
我们就可以在服务管理界面看到对应的服务信息:
【学习demo】
github关于Consul注册中心学习demo地址链接:
https://github.com/huzhiting/spring-cloud/tree/master/consul-service-provider
【学习总结】
有了前面Zookeeper学习的过程,感觉学习Consul注册中心的过程就简单了许多。
至此,算是接触到了Eureka,Zookeeper,Consul三种注册中心,最后,找了一张图,将Eureka,Zookeeper,Consul和etcd四个注册中心进行了简单的对比,相同点和不同点也是一目了然,也是一个不错的总结: