bookkeeper简单分析
上一篇介绍了bookkeeper的安装与测试。这一篇介绍一下bookkeeper的结构与原理。
这是官网给出的bookkeeper结构:
bookie就是bookkeeper中的节点,ledger则是log file。由于bookkeeper允许数据复制以保障数据的安全,因此会有一组bookie存放相同的ledger,这称为一组quorum。client的写请求是完全并发向这一组quorum中的bookie发起的。
client先要声明一个或多个ledgerhandler来发起写请求,可以为每个ledgerhandler指定要从多少个bookie中选择写到多少台bookie上。比如
bk.createLedger(3,2,DigestType.MAC, new byte[] {'a', 'b'})意思是从3台固定的bookie中按roundrobin方法挑选2台服务器,分别存放数据的一个副本。这里的roundrobin就是取模循环。同时,ledgerhandler会在zk上创建一个node,用来存放它自己所选取的3台server的名字。这样在分布式环境下,或者在恢复数据的时候,就能知道数据在哪些服务器上了,解决了数据路由的问题