开发手册 欢迎您!
软件开发者资料库

Storm - 分布式消息系统

Apache Storm分布式消息传递系统 - 从简介,核心概念,集群架构,工作流,分布式消息系统,安装,工作示例,Trident,Twitter中的Apache Storm,Yahoo!简单而简单的步骤学习Apache Storm。财务,应用。

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

什么是分布式消息传递系统?

分布式消息传递基于可靠消息队列的概念.消息在客户端应用程序和消息传递系统之间异步排队.分布式消息传递系统提供了可靠性,可伸缩性和持久性的好处.

大多数消息传递模式遵循发布 - 订阅模型(只需 Pub -Sub )邮件的发件人被称为发布商,而想要接收邮件的人称为订阅者.

发件人发布邮件后,订阅者可以借助过滤选项接收所选邮件.通常我们有两种类型的过滤,一种是基于主题的过滤,另一种是基于内容的过滤.

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

消息系统

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

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

Thrift Protocol

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

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

Storm广泛使用Thrift协议进行内部通信和数据定义.风暴拓扑只是 Thrift Structs .在Apache Storm中运行拓扑的Storm Nimbus是 Thrift服务.