bookkeeper安装及测试体验

随着zookeeper 3.4.0 release,bookkeeper被从zk中分离成为了一个独立的项目。这是一个轻量级的项目,代码并不复杂,可以想见未来很可能被广泛用在各种应用系统中,以提供基于日志的高可靠共享消息存储。
bookkeeper是一个基于zookeeper实现的分布式共享消息存储服务,它提供高可靠性、高并发性,以及很高的读写性能。
向bookkeeper写数据时,先写log,然后再写内存,内存中的数据则定期flush到磁盘上。
这篇blog提供一个简单的入门手册,下篇blog进行一些简单的分析。
安装(以trunk为例):
[list=1]
[*]下载https://svn.apache.org/repos/asf/zookeeper/bookkeeper/trunk
[*] 编译:mvn package
[*] 编译完以后,我们主要关注bookkeeper-server以及bookkeeper-benchmark
[*] 先配置和启动zookeeper,不提
[/list]

进入bookkeeper,通过bin/bookkeeper bookie可以启动集群。不过在此之前我们先修改一下conf/bk_server.conf
bookiePort=3181
journalDirectory=/disk1/bookkeeper/bk-txn (write ahead log目录)
ledgerDirectories=/disk2/bookkeeper/bk-data (data 目录,注意我们与log放在不同的磁盘,以提高写速度,目前的多目录有点坑爹,代码里硬编码了只用第一个目录,应该是个bug)
zkLedgersRootPath=/ledgers (zookeeper上的根结点)
flushInterval=100 (数据刷新到磁盘的间隔)
zkServers=192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181
serverTcpNoDelay=true (tcp参数,如果都是几十字节以下的小请求且tps很高,可以设为false)


ok,将配置复制到所有的bookie节点上,每台节点上执行bin/bookkeeper bookie,启动完成

测试代码:
可以参照benchmark下的TestClient.java,
注意:
[list]
[*] 传入BookKeeper的初始参数是zookeeper的地址而不是bookkeeper
[*] 为了提高性能,write要用异步且用回调来确认是否写入成功,LedgerHandle要保证在写入中能平均分配到
[/list]

测试结果参考:
用了和白皮书上不同的机器配置(白皮书上的测试结果见:[url]http://wiki.apache.org/hadoop/BookKeeperPerfPage[/url])
我的测试配置:3台zk机器,5台bookie机器。且相互独立。client只用了一个,也独立
bookie服务器配置:2块7.5k转速,1TB seta,8core 超线程到16 E5620, 24GB内存
replication为2,集群数为3和5时,50个LedgerHandle,共写入100w行数据。测试结果如下:
[table]
|集群数|数据大小|tps|
|3|50B|117k/s|
|3|100B|82.8k/s|
|3|500B|51.9k/s|
|3|1KB|33.6k/s|
[/table]
[table]
|集群数|数据大小|tps|
|5|50B|119k/s|
|5|100B|107k/s|
|5|500B|55.8k/s|
|5|1KB|34.7k/s|
[/table]

实际测试时,观察到在50和100B的时候,client的cpu到了瓶颈,在500/1000B下,client的网卡到了瓶颈。可见server端还是有很大空闲的。并发性能还没有测试。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值