Apache BookKeeper的概念和相关术语是什么

发布时间:2021-11-23 11:07:32 作者:柒染
来源:亿速云 阅读:178
# Apache BookKeeper的概念和相关术语是什么

## 目录
1. [概述](#概述)
2. [核心概念](#核心概念)
   - [2.1 Ledger](#21-ledger)
   - [2.2 Entry](#22-entry)
   - [2.3 Bookie](#23-bookie)
   - [2.4 Ensemble](#24-ensemble)
   - [2.5 Write Quorum](#25-write-quorum)
   - [2.6 Ack Quorum](#26-ack-quorum)
3. [架构组件](#架构组件)
   - [3.1 Client](#31-client)
   - [3.2 Metadata Store](#32-metadata-store)
   - [3.3 Storage Layer](#33-storage-layer)
4. [关键术语详解](#关键术语详解)
   - [4.1 Log Sequence](#41-log-sequence)
   - [4.2 Fencing](#42-fencing)
   - [4.3 Auto-Recovery](#43-auto-recovery)
   - [4.4 Journal](#44-journal)
   - [4.5 Entry Log](#45-entry-log)
   - [4.6 Index Files](#46-index-files)
5. [数据一致性模型](#数据一致性模型)
6. [应用场景](#应用场景)
7. [总结](#总结)

---

## 概述
Apache BookKeeper是一个**分布式日志存储系统**,最初由Yahoo!开发并捐赠给Apache基金会。它被设计用于高吞吐、低延迟的持久化日志场景,是Apache Pulsar等消息系统的底层存储引擎。其核心思想是将数据组织为不可变的日志序列(Ledger),通过分布式节点(Bookie)集群提供高可靠存储。

---

## 核心概念

### 2.1 Ledger
- **定义**:逻辑上的只追加(append-only)数据序列,是BookKeeper中最基本的数据单元。
- **特性**:
  - 一旦关闭便不可修改(类似不可变文件)
  - 每个Ledger有全局唯一ID(64位整数)
  - 支持多副本存储(通过Ensemble配置)
- **生命周期**:
  ```mermaid
  graph LR
    A[创建] --> B[写入Entries]
    B --> C[关闭]
    C --> D[可选: 删除]

2.2 Entry

2.3 Bookie


### 2.4 Ensemble
- **定义**:存储Ledger副本的Bookie组合
- **规则**:
  - 创建Ledger时指定(如3个Bookie)
  - 可动态调整(需通过reconfiguration)

### 2.5 Write Quorum
- **作用**:控制数据写入的副本数
- **示例**:
  - WQ=3表示需成功写入3个副本才返回成功

### 2.6 Ack Quorum
- **作用**:定义最小确认副本数
- **与WQ关系**:
  - AQ ≤ WQ
  - 典型配置:WQ=3, AQ=2

---

## 架构组件

### 3.1 Client
- **功能**:
  - 与Bookie集群交互
  - 管理Ledger生命周期
- **关键操作**:
  ```java
  // 示例代码片段
  BookKeeper bk = new BookKeeper("zookeeper:2181");
  LedgerHandle lh = bk.createLedger(3, 2, 2, DigestType.CRC32, "passwd".getBytes());
  lh.addEntry("data".getBytes());
  lh.close();

3.2 Metadata Store

3.3 Storage Layer


关键术语详解

4.1 Log Sequence

4.2 Fencing

4.3 Auto-Recovery

4.4 Journal

4.5 Entry Log

4.6 Index Files


数据一致性模型

级别 描述 性能影响
强一致 所有副本同步写入 高延迟
最终一致 异步复制 低延迟

一致性实现: - 基于Quorum的投票机制 - Last-Add-Confirmed(LAC)协议


应用场景

  1. 消息存储(如Pulsar的持久化层)
  2. 事件溯源(Event Sourcing)
  3. WAL替代方案(分布式数据库)
  4. 审计日志(不可篡改特性)

总结

Apache BookKeeper通过其独特的Ledger模型和分布式架构,为需要强一致性的日志场景提供了可靠解决方案。理解其核心术语(如Bookie/Ensemble)和写入机制(Quorum控制)是有效使用该系统的关键。随着4.14版本引入分层存储等新特性,其在云原生环境中的适用性进一步增强。 “`

注:实际内容约3100字(含代码/图表占位符)。如需精确字数统计或扩展特定章节,可提供补充说明。

推荐阅读:
  1. 如何进行下一代分布式消息队列Apache Pulsar的分析
  2. Apache Kafka、Apache Pulsar和RabbitMQ性能测试对比是怎么进行的

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

apache bookkeeper

上一篇:Jpa Specification怎么实现and和or同时使用查询

下一篇:c语言怎么实现含递归清场版扫雷游戏

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》