您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。