我们应该不应该用ZooKeeper?

最近一年多,跟ZooKeeper打了挺多交道,阅读了一部分ZooKeeper的源代码,也学习到了不少知识,包含Java面向对象设计、分布式一致性协议等等。ZooKeeper基于github和JIRA的开发流也让我觉得挺惊艳的。从开源角度讲,ZooKeeper的质量可能尚可,而且我们也不应该指望开源的项目能有多高质量。如果目的是学习的话,ZooKeeper无疑是一个好的代码库,但是企业级应用的话,ZooKeeper还是有很多问题。

  • Bug数量太多。具体可以参考ZooKeeper在JIRA上的bug列表。而且有相当一部分bug非常致命,包括我提的这个 bug,可能导致在机器挂掉后,选主无法成功!甚至3.4.X版本之前还有几个很严重的一致性问题(要知道ZooKeeper的设计目的就是保证一致性的)。
  • 无法动态配置集群大小。这个问题已经持续很久了,虽然新的3.5版本据说添加了这个特性。但是3.5目前还处于beta版本,正式release不知道要到什么时候了,估计得到2019年了。
  • 业务级应用,通常对高可靠的要求非常高,在极端条件下,数据都不能出错。例如硬盘空间满、网络闪断、多网卡、机器重启。这些环境下,ZooKeeper的测试覆盖可能不足。例如硬盘空间满后,ZooKeeper服务挂掉,并且重启后不能恢复(非必现)。多网卡是最近我提了一个patch后,才算能正常支持。
  • 整体而言,社区的ZooKeeper开发者,还是很勤奋的,基本上一直保持更新的节奏,但是还是让人非常不放心。

该自己造轮子,还得自己造。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、ZooKeeper的背景 1.1 认识ZooKeeper ZooKeeper---译名为“动物园管理员”。动物...
    algernoon阅读 9,163评论 1 106
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,143评论 25 709
  • 我曾在那宽窄巷子, 牵手一株老柳, 愿我柔美的十指, 与它紧紧相扣, 留住余下的时光, 守在巷的尽头, 伴那少年的...
    天山木兰阅读 294评论 0 0
  • 经过了将近30个小时旅途的我很快进入了梦乡。原本我还和我的商丘朋友商量两个人轮番睡觉,以避免小偷的光顾。可是人一旦...
    重生之路111阅读 765评论 0 0