Storm五之分布式消息系统

Storm实时处理的数据流通常来自消息队列系统,

外部独立的分布式消息系统将为实时数据处理系统提供输入流。

Storm Spout会从消息系统读取数据,经过处理后将其转换为tuple,然后再传入storm系统。

有趣的是,storm使用自己内部的分布式消息系统进行nimbussupervisor之间的通信。

 

什么是分布式消息系统?

分布式消息系统是基于可靠的消息队列,消息由客户机产生并异步添加到消息系统的消息队列中。分布式消息系统具有高可靠行,可伸缩行和持久化性等优点。

 

大部分消息系统遵从发布-订阅(Pub-Sub)模型。

发布:消息的发送者被称为消息生产者(publisher),

订阅:消息的接收者称为消息消费者(subscribers).

 

一旦消息生产者发布消息,消息消费者就可以通过一些过滤操作获取到消息。

通过,有两种消息过滤方式:主题过滤和内容过滤。

主题过滤:topic-based filtering

内容过滤content-based filtering

 

需要注意的是,发布-订阅模型只能通过消息进行通信,這是一种非常松耦合的体系结构

甚至消息生产者都不知道谁是消费者。

许多消息模型使用message broker去发布消息,以便能够让消费者及时的获取到消息。

生活中的示例如Dish TV,提供不同的频道(如:运动,电影,音乐等),任何人都可以订阅他们自己喜欢的频道。

 


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

Apache Kafka

Kafka是LinkedIn公司开发的,后来它变成了一个Apache的子项目。Apache kafka是基于brokerenabled、持久、分布式发布-订阅模型。kafka是快速、可伸缩的和高效的。

RabbitMQ

RabbitMQ是一个可靠的,开源的分布式消息传递应用程序易于使用并且支持跨平台。

JMS(Java Message Service)

JMS是一个支持创建,读取,跨应用的开源API,提供可靠的消息传递,并且遵从发布-订阅模式。

ActiveMQ

ActiveMQ消息传递系统是一个开源JMS API。

ZeroMQ

ZeroMQ提供 broker-less对等的信息处理。它提供了push-pull,,router-dealer消息模式

Kestrel

Kestrel是一种快速、可靠和简单的分布式消息队列。

 

Thrift Protocol

Thrift是建立在Facebook的跨语言服务开发和远程过程调用(RPC)协议

之后,它成为了一个Apache的开源项目。

Apache Thrift是一种接口定义语言,允许定义新的数据类型并支持以一个简单的方式在新的数据类型之上添加实现

Apache Thrift也是一个支持嵌入式系统移动应用程序、web应用程序和许多其他的编程语言的通信框架。

Thrift具有模块化、灵活性和高性能等特点

此外,它可以在分布式应用程序执行streaming, messaging, and RPC 操作

Storm广泛使用Thrift Protocol协议实现内部通信协议和数据定义。

Storm topology就是简单的Thrift结构。

Stormnimbus运行topology就是用的Thtift服务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值