zookeeper实战一

项目当中用过zookeeper但是对zookeeper仍然是一知半解,zookeeper对于一个成熟分布式框架,在实际的生产环境扮演者举足轻重的作用,先浅谈一下对zookeeper的理解,zookeeper是为了解决多服务器的协同合作,并解决脏数据而应运而生的。在没有zookeeper之前,Google有自己的chubby也是分布式框架,可惜的是没有开源,随后雅虎开发了zookeeper并把这个源代码奉献给了apache,这里为雅虎点赞,在没有分布式框架的时候,我们都知道网络服务是不安全的,并在多服务的情况下(不同的主机中),当CLIENT同时发出俩个请求,a=1另一个请求a=2,在不同服务器很容易造成1服务器先是接受请求,但是返回却迟于2服务器,那么最后的结果到底是1还是2呢?让我们来看看zookeeper是怎么来解决这个问题的,首先得明白zookeeper的角色,zookeeper有三个角色  leader,follow,watch。在zookeeper中只有一个leader,leader统一提出请求,这里有一个特殊的地方,当CLIENT同时发出俩个请求的时候leader统一管理,并一个接着一个接受处理,而且同时不接受俩个修改操作,这样就是很好的避免脏数据的产生,可是接下来又会出现另一个问题,当zookeeper中的leader死亡了,整个服务不就都死了,这里就加入的第三个角色watch,每个follow都有一个watch,当leader死亡,下一个follow就会成为了leader,zookeeper提出了一个znode的数据结构树结构   /zooker/n_0      /zookee/n_1   假设当leader死亡,leader为n_0   那么作为离leader最近的n_!就成了新的leader,这其中watch就起到的重要的作用,上文说道每个leader都有自己的watch,而watch监控的规整就是监视上一个server,并随时取而代之。

你可能感兴趣的:(zookeeper)