第一章 架构设计的分叉口1.1 Kafka:一次为分布式而生的设计Kafka 最初诞生于 2011 年的 LinkedIn 数据基础设施团队。当时,Jay Kreps、Neha Narkhede 和 Jun Rao 面对的是一个越来越棘手的问题:各类系统之间的数据传输管道太多太杂,每个管道都有自己的格式、协议、可靠性要求,维护成本呈指数级增长。他们需要一个统一的"日志聚合中心",让所有系统都能把数据往里写,也能按需从里面读。这项设计并不只是打造一个消息队列。Jay Kreps 后来解释过他真正的洞见:如果把系统的输入输出看作一组持续的、不可变的事件日志,那么整个企业的数据流就变成了一个巨大的、可重放的日志。这不只是解耦,而是从根本上统一了数据处理的抽象模型。Kafka 的设计理念围绕着"分布式日志"这一核心抽象展开:数据是以追加的方式写入不可变的日志,所有消息按顺序存储并分配递增的偏移量。为了让这种"集中式"抽象能扛住高吞吐的分布式负载,Kafka 引入了分区机制:一个 Topic 可以切成多个 Partition,每个 Partition 作为一个独立的日志单元分布在不同的 Broker 上。Partition 是 Kafka 并行能力的根本来源。为了在分布式环境下保证高可用,每个 Partition 可以配置多个 Replica。这组副本中有一个 Leader,负责处理所有的读写请求;其他的 Follower 则只做一件事:不断从 Leader 拉取数据,尽量让自己跟 Leader 保持同步。当 Follower 副本同步进度落后 Leader 过多时,会被移出ISR(In-S
Kafka和RedPanda
第一章 架构设计的分叉口1.1 Kafka:一次为分布式而生的设计Kafka 最初诞生于 2011 年的 LinkedIn 数据基础设施团队。当时,Jay Kreps、Neha Narkhede 和 Jun Rao 面对的是一个越来越棘手的问题:各类系统之间的数据传输管道太多太杂,每个管道都有自己的格式、协议、可靠性要求,维护成本呈指数级增长。他们需要一个统一的"日志聚合中心",让所有系统都能把数据往里写,也能按需从里面读。这项设计并不只是打造一个消息队列。Jay Kreps 后来解释过他真正的洞见:如果把系统的输入输出看作一组持续的、不可变的事件日志,那么整个企业的数据流就变成了一个巨大的、可重放的日志。这不只是解耦,而是从根本上统一了数据处理的抽象模型。Kafka 的设计理念围绕着"分布式日志"这一核心抽象展开:数据是以追加的方式写入不可变的日志,所有消息按顺序存储并分配递增的偏移量。为了让这种"集中式"抽象能扛住高吞吐的分布式负载,Kafka 引入了分区机制:一个 Topic 可以切成多个 Partition,每个 Partition 作为一个独立的日志单元分布在不同的 Broker 上。Partition 是 Kafka 并行能力的根本来源。为了在分布式环境下保证高可用,每个 Partition 可以配置多个 Replica。这组副本中有一个 Leader,负责处理所有的读写请求;其他的 Follower 则只做一件事:不断从 Leader 拉取数据,尽量让自己跟 Leader 保持同步。当 Follower 副本同步进度落后 Leader 过多时,会被移出ISR(In-S