原因
在服务发现领域,ZooKeeper并不是最佳的选择。原因可以从客户端和服务端两个方向进行分析。
客户端
- ZK服务端集群的地址列表是写死在客户端的,不支持动态变更;
- 不支持同机房优先策略;
- 没有针对服务端集群完全不可用时的容灾手段;
服务端
- 写能力不足,不支持水平扩展(随着服务规模的增大,服务上下线、发布和健康监测等对需要良好的写性能);
- 健康监测手段单一,只有TCP的活性监测,服务健康与否的逻辑更应该开放给服务提供方定义;
解决方案
阿里内部自己实现了ConfigServer,外部开源的服务发现框架主要是Eureka。
参考: