资讯专栏INFORMATION COLUMN

zookeeper小入门(一)

mumumu / 3103人阅读

摘要:好吧,就是给指定的结点里面称之为提供了统一的名称。分布式锁服务这个特性是最吸引我的特性了,如何实现分布式锁呢,就是使用提供的有序且临时的特性实现。当然详细的可以参照分布式锁避免羊群效应这篇文章,同时写了如何避免羊群效应。

最近想学东西,于是就又拿起前段时间因为“没时间”而落下的zookeeper啃了起来,第一次啃完教程发现什么都不明白,第二次啃完发现,这东西,就这么"简单"的东西啊?

先来摘抄一段让人十分讨厌又不得不看的概述

  

Zookeeper是针对大型分布式系统的高可靠的协调系统。由这个定义我们知道zookeeper是个协调系统,作用的对象是分布式系统。

好吧,第一次看完这句话,协调两个字吸引我,其他都是废话。众所周知分布式的系统非常难以管理,如果开发一个master又会碰到同步等各种多线程(进程)碰到的问题,zookeeper给了我们什么勇气能让我们搞定这个事情,那么答案如下:

zookeeper的特性

  

每时每刻我们访问zookeeper的树时, 相同节点返回的数据都是一致的.

OK,那行,我相信你了啊:P。上面这句话意味着我们对Zookeeper进行访问的时候,无论是什么时间(就是并发)访问的时候,不会引起脏读重复读等等(真的是这样么?其实心中还有点疑虑)。

好吧,暂且抛开疑虑,让我们看一下zookeeper的本质。说白了zookeeper的数据结构你可以看成是linux的文件系统(是不是这么说太简单粗暴),依照这种方式,zookeeper提供以下几种特性

统一命名服务
  

/zk_test
/zookeeper
/zk_test/dir

这几个路径是不是看上去很眼熟啊~ 这就是zooker的DataModel了。这些用来干嘛用呢?
有些博文里把zookeeper提供的这种命名结构称之为统一命名服务。 好吧,就是给指定的结点(zookeeper里面称之为znode)提供了统一的名称。前提是知道zookeeper是分布式的,而且zookeeper足够稳定,所以你的分布式服务的每一个服务器都可以找到一个统一的配置文件服务(就是这里的一个znode啦),他们在任何时刻读到的内容都是一致的。因此你可以把你的配置文件,或者分布式的服务器列表等数据放入这个znode中,并使用watch监视,如果里面的内容被修改了,那么所有的服务器都会被通知到(这里使用了观察者模式咯)。

分布式锁服务

这个特性是最吸引我的特性了,如何实现分布式锁呢,就是使用zookeeper提供的有序临时的znode特性实现。说白了就是需要锁的程序创建一个临时结点,这个结点会在它断开或者删除的时候被删除,它只用检测下它自己的序号在所有子结点中的序号是不是最小的即可。当然详细的可以参照zookeeper分布式锁避免羊群效应(Herd Effect) 这篇文章,同时写了如何避免羊群效应。

还有其他其他的一些特性。

这些特性都是基于zookeeper可靠的DataModel上来的。官网可能没有应用场景的展现。

以上是Zookeeper的介绍,我想写下一篇去介绍下官网的demo。

文章写的少,文笔好烂,如有错误,请指正,非常感谢非常感谢。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64222.html

相关文章

  • zookeeper入门(二)

    摘要:就是上面提到的变化后执行的程序。这段代码是的构造函数,除了里面的一些赋值函数,重点说下这个函数它有个参数,第一个参数是你要的名字,类似这样的。 昨晚微信开放了JS接口。忙活了一晚上。 然后周六就没啥斗志了,突然想起第二篇说好要介绍demo的没介绍,就赶紧来写了。 先来个 传送门 这里简单介绍了下官方demo。用来演示Zookeeper官方推荐的程序框架(Executor、DataM...

    CoffeX 评论0 收藏0
  • 基于Docker的日志分析平台(三) 快速入门

    摘要:是一个日志收集器,支持非常多的输入源和输出源。这个库支持展开文件路径,而且会记录一个叫的数据库文件来跟踪被监听的日志文件的当前读取位置。 1.Zookeeper 对于Zookeeper我们用一条简单的命令来测试一下: echo ruok|nc localhost 2181 你应该可以看到: imok 2.Kafka Kafka 是由 Linked 开发并且开源的一套分布式的流平台,它类...

    曹金海 评论0 收藏0
  • 基于Docker的日志分析平台(三) 快速入门

    摘要:是一个日志收集器,支持非常多的输入源和输出源。这个库支持展开文件路径,而且会记录一个叫的数据库文件来跟踪被监听的日志文件的当前读取位置。 1.Zookeeper 对于Zookeeper我们用一条简单的命令来测试一下: echo ruok|nc localhost 2181 你应该可以看到: imok 2.Kafka Kafka 是由 Linked 开发并且开源的一套分布式的流平台,它类...

    afishhhhh 评论0 收藏0
  • 什么是ZooKeeper

    摘要:后面听到的时候,是因为可以作为分布式锁的一种实现。二为什么能干这么多从上面我们可以知道,可以用来做统一配置管理统一命名服务分布式锁集群管理。 前言 只有光头才能变强。文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 上次写了一篇 什么是消息队列?以后,本来想入门一下Kafka的(装一下环境、看看Kafka一些概念...

    timger 评论0 收藏0
  • 什么是ZooKeeper

    摘要:后面听到的时候,是因为可以作为分布式锁的一种实现。二为什么能干这么多从上面我们可以知道,可以用来做统一配置管理统一命名服务分布式锁集群管理。 前言 只有光头才能变强。文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 上次写了一篇 什么是消息队列?以后,本来想入门一下Kafka的(装一下环境、看看Kafka一些概念...

    gougoujiang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<