使用 Kafka 重建投票计数面向已掌握 Kafka 基础客户端、希望根据保留事件重建有用业务结果的学习者。你将重建展览的展位票数,区分重试事件与新的一票,同时保留现有展示应用的读取进度。
两个引导实验先建立全局身份规则,再构建完整的独立原生回放。一个挑战实验将相同机制应用于两个新展览批次和一次有意设置的冲突。每个单元独立初始化。作者估计全课程约需 140–170 分钟,包含阅读和普通错误处理;这并非初学者实测完成时间。
你将学到什么
完成本课程后,你将能够:
- 区分 Kafka 记录的分区/偏移量与全局业务事件 ID;
- 将完全相同的重试只计一次,同时分别保留其他内容相同但 ID 不同的事件;
- 拒绝同 ID 的内容冲突,而非按到达顺序选择胜出值;
- 获取每个分区的冻结边界,跨空分区、跳过的位置和短暂空闲轮询读完整个有限批次;
- 发布并读取完整快照,包含物理源记录的封装、逻辑选票以及每个展位的计数,包括零票;
- 对不同目录和分区分布复用同一个 Python 程序,不回退原展示应用消费组。
本课程适合谁
本课程适合已能发布和消费 JSON 事件、希望构建独立派生视图的 Kafka 学习者。
前置要求: 基本终端路径;Python 函数、循环、字典和 JSON;Apache Kafka for Beginners 中的 Kafka 键、分区、偏移量、消费组以及 Python 生产者/消费者实践。挑战前请完成两个引导实验。
学习环境: 每个单元均提供准备好的 Linux Terminal、真实本地 Kafka broker、已安装的 Python 客户端、合成展览批次和结果读取工具。不需要外部账号或本地安装。命令、工具标签和运行输出使用英文。
常见问题
这是投票人身份或一人一票系统吗?
不是。所提供的业务将每个新事件 ID 视为一张已接受的选票。你重建这些事件,不判断真实访客是谁或是否可以再次投票。
课程教授连续流或恰好一次处理吗?
课程处理有限、冻结的日志,教授完整重建和冲突拒绝,不承诺连续流恢复、跨系统原子性、崩溃后的数据持久性或端到端恰好一次行为。
挑战如何延伸引导实验?
挑战改变展位名称、事件关系、分区数量和分布。必须用已教授的同一套 Python 接口和回放机制生成两份有效快照,并拒绝有意设置的冲突批次,同时保留有用结果。

