使用Java编程语言来构建Streams应用程序的优势

然后详细地介绍了通过 Java 运算符模型描述文件以及 API 来构建 Streams 应用程序的方法,并讨论了 Java 运算符的生命周期与线程安全;之后对 Java 运算符各个层面 Metrics 的监控进行了讨论;最后给出了 Java 运算符的调试方法。本文特别适合流计算应用的">开发人员阅读,对需要了解和设计流计算架构的人员也有很大的参考价值。

IBM InfoSphere Streams( 以下简称 Streams) 是 IBM 于 2009 年推出的具有高可靠性,高可扩展性,分布式流计算平台,前瞻性地把支持每秒 6G 或者每小时 21600G(相当于互联网上所有网页数量之和)数据处理能力作为系统设计的指标,实现了流数据“永恒分析”的能力。它包含一个运行时环境 ( 或者称为实例 ) 和编程模型来简化需要对大批量连续流数据进行提取、过滤、分析以及关联的应用程序的开发,能够广泛的应用于制造、零售、交通运输、金融证券以及监管各行各业的解决方案之中,使得实时快速做出商业决策的理念得以实现。

Streams 应用程序的总体结构如下图所示,是由一系列运算符通过输入 / 输出端口相互连接而构成的。为方便描述,我们首先给出 Streams 应用程序中的一些术语:

流:代表任何来自于数据源的连续数据流,数据的表现形式是由一系列属性构成的元组。 运算符:流数据处理的功能组件,接收一个或多个输入流,对流数据对应的元组和属性进行处理,最终产生一个或多个输出流。 输入端口:用于接收其他运算符输出流的端口。 输出端口:用于产生输出流的端口。 处理元素(PE):Streams 应用程序被物理上分割为的一系列处理单位,一般以动态连接库的形式存在。 运算符融合:一种把多个运算符融合产生一个 PE 的优化技术,以减少数据在多个运算符之间的传输代价。 作业 (Job): Streams 应用程序在 Streams 运行时间上的表现形式。

图 1. Streams 应用程序结构

Java 编程语言作为第三代高级语言,自 20 世纪 90 年代诞生以来,以其使用简单、完全面象对象、平台可移植性、健壮的沙盒安全机制、动态性,以及大量可用的开发包等一系列优势,在互联网分布式环境下得到了极其广泛的应用,几乎涵盖了互联网应用的方方面面。相比较 C++/C++ 程序员,Java 程序员只需关注于业务逻辑的开发,而无需纠结于与系统相关的资源分配与释放等细节,这些琐碎的工作统一由 Java 虚拟机 (JVM) 处理,从而极大地提升了开发效率。由于运行在虚拟机之上,Java 程序与原生的 C/C++ 程序相比,性能上可能略逊一筹,但虚拟机经过几十年的发展与优化,这种差距在逐步缩小。尤其在 CPU 性能大幅提高的今天,这种性能上的差异表现的越来越不明显。

基于上述考虑,Streams 平台提供了使用 Java 编程语言来构建 Streams 应用程序的框架,具体包括 Java 运算符模型描述文件以及 Java 运算符 API 两部分。下图是实现数据库存储功能 DBPersist 运算符的一个具体的例子,图中左半边 xml 通过一系列属性提供了该运算符的模型定义,右半边对应于 Java 类的实现,主要是元组的处理逻辑。在这个具体的例子当中,运算符的 Java 实现除了依赖于自己的 Jar 包之外,还依赖于一些第三方的 Jar 包,这些依赖关系都需要在运算符模型中指定清楚。

图 2. Java 运算符模型以及实现

时间: 2025-01-31 07:42:18

使用Java编程语言来构建Streams应用程序的优势的相关文章

使用Java编程语言构建IBM InfoSphere Streams应用程序

简介 IBM InfoSphere Streams( 以下简称 Streams) 是 IBM 于 2009 年推出的具有高可靠性,高可扩展性,分布式流计算平 台,前瞻性地把支持每秒 6G 或者每小时 21600G(相当于互联网上所有网页数量之和)数据处理能力作为系统设计的指标 ,实现了流数据"永恒分析"的能力.它包含一个运行时环境 ( 或者称为实例 ) 和编程模型来简化需要对大批量连续流数 据进行提取.过滤.分析以及关联的应用程序的开发,能够广泛的应用于制造.零售.交通运输.金融证券以

GWT v2.2发布 使用Java编程语言编写AJAX前端

