认识Apache Bookkeeper

认识Apache BookkeeperApacheBookke 简介 Apachebookke 是一个分布式 可扩展 容错 多副本 低延迟的存储系统 其提供了高性能 高吞吐的存储能力 Bookkeeper 实现了 append 方式的写操作 Bookkeeper 有一个非常成功的应用案例 apachepulsar 是近年雅虎开源的一个 MQ pulsar 相对于 kafka 来说 在存储上有优势 kafka 的单个 partition 的存储容量受到了部署 kafka 的 broker 的硬盘容量限制 当有大量的数据需要 MQ 支持时 partitio

Apache Bookkeeper简介

Apache bookkeeper是一个分布式,可扩展,容错(多副本),低延迟的存储系统,其提供了高性能,高吞吐的存储能力。Bookkeeper实现了append方式的写操作。

Bookkeeper有一个非常成功的应用案例:apache pulsar,是近年雅虎开源的一个MQ,pulsar相对于kafka来说,在存储上有优势,kafka的单个partition的存储容量受到了部署kafka的broker的硬盘容量限制,当有大量的数据需要MQ支持时,partition可能会遇到瓶颈而无法扩展。当然可以预先增加partition的数量和broker的数量来满足MQ的存储需求,但是当消息需要存储的时候相对较长或者数据量非常多之后,比如存储一个月,需要按月做数据的回拉跑计算任务,这种场景对kafka的集群来说是有非常大的浪费的,因为我们需要的是更多的存储,不是更多了broker的能力,bookkeeper为pulsar提供了存储计算分离的架构支持,存储和pulsar的broker能分别扩展,这是kafka不具备的

基本概念

  • Entry:Entry是存储到bookkeeper中的一条记录
  • Ledger:可以认为ledger是用来存储Entry的,多个Entry序列组成一个ledger
  • Bookie:一个Bookie就是bookkeeper的一台存储服务器,用于存储ledger,一般来说存储的是ledger的一段,因为存储是分布式的,每个ledger会存储在多个bookie上
  • MetaData Storage:元数据存储,是用于存储bookie相关的元数据,比如bookie上有哪些ledger,bookkeeper目前使用的是zk存储,所在在部署bookkeeper前,要先有zk集群
  • 数据存储文件与缓存:
    • Journal:其实就是bookkeeper的WAL(write ahead log),用于存bookkeeper的事务日志,journal文件有一个最大大小,达到这个大小后会新起一个journal文件
    • Entry log:存储entry的文件,我理解ledger是一个逻辑上的概念,不同ledger中的entry会先按ledger聚合,然后写入entry log文件中。同样,entry log会有一个最大大小,达到最大大小后会新起一个新的entry log文件
    • Index file:ledger的索引文件,ledger中的entry被写入到了entry log文件中,索引文件用于邓颖超entry log文件中每一个ledger做索引,记录每个ledger在entry log中的存储位置以及数据在entry log文件中的长度
    • Ledger cache:用于缓存索引文件的,加快查找效率
  • 数据落盘:内存中会存储一个LastLogMark,其中包含txnLogId(journal文件的id)和txnLogPos(journal文件中的位置),entry log文件和index文件都会先在内存中被缓存,当内存达到一定值或者离上一次刷盘过期了一段时间(定时线程)后,会触发entry log文件和index文件的刷盘,之后再将LastLogMark持久化,当lastLogMark被持久化后,表示在lastLogMark之前的entry和索引都已经写到了磁盘上,这个时候可以将lastLogMark之前的journal文件清掉,如果LastLogMark在持久化前出现了宕机,可以通过journal文件做恢复,保证了数据不丢
  • Data Compaction:数据的合并,有点类似于hbase的compact过程。在bookie上,虽然entry log在刷盘前会按ledger做聚合,但是因数数据会不断的新增,每个leadger的数据会交差存储在entry log文件中,而bookie上有一个用于做垃圾回收的线程,该线程会将没有关联任何ledger的entry文件进行删除,以便回收磁盘空间,而compaction的目的则是为了避免entry log中只有少数的记录是有关联的ledger的情况,不能让这样的entry log文件一直占用磁盘空间,所以垃圾收集线程会将这样的entry log中有关联ledger的entry复制到一个新的entry log文件中(同时修改索引),然后将老的entry log文件删除。与hbase类似,bookkeeper的compaction也分为两种:
    • Minor compaction:当entry log中有效的entry只占20#以下时做compaction
    • Major compaction:当entry log中有效的占到80%以下时就可开始做compaction

