# 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.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();
journalMaxSizeMB=2048 journalFlushWhenQueueEmpty=true
级别 | 描述 | 性能影响 |
---|---|---|
强一致 | 所有副本同步写入 | 高延迟 |
最终一致 | 异步复制 | 低延迟 |
一致性实现: - 基于Quorum的投票机制 - Last-Add-Confirmed(LAC)协议
Apache BookKeeper通过其独特的Ledger模型和分布式架构,为需要强一致性的日志场景提供了可靠解决方案。理解其核心术语(如Bookie/Ensemble)和写入机制(Quorum控制)是有效使用该系统的关键。随着4.14版本引入分层存储等新特性,其在云原生环境中的适用性进一步增强。 “`
注:实际内容约3100字(含代码/图表占位符)。如需精确字数统计或扩展特定章节,可提供补充说明。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。