Google Web Toolkit的缩写,有了 GWT可以使用 Java 编程语言编写 AJAX 前端,然后 GWT 会交叉编译到优化的http://www.aliyun.com/zixun/aggregation/33906.html">JavaScript 中,而 JavaScript 可以自动在所有主要浏览器上运行.GWT允许开发人员使用 Java 编程语言快速构建和维护复杂但性能高的 JavaScript 前端应用程序,从而降低了开发难度,尤其是与 Eclipse Google

从IBM InfoSphere Streams应用程序调用Python代码

还可以在一个 Streams 应用程序的上下文内调用 Python 代码.学习如何直接从 IBM InfoSphere Streams 应用程序调用 Python 代码. IBM InfoSphere Streams 是一个高性能的实时事件处理中间件.它独特的优势在于能够从各种不同的数据来源获取结构化和非结构化数据,以用于执行实时分析.它通过将一种称为 SPL(Streams Processing Language,流处理语言)的易于使用的应用程序开发语言与一个分布式运行时平台相结合来完成此任务

使用Grails构建富Internet应用程序,第1部分:使用Grails和Flex构建Web应用程序

简介:富 Internet 应用程序(Rich Internet Applications,RIA)通过浏览器保证桌面应用程序 的动态性和功能.RIA 的主要特征之一就是将表示层移动到客户机,并使用服务器上健壮的 RESTful 服 务层支持它.这种想法借助 SOUI(Service Oriented User Interface)和 SOFEA(Service Oriented Front End Architecture)之类的热门词汇得到传播. 关于本系列 这个系列探索一些应 用程序架构,

使用Google Web Toolkit、Apache Derby和Eclipse构建Ajax应用程序 1

GWT 使得构建富 Ajax 浏览器客户机界面比构建传统 Java GUI 界面还要轻松.然而,即使是 GWT 这样出色的技术也无法独自构建出一个完整的 Web 应用程序.您还必须有一个服务器上的数据存储和某种类型的框架,以便将数据转换成 GWT 可从服务器传递给其客户的 Java 对象.在这一系列文章中,您将使用 Apache Derby 这个 100% 纯 Java 数据库,可将其嵌入与其余服务器端代码相同的 Java 虚拟机(JVM)之中. 本系列的第一篇文章主要探讨 GWT.在这里,您将

JSF 1.2入门,第1部分 构建基本应用程序

简介:JavaServer Faces(JSF)技术是一种服务器端框架,它提供一种基于组件的 Web 用户 界面开发方式.JSF 1.2(集成在 Java Enterprise Edition 5 中)纠正了 JSF 的一些缺陷并添加了一 些出色的特性.这个教程系列讨论如何使用 JSF 1.2.本系列偏重示例,较少解释理论 - 这是为 了帮助您尽快开始使用 JSF. 开始之前 关于本系列 这个教程系列讨论 JavaServer Faces(JSF)技术的基础知识.JSF 是一种用于 Java W

AJAX:Java Pet Store 2.0应用程序简介

使用 Ajax 创建用于无缝数据交互的 Web 2.0 web 应用程序是一项复杂的任务,Ajax 是一种包含( 但不仅限于)Asynchronous JavaScript 和 XML 的技术.为了帮助您准确理解什么是 Web 2.0,以及 Ajax 如何改善用户体验,Java BluePrints 程序 小组开发了 Java Pet Store 2.0 参考应用程序.通过 探索 Pet Store 2.0 应用程序的用例.设计和实现,您将了解构建具有类似功能的应用程序的更多信息 . Java

用开源工具创建BlackBerry应用程序,第3部分 构建社交网络应用程序

在数字时代,社交网络应用程序对消费者和业务市场的影响是最有吸引力的 奇迹之一.营销专家改变了与潜在客户打交道的方式,具有相同志趣的群体能够 快速组建起来,这都与社交网络分不开.2008 年秋季的美国总统竞选表明,社 交网络已经成为成功的政治竞选的一部分.社交网络与流行的.强大的 BlackBerry 平台的结合将是一个充满活力的组合.本教程是"用开源工具 创建 BlackBerry 应用程序"系列的第 3 部分,它探索了为何 BlackBerry 是编写和部署社交网络应用程序的强大移动

在Google App Engine Java版上构建电子书分享网站

简介:"云计算"是目前热门的技术方向,本文从 Google 的云计算平台 App Engine 入手,简单介 绍了 Google 面向 Java 开发人员的云计算平台.从一个实际的电子书分享应用构建出发,讲述了如何在 Google App Engine 平台上构建这个应用程序. "云计算"基本概念的介绍 根据维基百科上的定义,云计算是一种动态易扩展,而且通常是通过互联网提供的虚拟化的资源计算 方式,用户不需要了解云内部的细节,也不必具有云内部的专业知识,或者直接控制