类比Eureka 相关的服务注册中心

 首先思考自研一套服务注册中心需要考虑的因素:

一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
分区容忍性(P):就是当由于网络故障之时,导致集群里的机器不能保证其互相保持正常通信之时,每台机器所具备各自为战能力,保证服务能否正常使用

自研一套分布式注册中心如果要做得相对完善,对技术(并发,线程安全)还是有一定的深度的要求的。

中小型公司在成本的考虑下可选择现在市场上主流的几个服务发现的产品:(引用文档)

FeatureeuerkaConsulzookeeperetcd
服务健康检查 可配支持 服务状态,内存,硬盘等 (弱)长连接,keepalive 连接心跳
多数据服务中心 支持
kv 存储服务 支持 支持 支持
一致性 raft paxos raft
cap ap cp cp cp
使用接口(多语言能力) http(sidecar) 支持http和dns 客户端 http/grpc
watch支持 支持 long polling/大部分增量 全量/支持long polling 支持 支持 long polling
自身监控 metrics metrics metrics
安全 acl /https acl https支持(弱)
spring cloud集成 已支持 已支持 已支持 已支持

虽然官方说过:

The existing open source work on eureka 2.0 is discontinued. The code base and artifacts that were released as part of the existing repository of work on the 2.x branch is considered use at your own risk.

Eureka 1.x is a core part of Netflix's service discovery system and is still an active project.

来自:https://github.com/Netflix/eureka/wiki
大概的意思是关于Eureka 2.0项目已经中断。1.x目前仍是一个活跃的项目。

官方正式发布的版本:https://github.com/Netflix/eureka/tags

官网
 
 

 maven中:

maven
 

至今位置官方正式发布的版本已经到1.9.12并且社区还是活跃状态,所谓的2.x停止维护,其实对我们的影响可以说是微乎其微。因为目前所使用的都是1.x版本。所以Eureka仍然是一个很好的选择。但是互联网中各种技术的发展和取舍不妨尝试其他的技术,也许会更合适某些需求场景。

个人见解:用户体验重要的项目首选Eureka,保证高可用。至于一致性嘛,能够保证最终一致性就好。如果追求强一致性,例如金融行业可以选择Consul或许更加合适。

阅读参考链接:

如果公司要自研一套分布式注册中心,说说你的设计思路

服务发现比较:Consul vs Zookeeper vs Etcd vs Eureka

 


 

本人才疏学浅,以上纯属个人理解,如有不对,还望批评指正。

 

posted @ 2019-09-17 22:03  vince_z  阅读(203)  评论(0编辑  收藏  举报