`
邢邢色色
  • 浏览: 226064 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ZooKeeper学习之配置【2】存储配置

阅读更多

本文涵盖了更多的高级配置,包括了standalone模式和ensemble模式。不设置它们也能让ZooKeeper工作得很好,但是其中的一些应该需要好好配置一些(比如dataLogDir)。

 

preAllocSize

为每个事务日志文件预分配(preallocate)的大小,单位为kilobyte。(zookeeper.preAllocSize)

当开始写事务日志时,server每次都会分配这个配置项指定的大小的磁盘块。这样可以为文件系统减轻负担,这样就不用在更新元数据或者追加日志文件空间不够时申请新的磁盘块了。更重要的是,它最小化磁盘寻道的次数。

 

默认此配置项是64M。如果日志文件不会变得更大的话,可以减少这个配置项的值。因为在每一个快照结束时会开始生成一个新的日志文件,如果在两次快照的间隔期间的那个事务日志大小达不到64M的话,那么需要调低这个值,以免造成空间浪费。例如,如果我们每执行1000个事务就生成一次快照,一个事务的大小 平均为100字节,那么把preAllocSize配置成100KB就更合适。默认的preAllocSize的值对于“默认的snapCount值,事务大小 平均值大于512字节”的情况是适用的。

 

snapCount

在两次事务快照之间可执行事务的次数(zookeeper.snapCount)。

当一个ZooKeeper进程服务重启时,它需要恢复之前的状态。这里有2个关于时间的关键因素,一个是读取快照文件花费的时间,另一个是重做快照文件开始生成之后的事务日志的花费时间。经常做一下快照可以减少重做的事务日志的数据量。然而,做快照会对服务的性能有一定影响,即使快照是在一个后台线程去做的。

 

默认的配置值为100000,因为做快照会影响性能,所以最好不要让集群中的所有server同时做快照,只要不同时做快照,那就不会影响处理请求时间。基于这个原因,实际的事务次数是接近于实际的配置值的随机数。

 

注意如果马上要开始做快照的时候发现上一次快照还在执行中,那么就不会开启新的快照,会等待上一次快照结束,再开始新的一次快照。

 

autopurge.snapRetainCount

这是当在清理数据时需要保留的快照文件和事务日志文件的个数。快照和事务日志文件会被定期的清理,很明显,不能清空所有的快照文件,因为以后就不能恢复数据了。这个配置项最小的值为3,同时也是默认值。

 

autopurge.purgeInterval

指定了在2个清理数据间相隔的时间,单位为小时,如果设置为0,那么不会启动自动清理,你只能人工的通过调用zkCleanup.sh脚本来清理数据。

 

fsync.warningthresholdms

如果对磁盘做一次sync耗费的时间超过配置的值的话(单位为毫秒),会在日志中打印一次警告信息(fsync.warningthresholdms)。

 

server会在一个update的事务的ack之前做一个sync操作。如果sync这个系统调用花费了过多的时间,会严重的影响系统性能,默认为1000毫秒。

 

weight.x=n

这个配置项是跟分组配置一起使用的,当组成quorum时会给每一台server分配一个权重(weight)。当投票的时会使用这个值。集群中有时候只需要其中一些server来投票,比如选举leader和atomic broadcast协议。默认的权重为1。如果配置了分组但没有配置权重,那么每台server的权重都为1。

 

traceFile

设置这个选项的话,会把ZooKeeper的操作记录到一个trace文件中,文件的命名方式为File.year.month.day(requestTraceFile)。

 

通过这个文件可以追踪ZooKeeper执行的操作的细节。然而,为了打日志,必须序列化每个操作并写到磁盘。这会消耗CPU和磁盘。切记不要把这个日志打到事务日志的磁盘上。打印这个日志会扰动系统,但可以帮助我们重现问题。还有一点,traceFile的Java system property没有zookeeper前缀。

分享到:
评论

相关推荐

    基于ZooKeeper的配置信息存储方案的设计与实现

    本文提出了一种基于ZooKeeper 的配置信息存储方案。首先介绍了ZooKeeper 的架构和ZooKeeper 的相关概念,然后分析了当前配置信息存储方案的不足;最后重点介绍 基于ZooKeeper 的配置信息存储方案,包括架构和实现...

    zookeeper安装与配置.docx

    Zookeeper集群的安装与配置

    分布式服务框架 Zookeeper -- 管理分布式环境中的数据

    存储描述zookeeper的简介,用于自身日后学习

    从Paxos到Zookeeper

    第二部分(第2~4章)介绍了2PC、3PC和Paxos三种分布式一致性协议,并着重讲解了ZooKeeper中使用的一致性协议——ZAB协议;第三部分(第5~6章)介绍了ZooKeeper的使用方法,包括客户端API的使用以及对ZooKeeper服务...

    zookeeper 3.4.6 API (CHM格式)

    它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户...

    zookeeper-3.4.10

    Zookeeper是一个高效的分布式协调服务,...它不适合用来存储大量信息,可以用来存储一些配置、发布与订阅等少量信息。Hadoop、Storm、消息中间件、RPC服务框架、分布式数据库同步系统,这些都是Zookeeper的应用场景。

    zookeeper.doc

    Zookeeper本质上是一个分布式的小文件存储系统。提供基于类似于小文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理。从而可以用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化...

    zookeeper淘宝实现的监控

    用于zookeeper写日志的目录要有足够大小,并且强烈建议在单独的磁盘(挂载点)上,这是影响ZK性能最大因素之一。 连接数。 注册的Watcher数。 ZNode是否可读,可写。 ZK事件通知的延时是否过大。 围绕以上几点展开,...

    ZKConfig:ZooKeeper 配置管理器的演示

    ZKConfig - 一个动物园管理员配置管理器介绍ZKConfig 是一个简单的演示,用于管理分布式系统的配置。 所有属性都按业务分类并存储在/config/$business_name$ 中。 用户可以通过$business_name$Data.getXXX()获取它们...

    apache-ZooKeeper-3.7.1-bin

    它是一个为分布式应用提供一致性服务的软件,它提供了一个分布式环境中的高可用性、高性能、有序访问的数据存储,可以让分布式应用程序能够实现高效协调。提供的功能包括:配置维护、域名服务、分布式同步、组服务等...

    docker-zookeeper:Zookeeper 的可定制 docker 镜像

    Zookeeper 是从 14.04 之上的 ubuntu 存储库安装的。用法环境变量单节点超简单设置: docker run -d -p 2181:2181 -e ZK_CONFIG=clientPort=2181 -e ZK_ID=1 bobrik/zookeeper聚类与单节点相同,但您应该向ZK_...

    Dubbo和Zookeeper的关系(附代码对比).txt

    它提供了一个可扩展的、高性能的、分布式的键值存储系统,用于存储配置信息、命名空间、分布式同步等数据。 在Dubbo中,ZooKeeper通常用作注册中心,用于服务的发现和管理。当Dubbo服务提供者启动时,它会将自己的...

    zookeeper-基本认知

    ZooKeeper 本质上是一个分布式的小文件存储系统。 通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。 诸如: 统一命名服务(dubbo)、分布式配置管理(solr的配置集中管理)、分布式消息队列(sub/pub)、...

    分布式协调工具-ZooKeeper实现动态负载均衡

    2、Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,zk就能正常服务) 3、Zookeeper所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统> 一名称服务等 4、虽然说可以...

    深入浅出Zookeeper(一)Zookeeper架构及FastLeaderElection机制

    本文来自于技术世界,本文介绍了Zookeeper的架构,并组合实例分析了原子广播(ZAB)协议的原理,希望对您的学习有所帮助。Zookeeper是一个分布式协调服务,可用于服务发现,分布式锁,分布式领导选举,配置管理等。这...

    centraldogma:基于Git,ZooKeeper和HTTP2的高度可用的版本控制的服务配置存储库

    Central Dogma是基于Git,ZooKeeper和HTTP / 2的开源,高可用性和版本控制的服务配置存储库。 它是开源的,并由在下,后者在生产中使用了它。 如何建造 我们使用构建中央教条。 以下命令将编译Central Dogma并生成...

    分布式服务协调框架ZooKeeper

    ZooKeeper是一种为分布式应用所设计的高可用、高性能且一致的开源协调服务框架,它可以实现同步服务,配置维护、命名服务、分布式锁等分布式基础服务。 Zookeeper提供基于类似于文件系统的目录节点树方式的数据存储...

    配置管理方案调研

    Zookeeper是Google的Chubby一个开源的实现,是高有效和可靠的协同工作系统,Zookeeper能够用来leader选举,配置信息维护等,在一个分布式的环境中,需要一个Master实例或存储一些配置信息,确保文件写入的一致性等。

    Patroni是一个使用ZooKeeper,etcd或Consul的PostgreSQL高可用性模板-python

    Patroni 是一个模板,您可以使用 Python 创建自己的定制化、高可用性解决方案,并且为了最大程度的可访问性,分布式配置存储(如 ZooKeeper、etcd 或 Consul)。 希望在数据中心或其他任何地方快速部署 HA ...

Global site tag (gtag.js) - Google Analytics