提交 5627feb5 编写于 作者: 武汉红喜's avatar 武汉红喜

为什么说zk不适合做服务注册中心

上级 dfcc2d57
......@@ -3,6 +3,16 @@
> 好的微服务架构师一定是业务架构师,基于业务的建瓴,微服务设计三部曲,遵循自下而上的设计原则,即原子服务、服务组合和业务编排,避免系统之间出现混乱调用。
### 为什么zookeeper不适合做服务注册中心
有个思考,从CAP角度考虑,服务注册中心是CP系统还是AP系统呢?
首先,服务注册中心是为了服务间调用服务的,那么绝对不允许因为服务注册中心出现了问题而导致服务间的调用出问题。
再者,假如有node1,node2,node3集群节点,保存着可用服务列表ip1,ip2,ip3,试想如果此时不一致,比如node1只保存了ip1,ip2,
此时调用方读取node1节点,那么会造成什么影响?调用node1的服务,顶多就是负载均衡时不会有流量打到ip3,然后等node1同步回ip3后,
又一致了,这对服务其实没什么太大影响。所以,服务注册中心应该是个AP系统。而zookeeper是个CP系统,强一致性。
- 场景1,当master挂了,此时zookeeper集群需要重新选举,而此时调用方需要来读取服务列表,是不可用的,影响到了服务的可用性。
当然你可以说本地有缓存可用列表,然而下面这种方式就更无法处理了。
- 场景2,分区可用。试想,有3个机房,如果其中机房3和机房1,2之间的网络断了,那么机房3的注册中心就不能注册新的机器了么,这显然也不合理。
### Test
- startup zookeeper
- mvn clean package
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册