Zookeeper
文章平均质量分 78
array020
这个作者很懒,什么都没留下…
展开
-
ZooKeeper学习之运维工具zkweb
这是淘宝上的开源项目,地址:http://code.taobao.org/p/zkweb/wiki/index/ 这是一个Java写的web应用程序,可以通过浏览器查看,管理ZooKeep上的数据,可以方便管理。此外还有一些其他的类似程序,先不去看了,这个暂时能满足需求了。简单起见以我整理的程序为准开始部署,请下载附件中的程序。 1,导入程序这是一个Maven项目,所以原创 2015-01-04 16:17:59 · 15687 阅读 · 0 评论 -
ZooKeeper学习之关于Servers和Watches
watch是由read operation设置的一次性触发器,由一个特定operation来触发。为了在server端管理watch,ZK的server端实现了watch manager。一个WatchManager类的实例负责管理当前已被注册的watch列表,并负责触发它们。所有类型的server(包括standalone,leader,follower和observer)使用同样的方式处理...2014-06-25 17:05:41 · 120 阅读 · 0 评论 -
ZooKeeper学习之关于Servers和Sessions
Session是Zookeeper的一个重要的抽象。有序的保证,ephemeral znode,watch都与session紧紧关联。session的跟踪机制也是很重要的一块。 ZooKeeper server的一个重要任务就是跟踪并维护这些session。运行于standalone模式下的单独的server会维护所有的session,而在quorum模式下由leader来维护。l...2014-06-26 10:15:18 · 189 阅读 · 0 评论 -
ZooKeeper学习之关于Client和序列化
关于client 在client library中有2个主要的类:ZooKeeper和ClientCnxn。ZooKeeper类实现了大部分API,写client应用程序时必须实例化这个对象来建立一个session。一旦建立起一个session,ZooKeeper使用一个ID来关连这个session。这个ID实际上是由server side生成的(参考SessionTrackerImp...2014-06-26 10:49:31 · 169 阅读 · 0 评论 -
ZooKeeper学习之运维工具zktop
如果你喜欢命令行式交互型的监控,不妨使用这个小工具。 github地址:https://github.com/phunt/zktop SummaryThis project provides a unix “top” like utility for ZooKeeper.提供类似top的命令 ExampleRunning:./zktop.py --ser...2014-06-26 11:27:24 · 343 阅读 · 0 评论 -
ZooKeeper学习之运维工具zkweb
这是淘宝上的开源项目,地址:http://code.taobao.org/p/zkweb/wiki/index/ 这是一个Java写的web应用程序,可以通过浏览器查看,管理ZooKeep上的数据,可以方便管理。此外还有一些其他的类似程序,先不去看了,这个暂时能满足需求了。简单起见以我整理的程序为准开始部署,请下载附件中的程序。 1,导入程序这是一个Maven项目,...2014-06-26 15:48:38 · 337 阅读 · 0 评论 -
ZooKeeper学习之server端实现的基本骨架
在ZK的源码中,leader,follower和observers的代码结构是高度统一的。在实现中主要的抽象就是request processor了。在处理消息的流水线(pipeline)中有很多不同的阶段,一个request processor代表其中的一个阶段,每一种server类型(无论leader,follower还是observer)实现了某一个特定的request processo...2014-06-27 11:13:51 · 174 阅读 · 0 评论 -
ZooKeeper学习之本地存储(事务日志与快照)
在上一篇的server代码骨架中已提到,当处理proposal时,是由SyncRequestProcessor来处理的,下面就来对这其中的操作做更详细的分析。日志和磁盘使用情况server是使用事务日志来持久化事务的。在accept一个proposal请求之前,server(follower或者leader)把这个proposal以事务的形式持久化到事务日志,按照顺序进行append。...2014-06-27 14:34:40 · 474 阅读 · 0 评论 -
ZooKeeper学习之文件系统的布局和格式
本文来谈谈快照文件,事务日志文件在文件系统中是如何存放的。 写事务日志是事务处理的关键步骤,所以高度建议在一个独立的磁盘上存储。快照不需要在独立的磁盘存储,因为它们是由一个后台线程以懒汉式的(lazily)方式产生的。存储快照的路径是由DataDir参数指定的,事务日志的路径则是由DataLogDir参数指定的。首先来看看事务日志的目录。如果你查看目录的内容,你会看到一个名为ver...2014-06-27 15:47:05 · 234 阅读 · 0 评论 -
ZooKeeper学习之配置【1】基本配置
ZooKeeper的设计对开发人员来说很友好,但同时也对运维人员友好。当集群越来越大时,管理操作也便得复杂起来,稳妥的管理也变得重要起来。ZooKeeper应该是一个标准的分布式系统组件,一个运维团队可以轻松的学习并管理它。虽说ZooKeeper很容易跑起来,但对于一些配置选项必须牢记在心。你应该很熟悉你的ZooKeeper服务,并使用一些管理工具方便的管理它。 为了让一个...2014-06-28 23:07:55 · 138 阅读 · 0 评论 -
ZooKeeper学习之配置【2】存储配置
本文涵盖了更多的高级配置,包括了standalone模式和ensemble模式。不设置它们也能让ZooKeeper工作得很好,但是其中的一些应该需要好好配置一些(比如dataLogDir)。 preAllocSize为每个事务日志文件预分配(preallocate)的大小,单位为kilobyte。(zookeeper.preAllocSize)当开始写事务日志时,server每...2014-06-29 00:52:03 · 224 阅读 · 0 评论 -
ZooKeeper学习之配置【3】网络配置
下面这些配置对client与server之间的连接和超时时间进行了限制。 globalOutstandingLimit这个配置指定了等待处理的最大请求数量的限制(zookeeper.globalOutstandingLimit)。client发送请求的速度可能会比server端处理的速度快,会导致请求在server端排队,最终(在若干秒内)会使server的内存耗尽。为了避免这...2014-06-29 02:24:08 · 229 阅读 · 0 评论 -
ZooKeeper学习之配置【4】集群配置
当配置一个集群时,我们需要为每一个server配置好时间相关的参数,并指定一个server列表,这样server之间就能彼此连接并检测失败。这些配置必须在所有server中保持一致。 initLimit此值的作用是一个follower初始化连接到leader的超时时间,单位是tickTime。当一个follower对leader发起一个初始化连接时,可能会有很多数据要传输,特别...2014-06-29 12:27:59 · 132 阅读 · 0 评论 -
ZooKeeper学习之配置【5】不安全的选项
下面这些选项也许会有用,但使用的时候一定要小心,他们只适用于一些特殊的场景,其中的大多数选项一般是不需要进行配置的。 forceSync决定了写进去的数据是否应该sync到磁盘(zookeeper.forceSync),yes或者no。默认值为yes,在数据被sync到磁盘之前,事务对应的ack不会被发送回leader。sync系统调用很昂贵,且是事务处理中耗时最大的步骤。如...2014-06-29 13:28:37 · 500 阅读 · 0 评论 -
ZooKeeper学习之配置【6】日志配置
ZooKeeper使用SLF4J(the Simple Logging Facade for Java)作为日志的抽象层,默认使用Log4J来做实际的日志工作。使用2层日志抽象看起来真是够呛,这里简要的说明如何来配置Log4J。尽管Log4J非常灵活且强大,但它也有一些复杂,可以用一整本书来描述它,这里只是简要的介绍一下基本的用法。 Log4J的配置文件名为log4j.properti...2014-06-29 14:13:04 · 287 阅读 · 0 评论 -
ZooKeeper学习之Observer模式及其配置
除了leader和follow模式之外,还有第三种模式:observer模式。observer和follower在一些方面是一样的。详细点来讲,他们都向leader提交proposal。但与follower不同,observer不参与投票的过程。它简单的通过接收leader发过来的INFORM消息来learn已经commit的proposal。因为leader都会给follower和obser...2014-06-30 10:20:09 · 1513 阅读 · 0 评论 -
ZooKeeper学习之配置【7】ensemble配置
quorum这个概念深深嵌入了ZooKeeper的设计中,尤其是当处理请求和在replicate模式中进行选举leader时尤为相关。如果ZooKeeper的各个server的quorum起来(up)时,ensemble才能继续(make progress)。Majority Rules当一个ensemble有足够的Zookeeper server时,便能够开始处理请求,可以把这些se...2014-06-30 15:44:03 · 228 阅读 · 0 评论 -
ZooKeeper学习之配置【7】ensemble配置
quorum这个概念深深嵌入了ZooKeeper的设计中,尤其是当处理请求和在replicate模式中进行选举leader时尤为相关。如果ZooKeeper的各个server的quorum起来(up)时,ensemble才能继续(make progress)。Majority Rules当一个ensemble有足够的Zookeeper server时,便能够开始处理请求,可以把这些serv原创 2015-01-04 16:19:06 · 1743 阅读 · 0 评论 -
ZooKeeper学习之配置【6】日志配置
ZooKeeper使用SLF4J(the Simple Logging Facade for Java)作为日志的抽象层,默认使用Log4J来做实际的日志工作。使用2层日志抽象看起来真是够呛,这里简要的说明如何来配置Log4J。尽管Log4J非常灵活且强大,但它也有一些复杂,可以用一整本书来描述它,这里只是简要的介绍一下基本的用法。 Log4J的配置文件名为log4j.properties原创 2015-01-04 16:18:54 · 14405 阅读 · 0 评论 -
ZooKeeper学习之配置【3】网络配置
下面这些配置对client与server之间的连接和超时时间进行了限制。 globalOutstandingLimit这个配置指定了等待处理的最大请求数量的限制(zookeeper.globalOutstandingLimit)。client发送请求的速度可能会比server端处理的速度快,会导致请求在server端排队,最终(在若干秒内)会使server的内存耗尽。为了避免这一点原创 2015-01-04 16:18:36 · 2615 阅读 · 2 评论 -
Kafka学习之producer配置(0.8.1版)
metadata.broker.list 默认值:无,必填格式为host1:port1,host2:port2,这是一个broker列表,用于获得元数据(topics,partitions和replicas),建立起来的socket连接用于发送实际数据,这个列表可以是broker的一个子集,或者一个VIP,指向broker的一个子集。 request.required.acks 默认值原创 2015-01-04 16:19:24 · 1851 阅读 · 0 评论 -
ZooKeeper学习之Observer模式及其配置
除了leader和follow模式之外,还有第三种模式:observer模式。observer和follower在一些方面是一样的。详细点来讲,他们都向leader提交proposal。但与follower不同,observer不参与投票的过程。它简单的通过接收leader发过来的INFORM消息来learn已经commit的proposal。因为leader都会给follower和observe原创 2015-01-04 16:19:00 · 3939 阅读 · 0 评论 -
ZooKeeper学习之关于Servers和Watches
watch是由read operation设置的一次性触发器,由一个特定operation来触发。为了在server端管理watch,ZK的server端实现了watch manager。一个WatchManager类的实例负责管理当前已被注册的watch列表,并负责触发它们。所有类型的server(包括standalone,leader,follower和observer)使用同样的方式处理wa原创 2015-01-04 16:17:35 · 848 阅读 · 0 评论 -
ZooKeeper学习之关于Client和序列化
关于client 在client library中有2个主要的类:ZooKeeper和ClientCnxn。ZooKeeper类实现了大部分API,写client应用程序时必须实例化这个对象来建立一个session。一旦建立起一个session,ZooKeeper使用一个ID来关连这个session。这个ID实际上是由server side生成的(参考SessionTrackerImpl)原创 2015-01-04 16:17:47 · 1435 阅读 · 0 评论 -
ZooKeeper学习之配置【4】集群配置
当配置一个集群时,我们需要为每一个server配置好时间相关的参数,并指定一个server列表,这样server之间就能彼此连接并检测失败。这些配置必须在所有server中保持一致。 initLimit此值的作用是一个follower初始化连接到leader的超时时间,单位是tickTime。当一个follower对leader发起一个初始化连接时,可能会有很多数据要传输,特别是如原创 2015-01-04 16:18:42 · 1175 阅读 · 0 评论 -
ZooKeeper学习之配置【5】不安全的选项
下面这些选项也许会有用,但使用的时候一定要小心,他们只适用于一些特殊的场景,其中的大多数选项一般是不需要进行配置的。 forceSync决定了写进去的数据是否应该sync到磁盘(zookeeper.forceSync),yes或者no。默认值为yes,在数据被sync到磁盘之前,事务对应的ack不会被发送回leader。sync系统调用很昂贵,且是事务处理中耗时最大的步骤。如果设原创 2015-01-04 16:18:48 · 2846 阅读 · 0 评论 -
ZooKeeper学习之文件系统的布局和格式
本文来谈谈快照文件,事务日志文件在文件系统中是如何存放的。 写事务日志是事务处理的关键步骤,所以高度建议在一个独立的磁盘上存储。快照不需要在独立的磁盘存储,因为它们是由一个后台线程以懒汉式的(lazily)方式产生的。存储快照的路径是由DataDir参数指定的,事务日志的路径则是由DataLogDir参数指定的。首先来看看事务日志的目录。如果你查看目录的内容,你会看到一个名为versi原创 2015-01-04 16:18:18 · 5162 阅读 · 0 评论 -
ZooKeeper学习之client connect string的管理
如果我们要写一个ZooKeeper的client程序,那么有一个相关的配置:connect string,它通常以用逗号分隔的host:port对来表示。host可以用一个IP地址或hostname来表示。使用一个hostname提供了一个中间层将服务器标识与实际的IP隔离开来,这样即使管理员变动了ZooKeeper某个server的部署,client端也不会改动。 然而,这种灵活性是有限原创 2015-01-04 16:19:12 · 5208 阅读 · 1 评论 -
ZooKeeper学习之server端实现的基本骨架
在ZK的源码中,leader,follower和observers的代码结构是高度统一的。在实现中主要的抽象就是request processor了。在处理消息的流水线(pipeline)中有很多不同的阶段,一个request processor代表其中的一个阶段,每一种server类型(无论leader,follower还是observer)实现了某一个特定的request processor的原创 2015-01-04 16:18:06 · 1274 阅读 · 0 评论 -
ZooKeeper学习之本地存储(事务日志与快照)
在上一篇的server代码骨架中已提到,当处理proposal时,是由SyncRequestProcessor来处理的,下面就来对这其中的操作做更详细的分析。日志和磁盘使用情况server是使用事务日志来持久化事务的。在accept一个proposal请求之前,server(follower或者leader)把这个proposal以事务的形式持久化到事务日志,按照顺序进行append。se原创 2015-01-04 16:18:12 · 1849 阅读 · 0 评论 -
ZooKeeper学习之配置【1】基本配置
ZooKeeper的设计对开发人员来说很友好,但同时也对运维人员友好。当集群越来越大时,管理操作也便得复杂起来,稳妥的管理也变得重要起来。ZooKeeper应该是一个标准的分布式系统组件,一个运维团队可以轻松的学习并管理它。虽说ZooKeeper很容易跑起来,但对于一些配置选项必须牢记在心。你应该很熟悉你的ZooKeeper服务,并使用一些管理工具方便的管理它。 为了让一个Zo原创 2015-01-04 16:18:23 · 968 阅读 · 0 评论 -
ZooKeeper学习之运维工具zktop
如果你喜欢命令行式交互型的监控,不妨使用这个小工具。 github地址:https://github.com/phunt/zktop SummaryThis project provides a unix “top” like utility for ZooKeeper.提供类似top的命令 ExampleRunning:./zktop.py --serve原创 2015-01-04 16:17:53 · 2210 阅读 · 1 评论 -
Kafka学习之consumer配置(0.8.1版)
group.id 默认值:无唯一的指明了consumer的group的名字,group名一样的进程属于同一个consumer group。 zookeeper.connect 默认值:无指定了ZooKeeper的connect string,以hostname:port的形式,hostname和port就是ZooKeeper集群各个节点的hostname和port。 ZooKeep原创 2015-01-04 16:19:30 · 17246 阅读 · 0 评论 -
ZooKeeper学习之关于Servers和Sessions
Session是Zookeeper的一个重要的抽象。有序的保证,ephemeral znode,watch都与session紧紧关联。session的跟踪机制也是很重要的一块。 ZooKeeper server的一个重要任务就是跟踪并维护这些session。运行于standalone模式下的单独的server会维护所有的session,而在quorum模式下由leader来维护。lea原创 2015-01-04 16:17:41 · 782 阅读 · 0 评论 -
ZooKeeper学习之配置【2】存储配置
本文涵盖了更多的高级配置,包括了standalone模式和ensemble模式。不设置它们也能让ZooKeeper工作得很好,但是其中的一些应该需要好好配置一些(比如dataLogDir)。 preAllocSize为每个事务日志文件预分配(preallocate)的大小,单位为kilobyte。(zookeeper.preAllocSize)当开始写事务日志时,server每次都原创 2015-01-04 16:18:30 · 1584 阅读 · 0 评论 -
ZooKeeper学习之client connect string的管理
如果我们要写一个ZooKeeper的client程序,那么有一个相关的配置:connect string,它通常以用逗号分隔的host:port对来表示。host可以用一个IP地址或hostname来表示。使用一个hostname提供了一个中间层将服务器标识与实际的IP隔离开来,这样即使管理员变动了ZooKeeper某个server的部署,client端也不会改动。 然而,这种灵活性是...2014-07-01 14:30:12 · 909 阅读 · 0 评论