IBM 通过 InfoSphere Streams 提供了一个强大且可扩展的解决方案来处理每秒数百万个数据元组的持续流。该流引擎提供了一种健壮、高度可用且可扩展的运行时,能够在数百个节点和 C++PU 核心上执行分析逻辑。这为您提供了专心使用数据的自由,让您无需花时间研究如何和在何处使用数据。
在一种典型的操作领域,InfoSphere Streams 可帮助您处理动态传入的数据,在不到一秒内对新事件做出反应,无需在事后延迟几分钟或者甚至几小时再处理数据。图 1 显示了一种系统架构,Streams 在该架构中帮助处理每天 60 万个与手机网络中传送的通话有关的呼叫数据记录。
图 1. Streams 可以帮助检测手机网络中的问题
&">nbsp;
处理这些记录,并将它们加载到 BI 和帐户系统中的时间从 12 小时减少到了几秒钟,现在可以实时查看客户活动和网络质量。
尽管 Streams 最初设计来处理动态数据,但它也可用于模拟用途。下一章将介绍如何设置数据流,使数据在处理后再次进入处理引擎。有一些难题需要解决,它们可能不那么明显,但下面将详细介绍它们。
Streams 基础知识
流 是指从来源到目标的一个持续数据流。该数据具有元组 的形式,其中包含一组固定的属性。一个流可能类似于数据库中的内容。在数据库中,数据存储在行和列格式中。列是由数据记录(或行)组成的单独定义的元素。在 Streams 中,这些数据记录称为元组,列称为属性。
要理解 Streams 处理的概念,一定要理解 4 个术语:接收槽/来源适配器、操作符、Streams 编程语言 (SPL) 和 Streams 运行时环境。
图 2. Streams 环境
一个流的来源称为源,而目标称为接收槽。这样一个接收槽或源可能是一个文件、数据库、TCP/IP 套接字或任何其他自定义的 Java 或 C++ 程序,用于生成或保存元组。
操作符 允许处理流元组,以便过滤、聚合、合并、转换或执行复杂得多的数学函数,比如快速傅立叶变换。他们接收一个或多个流作为输入,执行元组和属性的处理,生成一个或多个流作为输出。
一个 Streams 应用程序是一组通过流连接的这类操作符的一个集合。Streams 应用程序是使用声明性编程语言(比如 SQL)编写的。不同于更加常见的编程语言,比如 C、C++ 或 Java 编程语言,声明性编程语言不包含完成工作的方式,而包含应有的预期结果。编译器将预期结果的描述转换为编程代码,执行必要的操作来获得预期的结果。
在执行 Streams 应用程序期间,运行时将负责以可靠的方式执行接收槽适配器、源适配器和操作符,将它们分散在可用的处理核心和节点上,以实现最优的吞吐量。
在传入元组的过程中,可使用 Streams 应用程序在流上执行分析。可用的信息在生成后即可使用,所以您拥有这些信息的近实时的视图,无需等待下一个典型处理窗口。