zookeeper可谓是今朝利用最遍及的漫衍式组件了。其成果和职责单一,但却很是重要。
在现今这个年月,先容zookeeper的书和文章可谓不足为奇,本人鄙人,试图通过本身的领略来先容zookeeper,但愿通过一个初学者的视角来进修zookeeper,以期让人越发深入僻静稳的领略zookeeper。个中参考了不少教程和书,相关书目列在文末,也感激这些作者。
进修新的框架,先让我们搞清楚他是什么,这是它的内在。然后再先容它能做什么,这是它的外延,内在和外延配合来界说框架自己,会对框架有较为深刻的领略,在应用层面上知道如何用。其次再搞清楚zookeeper相关的理论基本,其目标是知道zookeeper是如何被发现的,是否可以或许警惕以便此后本身可以或许用到其他处所。最后搞清楚zookeeper中一些设计的道理和细节,目标也是搞清来龙去脉,学会“术”从而应用到此外处所。虽然了,加深的领略同样可以或许辅佐认识zookeeper自己,在利用时才知道为什么这样用。
首先,
zookeeper到底是什么?
zookeeper实际上是yahoo开拓的,用于漫衍式中一致性处理惩罚的框架。最初其作为研发Hadoop时的副产物。由于漫衍式系统中一致性处理惩罚较为坚苦,软件开发,其他的漫衍式系统没有须要 费劲反复造轮子,故随后的漫衍式系统中大量应用了zookeeper,劳务派遣管理系统,以至于zookeeper成为了各类漫衍式系统的基本组件,其职位之重要,可想而知。著名的hadoop、kafka、dubbo 都是基于zookeeper而构建。
要想领略zookeeper到底是做啥的,那首先得领略清楚,什么是一致性。
所谓的一致性,实际上就是环绕着“瞥见”来的。谁能瞥见?可否瞥见?什么时候瞥见?举个例子:淘宝靠山卖家,在靠山上架一件大促的商品,通过处事器A提交到主数据库,假设刚提交后立马就有用户去通过应用处事器B去从数据库查询该商品,就会呈现一个现象,卖家已经更新乐成了,然而买家却看不到;而颠末一段时间后,主数据库的数据同步到了从数据库,买家就能查到了。
假设卖家更新乐成之后买家立马就能看到卖家的更新,则称为强一致性;
假如卖家更新乐成后买家不能看到卖家更新的内容,则称为弱一致性;
而卖家更新乐成后,买家颠末一段时间最终能看到卖家的更新,则称为最终一致性。
更多的一致性例子可以参考文献2,内里罗列了10种一致性的例子,假如要给一致性下个界说,可以是漫衍式系统中状态或数据保持同步和一致。出格需要留意一致性跟事务的区别,可以记得进修数据库时出格强调ACID,故而满意ACID的数据库可以或许干事务,个中C等于一致性,因此,事务是一致性的一种特例,比起一致性更难告竣。
如何担保在漫衍式情况下数据的最终一致,这个就是zookeeper需要办理的问题。对付这些问题,有哪些挑战,zookeeper又是如何办理这些挑战的,下一篇文章将会主要涉及这个主题。
一些常见的办理一致性问题的方法:
zookeeper到底能做什么?
在业界的实际应用是什么?相识这些应用,会对zookeeper可以或许做的事有更直观的认识。
鼻祖级应用,ResourceManager在整个hadoop中算是单点,为了实现其高可用,分为主备ResourceManager,zookeeper在个中打点整个ResourceManager。
可以想象,主备ResourceManager最初是主RM提供处事,假如一切安好,则zookeeper无用武之地。然而,总归会呈现主RM提供不了处事的环境。于是会呈现主备切换的环境,而zookeeper正是为主备切换保驾护航。
先来推理一下,主备切换会呈现什么问题。传统的主备切换,可以让主备之间维持心跳毗连,一旦备机发明主机心跳检测不到了,则本身切换为主机,本来的主机期待救助。这种方法有两个问题,一是由于网络发抖,负载过大等问题,备机检测不到心跳并不能说明主机必然挂了,有大概一按时间后主机或网络规复,这时候主机并不知道备机已经切换为主机,2台主机相互争用,大概造成脑裂;二是假如一些数据会合在主机上面,则备机切换时由于同步延时势必会损失掉一部门的数据。