自从Dubbo将Zookeeper作为服务发现的注册中心,以及Kafa等中间件将Zookeeper作为分布式协调组件,Zookeeper这些年在国内的势头可谓是如雷贯耳。
今天聊聊,Zookeeper真的适合做服务发现吗?
不可否认,Zookeeper是一款极其优秀的分布式协调服务产品。但,Zookeeper也有着极为致命的缺点,使得它并不适合作为注册中心。
Zookeeper是CP系统,但分布式系统更看重AP
Zookeeper在设计之初,选择了CP,放弃了A,也就是说,它舍弃了高可用而选择了高可靠。这就意味着,Zookeeper对网络异常极其敏感,一旦出现网络
问题,整个Zookeeper集群便很容易进入选举状态。而此时,整个集群是不可用的。
一旦Zookeeper集群不可用时出现了节点信息变动,Watch监听者是无法感知的,这将会为业务系统带来极为可怕的后果。
Zookeeper的容量有限
Zookeeper原本就不是为存储大容量数据而设计的。
在Zookeeper的官方文档中,便有如下一段话。
ZooKeeper was not designed to be a general database or large object store. Instead, it manages coordination data. This data can come in the form of configuration, status information, rendezvous, etc. A common property of the various forms of coordination data is that they are relatively small: measured in kilobytes. The ZooKeeper client and the server implementations have sanity checks to ensure that znodes have less than 1M of data, but the data should be much less than that on average.
大致意思是,Zookeeper有一个校验,一个节点数据的大小,不能超过1M。
更为关键的是,Zookeeper没有做数据分片。也就是说,每台Zookeeper节点,都保存着全量的数据。
那么,一旦容量出现瓶颈,我们无法通过水平扩展来扩大Zookeeper的数据容量。
所以,一旦你的微服务过多,Zookeeper的容量缺点便会成为致命问题。
标签:服务,容量,Zookeeper,适合,真的,data,节点 From: https://www.cnblogs.com/kingcode/p/18142014