{"resolved":true,"match_type":"uuid","source_type":"original_book","book_id":"cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","title":"人工智能与大数据技术导论","author":null,"edition":null,"publisher":null,"year":null,"isbn":"9787302517986","requested_by":"printed_page","book":{"source_type":"original_book","book_id":"cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","id":"cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","uuid":"cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","title":"人工智能与大数据技术导论","normalized_title":"人工智能与大数据技术导论","author":null,"edition":null,"publisher":null,"year":null,"isbn":"9787302517986","isbns":["9787302517986"],"parsed":true,"ai_readable":true,"document_type":"book","page_count":490,"navigation_url":"https://workshop.closeclaw.top/ai/book/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","title_url":"https://workshop.closeclaw.top/ai/title/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E4%B8%8E%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%8A%80%E6%9C%AF%E5%AF%BC%E8%AE%BA","fixed_page_url_template":"https://workshop.closeclaw.top/ai/book/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71/page/{printed_page}","path_api_url_template":"https://workshop.closeclaw.top/api/ai/book/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71/page/{printed_page}","read_url":"https://workshop.closeclaw.top/api/ai/read/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","page_url":"https://workshop.closeclaw.top/api/ai/books/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71/page","search_url":"https://workshop.closeclaw.top/api/ai/books/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71/search"},"page":{"printed_page":84,"pdf_page":100,"physical_index":100,"physical_index_base":0,"printed_page_status":"recognized","page_sha256":"aa1e8d80fd676d1c1e0f453c7bed7c9fe8ff9edc188eda575b6a1ac25b958c75"},"chapter":"第3章","content":"3. 系统特征\n\nStorm系统的主要特征如下。\n\n(1)简单编程模型。用户只需编写Spout和Bolt部分的实现，因此极大地降低了实时大数据流式计算的复杂性。\n\n(2）支持多种编程语言。默认支持Clojure、Java、Ruby和Python，也可以通过添加相关协议实现对新增语言的支持。\n\n（3）作业级容错性。可以保证每个数据流作业被完全执行。\n\n（4）水平可扩展。计算可以在多个线程、进程和服务器之间并发执行。\n\n(5）快速消息计算。通过ZeroMQ作为其底层消息队列，保证消息能够得到快速的计算。\n\nStorm系统存在的不足主要包括：资源分配没有考虑任务拓扑的结构特征，无法适应数据负载的动态变化；采用集中式的作业级容错机制，在一定程度上限制了系统的可扩展性。\n\n3.4.6 Kafka 系统\n\nKafka是Linkedin所支持的一款开源的、分布式的、高吞吐量的发布订阅消息系统，可以有效地处理互联网中活跃的流式数据，如网站的页面浏览量、用户访问频率、访问统计、好友动态等，开发语言是Scala，可以使用Java进行编写。Kafka系统在设计过程中主要考虑了以下需求特征。\n\n（1）消息持久化是一种常态需求。\n\n(2）吞吐量是系统需要满足的首要目标。\n\n(3）消息的状态作为订阅者（consumer）存储信息的一部分，在订阅者服务器中进行存储。\n\n(4）将发布者（producer）、代理（broker）和订阅者（consumer）显式地分布在多台机器上，构成显式的分布式系统。\n\n形成了以下关键特性。\n\n(1）在磁盘中实现消息持久化的时间复杂度为O(1)，数据规模可以达到太字节（TB)级别。\n\n(2)实现了数据的高吞吐量，可以满足每秒数十万条消息的处理需求。\n\n（3）实现了在服务器集群中进行消息的分片和序列管理。\n\n(4)实现了对Hadoop系统的兼容，可以将数据并行地加载到Hadoop集群中。\n\n1. 系统架构\n\nKafka消息系统的架构是由发布者、代理和订阅者共同构成的显式分布式架构，它们分别位于不同的节点上，如图3-13所示。各部分构成一个完整的逻辑组，并对外界提供服务，各部分间通过消息（message）进行数据传输。其中，发布者可以向一个主题（topic）推送相关消息，订阅者以组为单位可以关注并拉取自己感兴趣的消息，通过ZooKeeper实现对订阅者和代理的全局状态信息的管理及其负载均衡的实现。\n\n人工智能与大数据技术导论\n\n84","previous_page":83,"next_page":85}