术语
本文列举 AutoMQ 各模块涉及的技术术语和简要概述。
术语分类
云服务概念: 涵盖了 AutoMQ 所使用的云服务和产品组件。用户可以参考各云厂商的文档了解更多相关细节。
Apache Kafka 概念: 涵盖了 Apache Kafka 既有的部分概念,可能因 AutoMQ 的实现而有所变化。
AutoMQ 概念: 涵盖了 AutoMQ 各模块中定义的新概念。
云服务术语
EBS
EBS(Elastic Block Store)是一种高性能、可扩展、持久且低延迟的块存储服务。在 AutoMQ 的系统设计中,会利用 EBS 暂存一部分尚未上传至对象存储的消息数据,以实现更低的消息收发延迟。不同云服务提供商可能对 EBS 有不同的产品命名。
S3
S3(Simple Storage Service)是一种安全、持久、高度可扩展的对象存储服务。在 AutoMQ 的系统设计中,使用对象存储作为消息主存储介质,可以实现按需使用、按量付费、相比 Apache Kafka 90% 的存储成本缩减效果。 S3 在后续的文档中也代指对象存储,不同云服务提供商的对象存储服务可能有不同的产品命名。
Bucket
Bucket 是对象存储服务的基本容器,用于有效管理数据。在部署 AutoMQ 时,需要提前分配一些 Bucket 作为消息存储的配置。
Auto Scaling Group( ASG)
Auto Scaling Group(ASG)是一种可以自动调整计算资源来满足应用负载需求的服务。ASG 能够自动增加或减少虚拟主机实例组中的实例数量,确保应用的高可用性并优化成本。AutoMQ 使用 ASG 来实现自动弹性伸缩等功能。不同的云服务提供商可能会对 ASG 使用不同的产品名称。
Apache Kafka 术语
Broker
Broker 是 Apache Kafka 系统中用于处理、存储和传输消息的逻辑角色,多个 Broker 节点共同构成 Kafka 集群。在 AutoMQ 的系统设计中,Broker 特指常规处理收发消息的逻辑角色,不包含用于调度分配的 Controller 角色。
Controller
Controller 是 Apache Kafka 系统中用于调度、协调多节点间任务分配的逻辑角色,根据不同的版本,Controller 可能有不同的实现方案。在 AutoMQ 的系统设计中,Controller 基于 KRaft 模式构建,不再依赖 ZooKeeper 服务。多个 Controller 节点中会有一个 Active Controller 节点作为主要决策节点。
Partition
Partition 是 Apache Kafka Topic 的逻辑分片,用于实现数据的并行处理和提升吞吐能力。每个 Partition 是一个有序、不可变的消息序列。在 AutoMQ 系统设计中,Partition 保留了其原有功能定义,但不再存储在本地磁盘,而是利用对象存储进行构建,以实现无限容量和按需扩展的效果。
AutoMQ 术语
AutoMQ
AutoMQ 是基于云原生理念重新设计的新一代 Apache Kafka 发行版,在 100% 兼容 Apache Kafka 协议的前提下提供了高达 10 倍的成本优势和数百倍的弹性优势。
S3Stream
S3Stream 是基于 EBS 和对象存储构建的低延迟、高吞吐、弹性低成本的流存储库,通过 Stream 操作接口被外部集成。AutoMQ 基于 S3Stream 封装替换了 Apache Kafka 的 Log 存储,在保证上层功能和 Apache Kafka 100% 兼容前提下,提供了十倍的成本优势和数百倍的弹性优势。
S3Url
S3Url 是 AutoMQ 用于快速启动集群的统一配置项,其中包含对象存储接入点和身份标识等信息。推荐用户使用安装工具生成 S3Url 配置,以便提前验证参数合法性和资源兼容性,并避免 Apache Kafka 中繁琐的集群 ID 生成和存储格式化操作。
WAL
WAL 是 S3Stream 库中基于 EBS 实现的高吞吐、低延迟、持久化缓存,用于临时缓存尚未提交到对象存储的数据。在 AutoMQ 中,WAL 按 Broker 粒度分配,在 Broker 接收消息后,首先将消息按顺序写入 WAL,并立即返回客户端响应,然后异步将 WAL 数据上传到对象存储。
Stream Object
Stream Object 是 S3Stream 中用于存储 Stream 数据的最小单元。每个 Stream 的数据被分布在多个 Stream Object 中,这些 Stream Object 组合在一起模拟出一个无限的 Stream。
Stream Set Object
Stream Set Object 是 S3Stream 中用于合并零散的 Stream 写入请求的临时数据结构。在上传 WAL 的临时数据到对象存储时,会将多个零散的 Stream 的数据合并为一个 Stream Set Object 后再上传。随后,会异步将 Stream Set Object 分类整理为普通的 Stream Object。