Storm – 分布式消息系统

Storm – 分布式消息系统


Apache Storm 处理实时数据,输入通常来自消息队列系统。外部分布式消息传递系统将提供实时计算所需的输入。Spout 将从消息传递系统读取数据并将其转换为元组并输入到 Apache Storm。有趣的事实是,Apache Storm 在内部使用自己的分布式消息传递系统来进行它的 nimbus 和主管之间的通信。

什么是分布式消息系统?

分布式消息传递基于可靠消息队列的概念。消息在客户端应用程序和消息传递系统之间异步排队。分布式消息传递系统具有可靠性、可伸缩性和持久性的优点。

大多数消息传递模式都遵循发布-订阅模型(简称Pub-Sub),其中消息的发送者称为发布者,而想要接收消息的人称为订阅者

一旦消息被发送者发布,订阅者就可以在过滤选项的帮助下接收选定的消息。通常我们有两种过滤方式,一种是基于主题的过滤,另一种是基于内容的过滤

请注意,发布-订阅模型只能通过消息进行通信。它是一个非常松散耦合的架构;甚至发件人也不知道他们的订阅者是谁。许多消息模式使消息代理能够交换发布消息,以便许多订阅者及时访问。一个真实的例子是 Dish TV,它发布不同的频道,如体育、电影、音乐等,任何人都可以订阅自己的频道集,并在他们订阅的频道可用时获取这些频道。

消息系统

下表描述了一些流行的高吞吐量消息系统 –

Distributed messaging system 描述
Apache Kafka Kafka 由 LinkedIn 公司开发,后来成为 Apache 的子项目。Apache Kafka 基于启用代理的、持久的、分布式发布订阅模型。Kafka 快速、可扩展且高效。
RabbitMQ RabbitMQ 是一个开源分布式健壮消息传递应用程序。它易于使用并在所有平台上运行。
JMS(Java Message Service) JMS 是一种开源 API,支持从一个应用程序创建、读取和发送消息到另一个应用程序。它提供有保证的消息传递并遵循发布订阅模型。
ActiveMQ ActiveMQ 消息系统是 JMS 的一个开源 API。
ZeroMQ ZeroMQ 是无代理的对等消息处理。它提供推拉式、路由器-经销商消息模式。
Kestrel Kestrel 是一个快速、可靠且简单的分布式消息队列。

节俭协议

Thrift 是在 Facebook 构建的,用于跨语言服务开发和远程过程调用 (RPC)。后来,它成为了一个开源的 Apache 项目。Apache Thrift 是一种接口定义语言,允许以简单的方式在定义的数据类型之上定义新的数据类型和服务实现。

Apache Thrift 也是一个通信框架,支持嵌入式系统、移动应用程序、Web 应用程序和许多其他编程语言。与 Apache Thrift 相关的一些关键特性是它的模块化、灵活性和高性能。此外,它还可以在分布式应用程序中执行流、消息传递和 RPC。

Storm 广泛使用 Thrift 协议进行内部通信和数据定义。Storm 拓扑就是Thrift Structs在 Apache Storm 中运行拓扑的 Storm Nimbus 是一个Thrift 服务

觉得文章有用?

点个广告表达一下你的爱意吧 !😁