首页 > 程序开发 > 综合编程 > 其他综合 >

为什么要用zookeeper?

2017-08-15

为什么要用zookeeper?。首先,为什么用dubbo?不就是因为dubbo能够帮我们解决分布式系统远程接口相互调用的问题吗?那在一个分布式系统中,大量的接口怎么实现相互调用呢,毕竟调用者和被调用者可能在2台不同的机器上。

最近碰到有人问,使用dubbo时为什么要用zookeeper作为注册中心,zookeeper是如何起作用的?

我把我的理解说了一下。

先给他探讨性地说明了一些背景问题:

首先,为什么用dubbo?不就是因为dubbo能够帮我们解决分布式系统远程接口相互调用的问题吗?那在一个分布式系统中,大量的接口怎么实现相互调用呢,毕竟调用者和被调用者可能在2台不同的机器上。

当然,我们有很多办法来实现。最简单的,在配置文件中将所有要调用的接口的地址配置好,要用时通过web的方式调用即可。

但是,但是,,,很多分布式系统之间的调用不是一对多,或者多对一的, 而是一个多对多的网状。即A可能调用B、C、D接口,B也可能调用A、C、D接口,以此类推。如果接口的数量是个位级的(个位级也就不用DUBBO了)还好办,如果是2位的甚至3位级的,那以后维护这些接口将会是一个灾难!为何呢?如果某一接口换了机器IP或者新增了一个将被调用很多的接口,那就是系统性的程序变更了,对一个生产系统来说风险挺大!

好,现在说正题:

如果将一个系统比作一个项目团队,则该系统内的相互接口调用,就类似于团队之间的沟通协作。比如,需求人员员要找开发人员确认需求,开发人员要找测试人员测试需求,测试人员要找需求人员验收需求等等。团队各种不同类型的人员可能来自不同部门。

如果是小团队,大家集中从在一个办公室,有什么事面对面直接沟通即可,这就类似于我们同一工程内接口的调用,直接new对象或通过spring配置的即可。

如果是一个大型团队,大家可能坐在不同办公室甚至不同城市,沟通就只能通过打电话或发邮件了(这里的电话系统或邮件系统就是DUBBO了)。想想看,如果没有一个统一的通讯录,每个人就要自己搞一个通讯本记录自己要沟通的人员的电话或邮件。这个通讯本可能千差万别,有人用纸,有人用笔记本,有人用电脑,有人用手机等等。。。(这里的通讯本记录方式就类似于我们对接口的记录方式,纸和笔记本就类似于直接记在程序中的,电脑和手机类似于记在配置文件中)。万一哪天某一个关键人物的联系方式变了,那大家有得忙了,用电脑和手机的还好,改改就好了。用了纸和和笔记本的,就只能换一张纸甚至换一个笔记本了。而且,让项目经理头疼的是,有些人可能没改或者改错,遇到关键问题时因找不到人发生不可预料事件(类比于我们生产事故)!

那像这种大型团队的沟通问题怎么解决呢?人家说这还不超级简单嘛,搞个统一的通讯录,专人管理,上面记录所有人的联系方式,如果某人联系方式有变动,通知专人修改通讯录即可,然后大家要联系某人时,通过人名查找通讯录不就行了嘛!

对!就是这么简单!zookeeper就是这个通讯录和管通讯录的人!

如果回到我们的系统中,接口名就是人名(不过在dubbo中这个人名不能重复),接口实现就是这个人,接口IP地址就是联系电话或邮件,电话系统或邮件系统就是dubbo!

这么一说,问我的人立即就明白了,zookeeper的作用是不是就很好理解了呵呵。

相关文章
最新文章
热点推荐