正文
ZooKeeper 很流行,有个基本的疑问:
- ZooKeeper 是用来做什么的?
- 之前没有ZK,为什么会诞生 ZK?
OK,解答一下上面的疑问:(下面是凭直觉说的)
- ZooKeeper 是用于简化分布式应用开发的,对开发者屏蔽一些分布式应用开发过程中的底层细节
- ZooKeeper 对外暴露简单的 API,用于支持分布式应用开发
- ZooKeeper 在提供上述功能的同时,其还是一个 高性能、高可用、高可靠的分布式集群
上面说这么多,总结一下,ZK 能解决分布式应用开发的问题,ZK 能很好的解决问题。到这一步,疑问就更多了:
- 分布式应用开发,有哪些常见问题?ZK 是如何屏蔽这些底层细节的?
- ZooKeeper 对外暴露了那些 API?这些 API 如何支持分布式应用开发的?这些 API 还能简化吗?API 的语义性怎么样?
- ZooKeeper 自身是一个高性能、高可用、高可靠的分布式集群,那有个简单的问题:
- 高性能是指什么?ZooKeeper 为了达到高性能,做了哪些工作?
- 高可用同上
- 高可靠同上
Note:本篇 wiki 就是为了解决上述第一个疑问的。(其他疑问会在其他 blog 中逐步解答)
为什么有 ZooKeeper
一个应用程序,涉及多个进程协作时,业务逻辑代码中混杂有大量复杂的进程协作逻辑。
上述多进程协作逻辑,有 2 个特点:
- 处理复杂
- 处理逻辑可重用
因此,考虑将多进程协作的共性问题拎出,作为基础设施,让 RD 更加专注业务逻辑开发,即:
ZooKeeper 就是上述多进程协作基础服务的一种。
ZooKeeper 的特点
ZooKeeper 有几个简单特点: