什么是分布式消息系统?
分布式消息传递基于可靠消息队列的概念。消息在客户端应用程序和消息传递系统之间异步排队。分布式消息传递系统提供了可靠性、可伸缩性和持久性的好处。
大多数消息传递模式都遵循publish-subscribe型号(简单Pub-Sub) 消息的发送者被调用的地方publishers那些想要接收消息的人被称为subscribers.
发送者发布消息后,订阅者可以在过滤选项的帮助下接收所选消息。通常我们有两种过滤方式,一种是topic-based filtering另一个是content-based filtering.
请注意,发布-订阅模型只能通过消息进行通信。它是一个非常松耦合的架构;甚至发送者也不知道他们的订阅者是谁。许多消息模式使消息代理能够交换发布消息,以便许多订阅者及时访问。一个真实的例子是 Dish TV,它发布不同的频道,如体育、电影、音乐等,任何人都可以订阅自己的频道集,并在他们订阅的频道可用时获取它们。
下表描述了一些流行的高吞吐量消息传递系统 -
分布式消息系统 |
描述 |
Apache Kafka |
Kafka 是在 LinkedIn 公司开发的,后来成为 Apache 的一个子项目。Apache Kafka 基于支持代理的、持久的、分布式的发布-订阅模型。Kafka 快速、可扩展且高效。 |
RabbitMQ |
RabbitMQ 是一个开源的分布式健壮消息传递应用程序。它易于使用并在所有平台上运行。 |
JMS(Java 消息服务) |
JMS 是一种开源 API,支持从一个应用程序创建、读取和发送消息到另一个应用程序。它提供有保证的消息传递并遵循发布-订阅模型。 |
ActiveMQ |
ActiveMQ 消息系统是 JMS 的一个开源 API。 |
ZeroMQ |
ZeroMQ 是无代理的点对点消息处理。它提供推拉式、路由器-经销商消息模式。 |
Kestrel |
Kestrel 是一个快速、可靠且简单的分布式消息队列。 |