1,概要
项目中原使用eureka作为注册中心,鉴于2.0不继续开源,适当对其他组件也了解下,以适应未知情况
2,consul vs eureka
官方表示consul有其他发现注册产品没有的特性,but目前很多特性我们没用到,后续再继续研究
对比差异主要关系我们使用和可能使用的部分,健康检查两者都支持,spring clound支持;cap 方面consul强调一致性,eureka强调分区耐久性,consul服务注册相比 Eureka 会稍慢一些。因为 Consul 的 raft 协议要求必须过半数的节点都写入成功才认为注册成功 Leader 挂掉时,重新选举期间整个 Consul 不可用。保证了强一致性但牺牲了可用性;eureka服务注册相对要快,因为不需要等注册信息 replicate 到其它节点,也不保证注册信息是否 replicate 成功 当数据出现不一致时,虽然 A, B 上的注册信息不完全相同,但每个 Eureka 节点依然能够正常对外提供服务,这会出现查询服务信息时如果请求 A 查不到,但请求 B 就能查到。如此保证了可用性但牺牲了一致性;牺牲一致性在注册发现场景问题不大,在注册发现场景eureka性能更高
主流注册发现组件比较(摘自网络)
Feature
Consul
zookeeper
etcd
euerka
服务健康检查
服务状态,内存,硬盘等
(弱)长连接,keepalive
连接心跳
可配支持
多数据中心
支持
—
—
—
kv存储服务
支持
支持
支持
—
一致性
raft
paxos
raft
—
cap
ca
cp
cp
ap
使用接口(多语言能力)
支持http和dns
客户端
http/grpc
http(sidecar)
watch支持
全量/支持long polling
支持
支持 long polling
支持 long polling/大部分增量
自身监控
metrics
—
metrics
metrics
安全
acl /https
acl
https支持(弱)
—
spring cloud集成
已支持
已支持
已支持
已支持
开发语言
go
3,安装使用
Consul agent有两种运行模式:Server和Client。这里的Server和Client只是Consul集群层面的区分,与搭建在Cluster之上 的应用服务无关。以Server模式运行的Consul agent节点用于维护Consul集群的状态,官方建议每个Consul Cluster至少有3个或以上的运行在Server mode的Agent,Client节点不限
consul借助agent来运行,类似elk的logstash agent 或 zabbix监控系统的agent ,每个需要被发现的服务上,通过consul agent client 来收集服务本身的信息,然后向consul agent server汇报, consul server 可以集群部署
mac上安装:brew install consul
启动agent 及ui:consul agent -ui -dev -advertise 127.0.0.1
说明:consul-client-1 请求consul-rest-server、consul-rest-server2 实现服务发现负载均衡
集群测试及详细说明后续补充