消息与流处理
Kafka 的投递语义、消费组与性能原理,以及消息驱动系统的可靠性设计。
从哪里开始
先读 Kafka 为什么快,理解批、分区与 key 怎样决定吞吐和并行度;再读投递语义,划清生产端、Broker 与消费端的边界,才能判断「不丢不重」到底由谁保证。
文章
01Kafka 为什么快批处理让吞吐差 40 倍、压缩省下 86% 的磁盘、acks=all 的延迟代价、分区与热点 key 决定消费并行度→02Kafka 不丢、不重与 Exactly Onceacks 与 min.insync.replicas、幂等生产者、Outbox、幂等消费、事务的覆盖边界→03Kafka 消费组重平衡eager、协作式与 KIP-848 新协议实测对比,慢成员拖住全组、重复消费与静态成员身份→04按订单号发到同一个分区,为什么还是乱序了分区数从 4 改成 8 后 20 个键里 7 个换了分区;分区内并行处理、失败重试让旧版本后到;不同客户端的分区算法;消费端按版本判断新旧→05晚到了五十秒的那次点击,算在哪一分钟按到达时间归窗会算进下一分钟;不允许晚到时事件被静默丢弃;没有新事件窗口就不输出;一个时间戳错得很远的事件让之后的正常事件全被丢弃→