- 系统特征
Storm系统的主要特征如下。
(1)简单编程模型。用户只需编写Spout和Bolt部分的实现,因此极大地降低了实时大数据流式计算的复杂性。
(2)支持多种编程语言。默认支持Clojure、Java、Ruby和Python,也可以通过添加相关协议实现对新增语言的支持。
(3)作业级容错性。可以保证每个数据流作业被完全执行。
(4)水平可扩展。计算可以在多个线程、进程和服务器之间并发执行。
(5)快速消息计算。通过ZeroMQ作为其底层消息队列,保证消息能够得到快速的计算。
Storm系统存在的不足主要包括:资源分配没有考虑任务拓扑的结构特征,无法适应数据负载的动态变化;采用集中式的作业级容错机制,在一定程度上限制了系统的可扩展性。
3.4.6 Kafka 系统
Kafka是Linkedin所支持的一款开源的、分布式的、高吞吐量的发布订阅消息系统,可以有效地处理互联网中活跃的流式数据,如网站的页面浏览量、用户访问频率、访问统计、好友动态等,开发语言是Scala,可以使用Java进行编写。Kafka系统在设计过程中主要考虑了以下需求特征。
(1)消息持久化是一种常态需求。
(2)吞吐量是系统需要满足的首要目标。
(3)消息的状态作为订阅者(consumer)存储信息的一部分,在订阅者服务器中进行存储。
(4)将发布者(producer)、代理(broker)和订阅者(consumer)显式地分布在多台机器上,构成显式的分布式系统。
形成了以下关键特性。
(1)在磁盘中实现消息持久化的时间复杂度为O(1),数据规模可以达到太字节(TB)级别。
(2)实现了数据的高吞吐量,可以满足每秒数十万条消息的处理需求。
(3)实现了在服务器集群中进行消息的分片和序列管理。
(4)实现了对Hadoop系统的兼容,可以将数据并行地加载到Hadoop集群中。
- 系统架构
Kafka消息系统的架构是由发布者、代理和订阅者共同构成的显式分布式架构,它们分别位于不同的节点上,如图3-13所示。各部分构成一个完整的逻辑组,并对外界提供服务,各部分间通过消息(message)进行数据传输。其中,发布者可以向一个主题(topic)推送相关消息,订阅者以组为单位可以关注并拉取自己感兴趣的消息,通过ZooKeeper实现对订阅者和代理的全局状态信息的管理及其负载均衡的实现。
人工智能与大数据技术导论
84