BookKeeper存储设计浅析

前言

本文作为Pulsar系列的第二篇文章,主要介绍Apache BookKeeper在存储上的设计,主要聚焦于以下两点:

  • BookKeeper的读写流程是怎样的,怎么去存储数据
  • 多副本存储下BookKeeper如何处理一致性问题

同时强调下BookKeeper本身是个独立的项目,本文是在Pulsar原理探究过程中对BookKeeper存储设计的系统性学习总结。

 

读写流程设计

BookKeeper采用读写分离的设计

读写流程示意图:

 

image.png

更细化的读写流程图:

image.png

写流程设计

1)同步流程

  1. 将数据写入Journal文件中(即预写日志文件),如果同时有多个数据写入,可进行批量提交(Group commit),刷到Journal磁盘中
  2. 将数据写入内存中(即memtable/Write Cache,作为写缓存)
  3. 返回写入成功响应,注意到这里整个流程都是同步的

2)异步流程

    • 4
      点赞
    • 4
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

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

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

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值