我的理解是它是可以维护一个服务列表,服务都可以在 zookeeper 中注册,发现。
当程序访问 zookeeper 列表的时候,可以拿到服务信息,然后直接与服务进行通信
那么
如果涉及到传输序列化与反序列化呢,一般搭配什么使用呢?
服务的调用也要涉及到负载均衡吧,一般搭配什么来做负载均衡呢?
新人求教
1
hangszhang 2020-07-06 23:43:06 +08:00
为了方便可读一般就 JSON 吧, Zookeeper 里面不适合存储比较大的数据, 数据要是小的话, 用什么都差不多, 那不如就 JSON.
|
2
hangszhang 2020-07-06 23:49:42 +08:00
Zookeeper 是一个文件结构的数据库, 可以用它来实现你说服务列表, 但是你不能把 Zookeeper 理解为就是一个服务列表, 它只是提供了基础操作让你来实现服务列表, 但是它还是能实现一些别的东西, 比如分布式锁, Master 选举啥的
|
3
billlee 2020-07-07 00:00:46 +08:00
你理解得不对。如果只是维护列表,那 mysql 可以做,redis 也可以做,为什么要用 zookeeper 呢?
你要是没有几万台服务器,可能 redis 更合适 你问的两个问题都和 zookeeper 没关系,也和服务无发现没什么关系。 |
4
billlee 2020-07-07 00:03:49 +08:00
Zookeeper 的关键是多节点写入的情况下能保持最终一致,你要是没有几万台服务器,根本不需要在服务发现这这件事上支持多节点读写,主备切换就好了
|
6
liqiangzjhzz 2020-07-07 09:51:29 +08:00
Zookeeper 主要是分区容错,避免整个系统的单点故障瓶颈,最少要部署 3 台。
|
7
chenxiaokang 2020-07-07 15:22:43 +08:00
zookeeper 的应用主要在粗粒度分布式锁,分布式选主,主备高可用切换等不需要高 TPS 支持的场景,服务发现使用 zk 并不是一个好选择
|
8
zxc1234 OP @chenxiaokang 大佬,不然用啥
|