[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fqorb3rdhzxzd":3},{"code":4,"message":5,"data":6,"timestamp":42},10000,"success",{"full_name":7,"position":8,"description":9,"language":10,"stars":11,"forks":12,"stars_gained":13,"age_days":14,"hn_threads":15,"one_liner":22,"summary_md":23,"topic":24,"github_topics":27,"license":32,"homepage":33,"updated_at":34,"history":35},"apache\u002Fkafka",16,"Apache Kafka - A distributed event streaming platform","Java",34115,15623,9,5549,[16],{"id":17,"title":18,"points":19,"comments":20,"posted_at":21},30073298,"Apache Kafka",1,0,"2022-01-25","面向服务之间高吞吐事件传输与留存场景的分布式事件流平台。","如果你要解决的是“让大量事件在多个生产者和消费者之间持续流动且可重放”，而不是“存一张表”，Apache Kafka 值得认真评估。它成熟但也重，真正的问题是：你是否需要一个基于日志的 broker。\n\n## 解决什么问题\n\n设想订单事件、点击事件和库存变更持续到达，同时要送到搜索索引、风控检查、数据仓库等多个下游。用点对点调用或每个消费者一个队列的做法，会逼你复制数据、协调重试，还得自己处理某个下游落后时的追赶逻辑。换成 Kafka 后，生产者把记录追加到 topic，消费者按自己的节奏读取，日志保留记录，重启或迟到的消费者可以补读。实际结果是解耦：生产者不需要知道谁在读，新增消费者也不必改动生产端。\n\n## 有什么不同\n\n核心机制是分区、可复制的提交日志。分区内保序，并行度来自把分区分给消费者组内的不同消费者。保留时长是一等配置而非事后补丁，因此重放和回填是常规流程，而不是救火手段。代价是运维复杂度：分区、副本、消费者组和再均衡都成为必须理解的概念；如果 topic 设计忽略 key 分布，就会出现热点分区和消费者负载不均。Kafka 也不是数据库，不适合对历史数据做临时查询。\n\n## 谁值得试\n\n适合正在构建事件驱动后端或数据管道、且多个独立消费者需要同一条事件流、又重视顺序或重放的团队，也适合已经运行 Kafka 兼容基础设施的组织。反过来，如果只是两个服务之间需要任务队列，用更简单的 broker 或数据库队列运维成本更低。README 给出的构建路径假定你装了 Java 并使用 Gradle，但真正跑集群更该看 [quickstart](https:\u002F\u002Fkafka.apache.org\u002Fquickstart)。\n\n## 使用条件与边界\n\nREADME 给出了明确的构建约束：构建和测试使用 Java 17 和 25，clients 与 Streams 模块的 release 目标为 Java 11，其余模块为 17，Scala 只支持 2.13。如果你的组织仍统一在较老的 JDK 或 Scala 2.12 上，这会直接影响能否纳入现有工具链。构建 JAR 与运行集群是两件事，仓库里的构建说明覆盖产物、测试和发布，不涉及集群容量规划或日常运维流程。\n\n持续成本主要在设计层面：分区数、副本、消费者组行为和保留策略都需要提前规划，它们直接影响吞吐和恢复，构建命令帮不上忙。\n\n## HotRepo 点评\n\nHotRepo 在 2026-10-24 记录到 34,114 星，2026-10-25 为 34,115 星，只有两天样本，且更早没有可追踪记录。这只能说明项目存在已久、star 基数很大，无法判断热度在上升还是消退。决策应回到架构本身：如果你需要可重放、可多消费者独立消费的持久事件主干，Kafka 是值得评估的默认选项；在正式采用前，先核对其 Java 与 Scala 兼容性是否匹配你的工具链。",{"slug":25,"name":26},"data","数据",[28,29,30,31],"java","kafka","scala","streaming","Apache-2.0","https:\u002F\u002Fkafka.apache.org\u002F","2026-10-25T03:20:16Z",[36,40],{"date":37,"stars":38,"stars_gained":39},"2026-10-24",34114,10,{"date":41,"stars":11,"stars_gained":13},"2026-10-25",1792915096]