提供的API

Bookkeeper提供了两个层次的api:

  • Ledger API:用于直接操作ledger,相对比较复杂,是bookkeeper提供的底层api
  • Distributed Log:分布式log,是基于ledger api的高层次api,相对更简单易用

分布式Log架构:

 

认识Apache Bookkeeper

 

分布式log api写入的log,会以写入相同的顺序存储在bookkeeper上:

 

认识Apache Bookkeeper

Bookkeeper的适用场景

  • WAL:bookkeeper可作为wal方案
  • 流存储:比如pulsar通过bookkeeper存储消息
  • 对象/Blob存储
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223812.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午1:23
下一篇 2026年3月17日 下午1:23


相关推荐

  • js单例_简单工厂模式是静态的工厂模式

    js单例_简单工厂模式是静态的工厂模式学好设计模式,让你的逻辑活起来

    2022年8月16日
    7
  • QQ群关系可视化3D查询搭建[通俗易懂]

    QQ群关系可视化3D查询搭建[通俗易懂]一、配置数据库(需要300GB以上磁盘剩余空间)下载并安装SqlServer2008R2,配置好用户名以及登录密码,如果远程连接数据库的话,需配置数据库允许远程登录(SqlServer数据库配置请自行

    2022年7月2日
    77
  • springboot afterproperties(管理方法)

    在看用redis实现异步消息队列时,遇到了注册Event,其中看到了afterPropertiesSet。然后查博客,记录下。一、简单介绍1、init-method方法,初始化bean的时候执行,可以针对某个具体的bean进行配置。init-method需要在applicationContext.xml配置文档中bean的定义里头写明。例如:这样,当TestBean在初

    2022年4月18日
    58
  • 软件测试的出路

    软件测试的出路先说结论 测试肯定是以后的大趋势 前景很好 但是前景好针对的是技术好的人 这个行业深刻的践行了一句话 学如逆水行舟 不进则退 并且退了基本就只能退出这个行业 为什么这么说 18 年后 很多大公司及创业公司都在调整和优化自己的团队结构 特别是对于大厂来说 并不是简单地裁人 而是裁掉普通的手工测试 然后用更高的薪水去吸纳其他技术更好的自动测试及测试开发人员 在这个过程中 原有的一大部分测试人员被筛出来 在一段时间内外行人以为测试这个行业已经在缩水 呈现一种正在衰落的假象 但其实在行业内由于核心人才的紧缺及薪资

    2026年2月7日
    2
  • C程序设计谭浩强第五版课后答案 第三章习题答案

    C程序设计谭浩强第五版课后答案 第三章习题答案C 语言程序设计谭浩强第五版课后答案第三章 1 假如我国国民生产总值的年增长率为 7 计算 10 年后我国国民生产总值与现在相比增长多少百分比 计算公式为 p 1 r np 1 r np 1 r n 其中 r 为年增长率 n 为年数 p 为与现在相比的倍数 题目解析 此题的关键主要是利用数学库 math 中 pow 函数进行计算 若不熟悉可以查阅帮助文档 查看 pow 函数的用法 代码示例 include stdio h include math h intmain math h stdio h

    2026年3月17日
    1
  • eplan破解后又出现激活码(注册激活)

    (eplan破解后又出现激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~HCIQ56F36O-eyJsaWNlbnNlSWQiOi…

    2022年4月1日
    656

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号