发布网友 发布时间:2022-04-23 03:51
共2个回答
热心网友 时间:2022-04-14 06:27
ZooKeeper作为发现服务的问题;
ZooKeeper(注:ZooKeeper是著名Hadoop的一个子项目,旨在解决大规模分 布式应用场景下,服务协调同步(Coordinate Service)的问题;
它可以为同在一个分布式系统中的其他服务提供:统一命名服务、配置管理、分布式锁服务、集群管理等功能)是个伟大的开源项目;
有相当大的社区来支持它的发展,而且在生产环境得到了广泛的使用;但是用它来Service发现服务解决方案则是个错误。
在分布式系统领域有个著名的 CAP定理;
ZooKeeper是个CP的,即任何时刻对ZooKeeper的访问请求能得到一致的数据结果,同时系统对网络分割具备容错性;但是它不能保证每次服务请求的可用性但是别忘了,ZooKeeper是分布式协调服务,它的职责是保证数据在其管辖下的所有服务之间保持同步一致;
所以就不难理解为什么不使用ZooKeeper。
热心网友 时间:2022-04-14 07:45
ZooKeeper(注:ZooKeeper是著名Hadoop的一个子项目,旨在解决大规模分 布式应用场景下,服务协调同步(Coordinate Service)的问题,它可以为同在一个分布式系统中的其他服务提供:统一命名服务、配置管理、分布式锁服务、集群管理等功能)是个伟大的开源项目。
它很成熟,有相当大的社区来支持它的发展,而且在生产环境得到了广泛的使用;但是用它来做Service发现服务解决方案则是个错误。
在分布式系统领域有个著名的 CAP定理(C- 数据一致性;A-服务可用性;P-服务对网络分区故障的容错性,这三个特性在任何分布式系统中不能同时满足,最多同时满足两个)。
因为对于Service发现服务来说就算是返回了包含不实的信息的结果也比什么都不返回要好。
对于Service发现服务而言,宁可返回某服务5分钟之前在哪几个服务器上可用的信息,也不能因为暂时的网络故障而找不到可用的服务器,而不返回任何结果。
所以说,用ZooKeeper来做Service发现服务是肯定错误的。因此不使用ZooKeeper。