消息系统

Apache Kafka:下一代分布式消息系统

て烟熏妆下的殇ゞ 提交于 2020-04-07 01:49:05
简介 Apache Kafka 是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。 Apache Kafka与传统消息系统相比,有以下不同: 它被设计为一个分布式系统,易于向外扩展; 它同时为发布和订阅提供高吞吐量; 它支持多订阅者,当失败时能自动平衡消费者; 它将消息持久化到磁盘,因此可用于批量消费,例如 ETL ,以及实时应用程序。 本文我将重点介绍Apache Kafka的架构、特性和特点,帮助我们理解Kafka为何比传统消息服务更好。 我将比较Kafak和传统消息服务 RabbitMQ 、Apache ActiveMQ 的特点,讨论一些Kafka优于传统消息服务的场景。在最后一节,我们将探讨一个进行中的示例应用,展示Kafka作为消息服务器的用途。这个示例应用的完整源代码在 GitHub 。关于它的详细讨论在本文的最后一节。 架构 首先,我介绍一下Kafka的基本概念。它的架构包括以下组件: 话题(Topic) 是特定类型的 消息 流。 消息 是字节的有效负载(Payload),话题是消息的分类名或种子(Feed)名。 生产者(Producer) 是能够发布消息到话题的任何对象。 已发布的消息保存在一组服务器中,它们被称为 代理(Broker