加载中...
Kafka权威指南

Kafka权威指南 by Gwen Shapira & Todd Palino & Rajini Sivaram & Krit Petty

Kafka权威指南

初识Kafka

消费者群组从主题读取消息
集群中的分区复制
初识 Kafka
加载中...

Kafka生产者——向Kafka写入数据

  1. 发送消息的基本流程是怎样的,经过了哪些组件?
  2. 3 种消息发送方式
    1. 发送并忘记:send 后就不管了,发送后的异常无感知
    2. 同步发送:send 会返回 Future,get()主线程会阻塞,生产环境极少用
    3. 异步发送:send 会指定回调,服务器响应时触发
  3. acks 配置影响消息持久性,0、1、all 分别代表了什么?
向Kafka发送消息的主要步骤
Avro Record的序列化和反序列化
Kafka生产者——向Kafka写入数据
加载中...

Kafka消费者——从Kafka读取数据

Kafka 消费者 —— 从 Kafka 读取数据
加载中...

深入Kafka

Kafka通过改变主题的保留策略来满足这些应用场景。如果保留策略是delete,那么早于保留时间的旧事件将被删除;如果保留策略是compact(压实),那么只为每个键保留最新的值。

主题的数据保留策略也可以被设置成delete.and.compact,也就是以上两种策略的组合。超过保留时间的消息将被删除,即使它们的键对应的值是最新的。组合策略可以防止压实主题变得太大,同时也可以满足业务需要在一段时间后删除数据的要求。

Kafka使用零复制技术向客户端发送消息,也就是说,Kafka会直接把消息从文件(或者更确切地说是Linux文件系统缓存)里发送到网络通道,不需要经过任何中间缓冲区。这是Kafka与其他大部分数据库系统不一样的地方,其他数据库在将数据发送给客户端之前会先把它们保存在本地缓存中。这项技术避免了字节复制,也不需要管理内存缓冲区,从而能够获得更好的性能。

在现有架构中,ZooKeeper起到了两个重要作用:一是用于选举控制器,二是用于保存集群元数据(broker、配置、主题、分区和副本)。此外,控制器本身也需要管理元数据——用于选举首领、创建和删除主题,以及重新分配副本。所有这些功能在新控制器中都将被替换掉

新控制器背后的核心设计思想是:Kafka本身有一个基于日志的架构,其中用户会将状态的变化表示成一个事件流。在新架构中,控制器节点形成了一个Raft仲裁,管理着元数据事件日志。这个日志中包含了集群元数据的每一个变更。原先保存在ZooKeeper中的所有东西(比如主题、分区、ISR、配置等)都将被保存在这个日志中。因为使用了Raft算法,所以控制器节点可以在不依赖外部系统的情况下选举首领。

深入 Kafka
加载中...

历史记录

共 5 条
  1. 2026-03-24 22:51:44
    init
  2. 2026-03-24 23:58:04
    增加《初识 Kafka》一章
  3. 2026-03-25 18:49:15
    增加《Kafka生产者——向Kafka写入数据》一章
  4. 2026-03-26 21:43:08
    增加《Kafka消费者——从Kafka读取数据》一章
  5. 2026-03-27 18:56:09
    增加《深入Kafka》一章