上一篇介绍了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的名字。这样在分布式环境下,或者在恢复数据的时候,就能知道数据在哪些服务器上了,解决了数据路由的问题
当发起写请求时,client提供一个id,然后先将数据路由到对应的服务器上,在该服务器上先追加到log中,然后内存中记录一下,就返回给client。如果是用异步调用的方法,client可以通过回调函数及id来确定数据是否写成功。由于write ahead log是顺序写,所以速度很快。同时,server端会定期将内存中的数据flush到磁盘(默认100ms)。这个过程中会生成索引,索引是以id的ascii码来排序建立两级目录,在二级目录下存放相应数据对应的数据文件中的offset。读请求会通过该id获取索引目录,从而获取数据的offset,来读到相应的数据。
当一台server挂掉时,如果replication为2,那么client会在第一次读失效时,自动路由到它的备机去读取数据。因此bookkeeper有一定的故障恢复保障。提高replica因子,数据安全性就随之提高了。恢复数据会根据sequenceId从log中恢复到data中,这一点和大多数系统,比如hbase都是类似的。
- 大小: 26.2 KB
分享到:
相关推荐
通过分析和调试`zookeeper-3.3.3-bookkeeper.jar`中的代码,我们可以了解到以下知识点: 1. **BookKeeper的数据模型**:BookKeeper将日志分割成多个称为Ledger的逻辑单元,每个Ledger由一系列Entry组成。这种结构...
此外,BookKeeper的设计使得它能够线性地扩展,通过简单地增加Bookie节点的数量,就能够提升整个系统的存储容量和读写吞吐量。 在实际应用中,除了HDFS的NameNode,BookKeeper还被广泛应用于其他需要高性能日志存储...
《Apache BookKeeper 4.3.0 源码解析》 Apache BookKeeper是一个高性能、分布式日志服务,它是Apache Pulsar、Apache ZooKeeper等项目的重要组成部分,尤其在大数据和流处理领域有着广泛的应用。在学习Hadoop生态...
Apache BookKeeper是Apache软件基金会的一个开源项目,主要设计用于提供持久化的、高可用的数据存储服务,尤其适合大数据和实时流处理场景。它被广泛应用于Apache Pulsar等消息流平台,作为其底层存储引擎,确保数据...
BookKeeper(BK)启动流程 文章目录BookKeeper(BK)启动流程解析命令行参数构建bookie所需的服务构建状态(指标)服务构建BookieService构造内存分配器构造NettyServer构建Bookie BK的启动入口类是Main,Main有一个...
《分布式框架:深入理解Bookkeeper 4.2.2源码》 Apache BookKeeper是一个开源的、分布式的、可靠的顺序持久...通过对源码的分析,我们可以深入了解分布式系统的内在机制,提高自己在高并发、高可用环境下的编程能力。
《PyPI官网下载 | Bookkeeper-0.0.2.tar.gz》 在Python的世界里,PyPI(Python Package Index)是官方的软件仓库,它为全球的Python开发者提供了丰富的第三方库资源。PyPI允许开发者发布自己的Python软件包,使得...
本文将深入探讨BookKeeper,它是Apache Pulsar的数据存储实现,同时也是Apache的一个独立项目,专注于提供低延迟、高可用性的日志服务。 BookKeeper作为Pulsar的底层存储引擎,它的设计目标是为实时数据流处理提供...
Java Spring Boot的Bookkeeper应用程序 欢迎使用Bookkeeper-使用此应用程序,您可以帮助我们建立起庞大的书籍,作者,体裁和出版商数据库! 所有信息均可通过下面列出的GET端点公开获得。 要为数据库做出贡献,并...
Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性...
BookKeeper是可靠的复制日志服务。 它可用于将任何独立服务转变为高可用性的复制服务。 BookKeeper具有高可用性(无单点故障),并随着添加更多存储节点而水平扩展。bookkeeper/bookkeeper-4.13.0
个人或者企业都适用的桌面记账软件,灵活易用,可以通过设置配置满足大多数的应用要求,霏凡已有更新版本!!!!,霏凡已有更新版本!!!!,霏凡已有更新版本!!!!
为了高效的顺序写入,较好的容错性和可扩展性,设计了BookKeeper。它的结构由他们组成:Bookie(存储节点),Ledger(日志文档),Ensemble(用一组Bookie存储Ledger)。