- 浏览: 230087 次
- 性别:
- 来自: 广州
最新评论
-
tss0823:
感谢,解决困惑我的编译问题。
手把手教你用jpcap抓包 -
xueyuan4315:
太酷了
ZooKeeper学习之运维工具zkweb -
NASa_CJ:
“合法的值为sync,表示异步发送;sync表示同步发送。”这 ...
Kafka学习之producer配置(0.8.1版) -
邢邢色色:
lv12312 写道楼主,canary是测试的意思, 金丝雀版 ...
【Netty官方文档翻译】引用计数对象(reference counted objects) -
lv12312:
楼主,canary是测试的意思, 金丝雀版本,就是还没有做好发 ...
【Netty官方文档翻译】引用计数对象(reference counted objects)
文章列表
原文链接:https://cwiki.apache.org/confluence/display/KAFKA/Replication+tools#Replicationtools-3.ListTopicTool
此工具能干啥?
此工具列出了一个指定的topic的列表的信息。如果在命令行中没有提供topic,则会向ZK查询,获得所有的topic并展示它们的信息,其中有topic的名字,partition,leader,replicas,isr。有2个可选的参数。如果设置了under-replicated-partitions参数,则只会展示正在replicate中的topic/partit ...
原文链接:https://cwiki.apache.org/confluence/display/KAFKA/Replication+tools#Replicationtools-2.PreferredReplicaLeaderElectionTool
这工具做了啥?
为了支持replication功能,每一个partition可以有多个replica。一个partition的replica列表称为"assigned replicas"。在这个列表中的第一个replica称为"preferred replica"。当创建topic/partitio ...
原文地址:https://cwiki.apache.org/confluence/display/KAFKA/Replication+tools#Replicationtools-1.ControlledShutdown
controlled shutdown是啥意思?
在0.8版本中,每一个partition可以有多个replica。这些replica分布在多个broker上,提供了高可用。在任意的时间点上,只有一个replica可以提供读和写服务。换句话说,只有一个replica可以充当leader的角色。当一个broker需要关闭时(如果需要升级版本,改变配置参数时需要关闭),那么需 ...
group.id 默认值:无
唯一的指明了consumer的group的名字,group名一样的进程属于同一个consumer group。
zookeeper.connect 默认值:无
指定了ZooKeeper的connect string,以hostname:port的形式,hostname和port就是ZooKeeper集群各个节点的hostname和por ...
metadata.broker.list 默认值:无,必填
格式为host1:port1,host2:port2,这是一个broker列表,用于获得元数据(topics,partitions和replicas),建立起来的socket连接用于发送实际数据,这个列表可以是broker的一个子集,或者一个VIP,指向broker的一个子集。
request.required.acks 默认值:0
用来控制一个produce请求怎样才能算完成,准确的说,是有多少broker必须已经提交数据到log文件,并向leader发送ack,可以设置如下的值:
0,意味着producer永远不 ...
broker.id 默认值:无
每一个broker都有一个唯一的id,这是一个非负整数,这个id就是broker的"名字",这样就允许broker迁移到别的机器而不会影响消费者。你可以选择任意一个数字,只要它是唯一的。
log.dirs 默认值:/tmp/kafka-logs
一个用逗号分隔的目录列表,可以有多个,用来为Kafka存储数据。每当需要为一个新的partition分配一个目录时,会选择当前的存储partition最少的目录来存储。
port 默认值:6667
server用来接受client请求的端口。
zookeeper.co ...
如果我们要写一个ZooKeeper的client程序,那么有一个相关的配置:connect string,它通常以用逗号分隔的host:port对来表示。host可以用一个IP地址或hostname来表示。使用一个hostname提供了一个中间层将服务器标识与实际的IP隔离开来,这样即使管理员变动了ZooKeeper某个server的部署,client端也不会改动。
然而,这种灵活性是有限制的。管理员可以更改集群中的某台机器,但不能是client正在连接的那台。例如,如下图,集群本来有3台机器,后来扩展到了5台,但是client仍然在使用原来那3台机器,而不是所有的机器。
还有 ...
quorum这个概念深深嵌入了ZooKeeper的设计中,尤其是当处理请求和在replicate模式中进行选举leader时尤为相关。如果ZooKeeper的各个server的quorum起来(up)时,ensemble才能继续(make progress)。
Majority Rules
当一个ensemble有足够的Zookeeper server时,便能够开始处理请求,可以把这些server集合称为一个quorum。当然,永远不会想要两个不相交(disjoint)的server集合来处理请求,否则会发生脑裂(split brain)的情况。可通过要求所有的quorum至少拥有一个m ...
除了leader和follow模式之外,还有第三种模式:observer模式。observer和follower在一些方面是一样的。详细点来讲,他们都向leader提交proposal。但与follower不同,observer不参与投票的过程。它简单的通过接收leader发过来的INFORM消息来learn ...
ZooKeeper使用SLF4J(the Simple Logging Facade for Java)作为日志的抽象层,默认使用Log4J来做实际的日志工作。使用2层日志抽象看起来真是够呛,这里简要的说明如何来配置Log4J。尽管Log4J非常灵活且强大,但它也有一些复杂,可以用一整本书来描述它,这里只是简要的介绍一下基本的用法。
Log4J的配置文件名为log4j.properties,从classpath中查找。如果没有找到log4j.properties文件,会输出如下警告信息:
log4j:WARN No appenders could be found for l ...
下面这些选项也许会有用,但使用的时候一定要小心,他们只适用于一些特殊的场景,其中的大多数选项一般是不需要进行配置的。
forceSync
决定了写进去的数据是否应该sync到磁盘(zookeeper.forceSync),yes或者no。
默认值为ye ...
当配置一个集群时,我们需要为每一个server配置好时间相关的参数,并指定一个server列表,这样server之间就能彼此连接并检测失败。这些配置必须在所有server中保持一致。
initLimit
此值的作用是一个follower初始化连接到leader的超时时间,单位是tickTime。
当一个follower对leader发起一个初始化连接时,可能会有很多数据要传输,特别是如果follower的数据很陈旧时,可以根据网络延迟和数据量的大小来决定这个配置。如果数据量很大的话(例如znode的数量很多或者数据很大)或者网络特别慢的话,需要增大这个值。因为这个值跟你的环境相关 ...
下面这些配置对client与server之间的连接和超时时间进行了限制。
globalOutstandingLimit
这个配置指定了等待处理的最大请求数量的限制(zookeeper.globalOutstandingLimit)。
client发送请求的速度可能会比server端处理的速度快,会导致请求在server端排队,最终(在若干秒内)会使server的内存耗尽。为了避免这一点,如果等待的请求数量达到了globalOutstandingLimit,server端会拒绝client的请求。但是这个限制不是hard限制。每一个client至少能有一个outstanding请求 ...
本文涵盖了更多的高级配置,包括了standalone模式和ensemble模式。不设置它们也能让ZooKeeper工作得很好,但是其中的一些应该需要好好配置一些(比如dataLogDir)。
preAllocSize
为每个事务日志文件预分配(preallocate)的大小,单位为ki ...
ZooKeeper的设计对开发人员来说很友好,但同时也对运维人员友好。当集群越来越大时,管理操作也便得复杂起来,稳妥的管理也变得重要起来。ZooKeeper应该是一个标准的分布式系统组件,一个运维团队可以轻松的学习并管理它。虽说ZooKeeper很容易跑起来,但对于一些配置选项必须牢记在心。你应该很熟悉你的ZooKeeper服务,并使用一些管理工具方便的管理它。
为了让一个ZooKeeper服务正确工作,必须正确的配置好它,只有这样,基于ZooKeeper工作的其他分布式产品才能正常工作。例如,所有的ZooKeeper投票服务器必须拥有一致的配置。这是很多人的经验之谈,不 ...