Zookeeper:分布式协调王者的崛起与变迁

时间:2024-05-02 14:51:26 推荐 664

开篇阐述:

Zookeeper的寓意与角色定位

Zookeeper(简称zk)那个名字颇具象形意义,如同动物园治理员般,它在Hadoop生态系统那个多彩动物园内,真的在有序地治理着包括Hadoop(象征大象)、HBase(象征鲸鱼)等各种“动物”。实际上,不仅限于此,zk还深受Storm、Kafka等外部用户的信赖。在分布式环境中,zk广泛应用在数据发布/订阅、命名服务、配置中心、分布式锁、集群治理和主从选择及服务发现等多个场景。

Zookeeper的封神历程

在大数据时代初创之际,传统的数据库巨头Oracle、MySQL以及PostgreSQL面对爆发式增长的数据资源(DATA)显得束手无策。如今,大数据大陆上的居民们团结协作,构建起像Hadoop联邦、HBase联邦等各类联合体,由统一的"国王"(master)领导下的诸多"城池"(worker)协同处理和利用DATA资源。

大数据联邦之所以能更好地应对DATA挑战,关键在于随DATA规模扩大,它们可经过合并"城池"扩容,有效地抵消数据压力。但是,随之而来的咨询题亦日益显现...

遭遇挑战:主节点故障与指令传递困境

当国王(master)发生故障或因网络咨询题孤立时,怎么确保联邦正常运作并选出新任国王成为一大难题。

国王承担决策并直截了当向所有领主(follower)下发指令,但这一模式可能导致国王不堪重负,并且网络咨询题或领主异常状态会妨碍指令传递,若任其进展,则联邦的整体协作将受到严重阻碍。

正当大数据联邦成员们为此苦恼之际,议会(Zookeeper)应运而生,它以其卓越的解决方案赢得了普遍欢迎,并开启了封神之路。

选举新国王:MasterFailover策略

议会设立了一把代表国王身份的"权杖"——Zookeeper临时锁。取得权杖者即成为新国王,并引领各方处理DATA事务。

各领主一边协助国王处理DATA,一边密切关注议会中的新权杖动态,并时间准备争夺。与此并且,议会持续监控国王状态,一旦国王失去联系,议会马上启动新国王选举流程。

权杖失效,议会重新生成新权杖,领主们一拥而上,首位夺得权杖者便成为新国王,整个过程周而复始,确保联邦稳定运行。

指令传达:Configuration同步与治理

议会接过重任,代替国王传达命令,降低了国王的工作负荷。具体做法是国王签署命令后告知议会首脑(Zookeeperleader),后者负责在议会内部同步命令,随后通知领主执行。

领主无需再直截了当向国王申请任务,只需联系议会中的任意议员即可获取命令,从而减轻了国王的压力,也保证了命令传递的安全性和效率。

关于资源DATA的操作,领主可直截了当与议会沟通,但涉及高级操作如建立DATA存储仓库(NOSQL表)还需国王参与,但国王处理后仍将相关命令存入议会供领主使用。

得益于议会的有效协调,各大数据联邦得以缓解痛点,逐渐成为行业标准,步入辉煌期。

昔日荣光与今朝变革

但是,随着时刻推移,议会面临新挑战,一些新兴大数据联邦舍弃了它,老牌联邦也开始对其失去信任,试图另寻出路。议会为何失宠?

陨落缘故

直截了当缘故:

由于Zookeeper采取强一致性模型,导致数据同步需要一定时刻。当数据处理压力增大,非常是频繁读写场景下,其性能瓶颈日益凸显,制约了组件的数据处理速度。

Zookeeper作为一个独立集群,需占用资源,且组件若想优化性能或处理流程还需顾忌Zookeeper的支持程度和性能限制,这给组件带来了不稳定因素。

间接缘故:

Raft算法的浮现打破了原有共识算法格局,Zookeeper不再一枝独秀。Raft易于理解与实现,众多类似算法涌现,如Elasticsearch、TiDB、2.8以后的Kafka等,使得Zookeeper的地位遭受冲击。

去中心化的大数据产品(如Cassandra)开始崭露头角,采用gossip协议进行数据同步,不再依赖共识算法,市场份额被进一步瓜分。

结语:兴衰交替,与时俱进

虽然Zookeeper曾是一款出色的协调服务,但在数据量激增和高读写压力的场景下,其力不从心已成事实。此时,新一代大数据组件越来越少使用Zookeeper,而现存使用者(如HBase)也在降低对Zookeeper的依赖,或尝试用Raft等替代方案(如Kafka2.8以后的版本)。

只是,技术的进展算是如此充满魅力,长江后浪推前浪。Zookeeper昔日的辉煌已然载入史册,而我们身为技术人员,唯有不断学习、拥抱新技术、习惯变化,方能在技术浪潮中砥砺前行,扬帆远航!

来源:多特软件站