面向企业的云计算:第2部分:Amazon EC2 公共云上的 WebSphere sMash 和 DB2 Express-C

本系列文章的第1部分讨论了云计算的基本方面,包括云的层和不同的云类型及其优缺点,并解释了为何了解云对企业开发人员很重要。本文主要考察公共云,以及如何使用 IBM® WebSphere® sMash 和 IBM DB2® Express-C Amazon Machine Images (AMI) 交付宿主在 EC2 公共云基础设施上的 Web 应用程序。

简介

在 3 种类型的云中 —— 公共云、私有云和混合云 —— 公共云提供的产品是最出色、最成熟的。可访问性和廉价性是导致公共云日趋流行的两个关键特征。为了实现可访问性和廉价性,Amazon Elastic Compute Cloud (EC2) 基础设施提供了宿主 Amazon Machine Image 实例的公共云,AMI 可向用户交付各种功能。为了让用户能够利用 EC2,IBM 最近发布了 Amazon Machine Images (AMI),它包含了一些针对 EC2 平台的流行软件;这些 AMI 可以根据开发许可免费获得。此外,IBM 还支持运行在 EC2 基础设施中的特定 IBM 软件。

本文概述了公共云,并讨论了如何使用 IBM WebSphere sMash 和 IBM DB2 Express-C Amazon Machine Images 交付宿主在 EC2 基础设施上的 Web 应用程序。

企业和公共云

为了理解企业如何才能利用公共云计算解决方案,请从以下两方面考虑:

企业使用公共云提供的应用程序。这个应用程序可能用于处理雇员的工资数据,也可能是一个客户关系管理系统。通过利用以这种方式交付的应用程序,企业就不再需要在私有数据中心上安装和维护应用程序。企业还可能节省一部分与许可费用相关的成本,因为大部分云提供的服务都是根据使用量计费的。 企业利用基于云的宿主解决方案向用户交付应用程序。通过这种方式,企业就不再需要维护和更新产品系统,因为云供应商负责提供基础设施资源,以满足用户对应用程序的需求。这个模型还能促进企业服务的普及,因为任何连网的计算机都可以随时随地访问通过公共云交付的解决方案。

不管在什么场景下,一个常见的主题就是业务的底线价值。很明显,公共云能够帮助企业减少与拥有软件和数据中心基础设施组件相关的成本。虽然不是很直观,但是使用公共云能够让企业快速响应服务需求变更,从而使服务能够进入新的市场,并且让宝贵的人力资源集中于业务创新,而不是仅交付支持业务的技术基础设施。

IBM 和公共云

IBM 是公共云的积极贡献者,它提供的解决方案让企业能够从云获得应用程序,以及通过公共云交付自己的终端用户应用程序。从应用程序提供商的角度来看,IBM 提供了 IBM Lotus® Live、IBM Lotus Sametime® Unyte® 和宿主在公共云上的软件开发工具。这套工具让用户能够利用云提供的服务进行交流、讨论、协作和创新。除了提供这些服务之外,IBM 的 Global Business Services 部门还帮助组织实现利用公共云产品的解决方案,从而实现所需的云价值。

本文的剩余部分主要关注 IBM 如何使您通过利用公共云基础设施交付高效的应用程序。如前所述,IBM 在 Amazon Machine Images 中包含了几个企业级产品,因此可以在流行的 Amazon EC2 基础设施中使用这些软件。IBM AMI 包括:

IBM WebSphere Portal IBM Lotus Web Content Management Standard Edition IBM WebSphere sMash IBM Informix® Dynamic Server Developer Edition 11.5 IBM DB2 Express-C 9.5

通过在 Amazon EC2 基础设施上免费提供这些软件,IBM 实现了一个为超过 400,000 个用户提供服务的生态系统,并且吸引了 80% 以上的利用云计算开发服务的开发人员。

要更多地了解 IBM 关于开发人员和云计算的信息,请访问 developerWorks 空间云计算站点。本文分别阐述了 WebSphere sMash 和 DB2 Express-C AMI 的平台即服务(Platform as a Service,PaaS)和数据即服务(Data as a Service,DaaS)。

WebSphere sMash 和 DB2 Express-C

WebSphere sMash 和 DB2 Express-C 都是面向开发人员的强大工具。通过 WebSphere sMash,您可以使用流行的技术和模式(比如 Dojo、PHP、Groovy 和 REST 服务)创建 Web 2.0 式的应用程序。DB2 Express-C 提供高效、响应性好和可靠的企业数据,并且包含了纯 XML 处理功能。然而,通过综合利用这些技术交付响应性好、面向数据的富 Web 应用程序,甚至还能实现更大的价值。

本文包含的样例应用程序演示了一个餐馆座位应用程序,它粗略的展示了 WebSphere sMash Zero Resource Model (ZRM) 和 DB2 Express-C 数据库提供的功能。可以轻松地扩展这个应用程序使用的模式,以处理更加复杂的数据和数据关系。Zero Resource Model 通过与 DB2 Express-C 集成提供了丰富的前端体验,该前端由轻量级的高效、高响应性后端所支持。

IBM AMI 随一个免费的开发许可提供,但要记得在完成之后终止实例。否则,Amazon 将按小时继续收取宿主实例所需的费用。
设置 AMI

要使用 IBM AMI,必须遵循以下步骤,并且第一步是先决条件:

设置一个 Amazon Web Services (AWS) 帐户。这个帐户用于管理 EC2 使用。 获取并配置 WebSphere sMash AMI和 DB2 Express-C AMI。在配置 DB2 Express-C 实例时,为了进行演示请使用默认的用户名。现在还没有创建数据库;这些细节在下一小节描述。 根据提供的说明将 AMI 部署到您的 AWS 帐户。 创建并激活数据库

在将 DB2 Express-C 和 WebSphere sMash AMI 部署到 EC2 之后,配置正在运行的 DB2 Express-C 实例的数据库。这个数据库存储应用程序需要使用的表。

使用 SSH 登录并验证您的 DB2 AMI 实例。在登录之后,使用 su - db2inst1 命令切换到 db2inst1 用户。 使用 createDatabase 命令为应用程序创建数据库。在 /home/db2inst1/bin 目录中,输入 ./createDatabase RSTDB 命令。

图 1. 创建数据库

停止并重启 DB2 服务以激活新的数据库。使用 su 命令切换回根用户,然后运行 rcdb2 stop 和 rcdb2 start 命令。

图 2. 激活数据库

在重启服务之后,RSTDB 数据库就被激活,并且 DB2 Express-C 实例在端口 50001 上运行。现在,DB2 Express-C 实例的配置已经完成。WebSphere sMash 中的 ZRM 用于与后台集成,因此所有表都被自动配置好。

设置应用程序

WebSphere sMash AMI 实例设置完毕之后,从 http://<ec2_host>:8070/ 登录到 AppBuilder 应用程序。在这里,您将创建一个在样例中使用的 WebSphere sMash 应用程序。为此,单击 Create new application 在 AppBuilder 的左边面板中创建一个示例应用程序。当提示输入名称时,请输入 RestaurantSeating。在创建应用程序之后,在控制台的中央面板中单击应用程序名开始为应用程序添加内容。

利用 Zero Resource Model

受 WebSphere sMash 支持的 ZRM 的目的是大大简化通过 REST 访问后台数据存储。该模型支持通过少量代码和配置实现这种访问。仅需为您的数据和资源处理程序(用于处理与数据的 REST 交互)创建一个模型。资源处理程序仅包含少量代码,用于处理输入数据,并且 ZRM 完全隐藏了与后端数据库的交互。

为了开始在示例中使用 ZRM,需要为您的数据创建资源模型。这些资源模型定义应用程序中的数据的格式,并由 ZRM 用于访问存储在数据库中的数据。您现在应该已经登录到 AppBuilder,因此选择 New file => Zero Resource Model in app/models => New form。

图 3. 在 AppBuilder 中创建新的资源模型

为每个条目创建一个 JSON 数据模型。这些 JSON 模型定义组成资源的属性。这包括关于属性的数据类型的信息以及其他信息,比如默认值和数据长度等。因为您创建的是餐馆座位系统,所以需要为 4 个不同的条目创建资源模型: 正在等待的顾客 餐桌 座位 服务员

在 WebSphere sMash 中这些模型被声明为 JSON 格式。您可以使用 AppBuilder 中的设计编辑器,或直接输入资源模型的 JSON 声明。不管使用哪种方式,都应该有清单 1 中声明的 4 个 JSON 文件。

清单 1. 资源模型声明

// start patron.json (model for waiting customers){ "fields": { "name": { "label": "Name", "required": true, "type": "string", "description": "", "default_value": "", "max_length": 50 }, "capacity_requested": { "label": "Number needed", "required": true, "type": "integer", "description": "", "default_value": "" }, "seated": { "label": "", "required": true, "type": "string", "description": "", "default_value": "false", "max_length": 5 } }}// end patron.json// start rest_table.json (model for restaurant tables){ "fields": { "capacity": { "label": "Capacity", "required": true, "type": "integer", "description": "", "default_value": "" }, "table_type": { "label": "Type", "required": true, "type": "string", "description": "", "default_value": "", "max_length": 50 } }}// end rest_table.json// start waiter.json (model for waiters){ "fields": { "name": { "label": "Name", "required": true, "type": "string", "description": "", "default_value": "", "max_length": 50 } }}// end waiter.json// start seating.json (model for a seating in the restaurant){ "fields": { "table_id": { "label": "Table Id", "required": true, "type": "integer", "description": "", "default_value": "" }, "patron_name": { "label": "Patron Name", "required": true, "type": "string", "description": "", "default_value": "", "max_length": 50 }, "waiter_name": { "label": "Waiter Name", "required": true, "type": "string", "description": "", "default_value": "", "max_length": 50 } }}// end seating.json

现在,可以设置资源处理程序了。资源处理程序提供对资源模型定义的数据的 REST 访问,在这个示例中用 Groovy 语言实现它们。在 app/resources 中选择 New file => Resource handler 创建 4 个资源处理程序,每个资源模型一个。资源处理程序应该与资源模型同名,但其文件扩展名为 .groovy 而不是 .json。在 app/resources 中选择 Resource handler。每个资源处理程序内部中有一个 onList、onRetrieve、onCreate、onUpdate 和 onDelete 方法。每个方法分别对应于 HTTP 中的 GET、GET、POST、PUT 和 DELETE 方法。清单 2 显示了服务员资源模型的资源处理程序示例。

清单 2. waiter.groovy 文件

def onList(){ ZRM.delegate();}def onRetrieve(){ ZRM.delegate();}def onCreate(){ ZRM.delegate();} def onUpdate() { ZRM.delegate();}def onDelete(){ ZRM.delegate(); }

通过用 ZRM.delegate() 代替文件的所有内容,前面的 groovy 声明可以更加简洁。没有必要定义每个方法,但这样做可以在每个方法中插入定制代码(必要时)。

创建数据库表

在创建了资源模型和处理程序之后,您可以在 WebSphere sMash 中使用命令行工具和配置文件创建数据库表。

使用 SSH 登录到 WebSphere sMash AMI 实例,并更新 /home/smash/apps/RestaurantSeating/config/zero.config 文件。添加后端数据库的名称、位置和配置。

清单 3. 集成 ZRM 和 DB2 Express-C

/config/db/zero-resource = {"class" : "com.ibm.db2.jcc.DB2SimpleDataSource","driverType" : 4,"serverName" : "ec2-75-101-207-229.compute-1.amazonaws.com","portNumber" : 50001,"databaseName" : "RSTDB","user" : "db2inst1","password" : "passw0rd"}

将 db2cc.jar 和 db2cc_license_cu.jar 复制到 WebSphere sMash 应用程序库。在前面的步骤中,您已经提供了 ZRM 所需的信息,包括数据资源类名、数据库位置和数据库的访问信息。接下来,因为您指向的是 com.ibm.db2.jcc.DB2SimpleDataSource 数据源类,所以需要确保 WebSphere sMash 能够使用适当的 DB2 库。使用 SCP 程序从 DB2 Express-C AMI 实例获取 /home/db2inst1/sqllib/java/db2cc.jar 和 /home/db2inst1/sqllib/java/db2cc_license_cu.jar 文件。将这两个文件复制到 /home/smash/apps/RestaurantSeating/lib 目录。从 WebSphere sMash 实例的 /home/smash/apps/RestaurantSeating 目录运行 zero 模型,以将新的 JAR 文件添加到应用程序的类路径。 现在,您可以为数据库表定义初始数据,这是可选的。为了在创建表之后节省输入时间,您可以使用一个特性定义一些初始数据,从而在创建表时填充这些数据。这些数据在应用程序的 app/models/fixtures 目录下的 initial_data.json 文件中定义。这个文件中的条目是在先前步骤中定义的资源模型的实例。要生成表并用初始数据填充它们,请运行 zero 模型 sync 命令。最后,会在 DB2 Express-C AMI 实例上创建表,并且所有在 initial_data.json 文件中定义的数据都将在表创建之后插入到其中。 创建用户界面

现在,需要让系统的用户能够查看数据并与之交互。WebSphere sMash 提供定制的 Dojo 小部件,它们可以利用 ZRM 中的实用程序访问数据库中的数据。这些小部件提供开箱即用的功能。您可以将它们放置到 HTML 页面的任何位置,以提供必要的配置信息,结果将得到一个非常友好的界面,在其上,可以使用先前创建的资源处理程序创建、读取、更新和删除后端数据库中的数据。

定义一个与 ZRM 资源处理程序交互的 DataStore,并定义一个使用 DataStore 的 DataGrid。在餐馆座位系统中,引位员必须能够查看当前正在等待的顾客,添加新的顾客,以及查看当前的座位数。您可以使用 zero.resource.DataStore 和 zero.grid.DataGrid 显示顾客信息。(还可以将该技术应用到座位数据 —— 或任何配置为使用 ZRM 的数据)。

清单 4. 顾客 DataGrid 和 DataStore

// patron DataStore<span dojoType="zero.resource.DataStore" id="patronDataStore" jsId="patronDataStore" contextRoot="./resources" resourceCollection="patron"></span>// patron DataGrid<div dojoType="zero.grid.DataGrid" id="patronDataGrid" visibleFields="name,capacity_requested,id" store="patronDataStore" readonly="true" style="width: 348px; height: 271px;"> </div>

DataStore 引用顾客 (patron.json) 资源集,而 DataGrid 引用 DataStore。图 4 显示了输出的结果。

图 4. 顾客 zero.grid.DataGrid

除了显示数据的 DataGrid 之外,您还可以添加新的顾客或为现有的顾客找到座位。可以使用 ZRM 轻松地将新数据添加到后端数据库中。

清单 5. 添加新的客户数据

function addPatron() { dojo.xhrPost({ url: "resources/patron", form: "addPatronForm", load: function (data) { hideAddPatron(); displayWaitingPatrons(); }, // Call this function if an error happened error: function (error) { console.error ('Error: ', error); } });}

使用 HTML 和 JavaScript 与 ZRM 资源处理程序进行通信。前面的例子导致调用 patron.groovy 资源处理程序,该处理程序从内部委托 ZRM 使用新数据填充 DB2 数据库。图 5 扩展了先前描述的概念,从而解决了当前座位数信息的显示和更新。使用一些 HTML 和 JavaScript 代码生成如图 5 所示的用户界面。

图 5. 餐馆座位系统的用户界面

最后得到一个简洁、美观、易用的用户界面,它让引位员能够完全控制餐馆的座位情况。

结束语

您可以下载针对本文样例的完整 WebSphere sMash 应用程序的代码。您需要一些资源来试用这个应用程序,并且可以利用 AMI 和 EC2 驻留 WebSphere sMash 和 DB2 Express-C 平台。遵循本文提供的说明步骤,快速启动和配置 AMI 以在 Amazon EC2 中使用它们。

通过 WebSphere sMash 的 ZRM,您可以关注数据、数据关系以及如何更好地向用户显示这些关系,而不是关注数据库通信的低级方面。将这些优点和 DB2 Express-C 提供的健壮、响应性强并且全面的数据库功能结合起来,您就可以通过浏览器交付丰富的、面向数据的用户体验。

时间: 2024-11-01 12:20:32

面向企业的云计算:第2部分:Amazon EC2 公共云上的 WebSphere sMash 和 DB2 Express-C的相关文章

面向企业的云计算:第2部分

本文配套源码 面向企业的云计算:第2 部分:Amazon EC2公共云上的WebSphere sMash 和DB2 Express-C 简介 在 3 种类型的云中 -- 公共云.私有云和混合云 -- 公共云 提供的产品是最出色.最成熟的.可访问性和廉价性是导致公共云日趋流行的两个关键特征.为了实现 可访问性和廉价性,Amazon Elastic Compute Cloud (EC2) 基础设施提供了宿主 Amazon Machine Image 实例的公共云,AMI 可向用户交付各种功能.为了让

面向企业的云计算,第1部分:了解云的一些基本概念

引言 什么是云计算? 这个问题看起来似乎是老生常谈并且很简单,但事实上却不是这样.目前,网上有数百(甚至数千) 种云计算定义.要全面回答此问题,在尝试定义之前先了解什么不是云计算也许是更便捷的方法. 有些人说云计算只不过是一直在Web 2.0 运动前沿的软件作为服务 (SaaS) 模型的另一种称谓.还 有一些人说,云计算是一种市场宣传,只不过是老技术(如效用计算.虚拟化或网格计算)换了张新面 孔.此观点忽略了这样一个事实,即云计算比这些特定技术中的任何一个的范围都要广.为了确保做到 这一点,云解

面向企业的云计算,第3部分:使用WebSphere CloudBurst创建私有云

简介 数据中心成本包括三个组成部分:硬件.物理成本(比如能源和制冷)以及行政管理.在这三者之中,行政管理成本在总体持续成本中占有相当大的一部分.因此,消除手工流程.错误和重复性内容将大大减少并控制 IT 成本. 新的 IBM WebSphere CloudBurst Appliance 以及 IBM WebSphere Application Server Hypervisor Edition 提供了部署和管理功能,可以快速.可重复地部署 WebSphere Application Server

百度曝光云计算策略 从“专有云”到“公共云”

9月2日,主题为"潜龙骄首 志在凌云"的云计算分论坛首次登陆百度世界大会.会上,百度执行总监范丽正式宣布开放百度云计算平台,将智能数据服务.典型行业应用和公共云计算平台作为云计算开放服务的创新性发展方向.聚集众多业内顶尖云计算专家的百度云架构技术团队也在会上首次集体公开亮相.百度云计算总工程师林仕鼎,系统部副总监朱永忠,基础架构部高级工程师刘斌.徐串.肖伟等与参会者分享了百度在云计算领域的技术实力和积累,并披露了百度云计算的开放路线图. 据悉,百度云计算服务器基础架构和海量数据处理能力

公共云高层为希望建立混合云的企业提供的十条建议

在先前的日子里,服务供应商需要依靠来自企业的大力帮助才能搞明白如何建设自己的数据中心.而到了现在的云时代,实际情况已经变得正好完全相反了."在之前七年的时间里,我们一直密切关注企业发展的具体情况,并竭尽全力来对它们在做的各项工作进行模仿.现如今,情况却变成了企业都在看着我们的动作,以此为榜样来开展自身的工作."在InterOp展会上的 一场专题讨论中,Rackspace公司的首席技术官约翰·安格斯提出了这样的观点. "在过去的时间,高端[计算能力]曾经被叫做企业级.但从现在的

面向企业云计算终端和个人手持电脑将占主导地位

在云中解放终端设备在刚刚结束的2009北京科博会上,联想集团副总裁兼联想研究院院长韦卫表示,随着云计算产品.市场和业务模式的逐渐成熟,个人电脑将赋予诸多创新应用.在未来3~5年,面向企业的云计算终端和个人手持电脑将占主导地位. 此言一出,众皆默然.充斥着神秘魅力的云计算再次夺入眼帘.杀毒防火需要云,企业办公离不开云.很多普通用户无法理解什么是云,但还是会关心这朵朵祥云会给我们带来哪些便利? 同时,业界大鳄们纷纷对云计算施展行动,谷歌.IBM和戴尔争相发布云计算战略,戴尔甚至申请把云计算作为自己的

企业在公共云环境中需确保安全

在某些情况下,企业在分析最有价值的和敏感的信息的过程中,需要减少潜在的未经授权的访问或http://www.aliyun.com/zixun/aggregation/18546.html">信息泄漏.在其他情况下,高度敏感的领域包含重要的信息需要分析,或者必须保持整个生命周期的分析.而在所有情况下,安全问题必须被首要考虑. 所以,当企业要在公共云环境执行分析时,要考虑这些数据在公共云环境下安全吗,能够像在一家数据中心一样安全吗?关于这个问题的答案可谓众说纷纭,但如下的有几个关键因素,值得您

大数据给Amazon EC2带来的挑战

http://www.aliyun.com/zixun/aggregation/2467.html">Amazon现货实例是在 云计算环境中进行大数据分析任务的理想选择, 但是你可能会遇到一些问题. 例如,将大数据迁往云计算可能不仅成本昂贵而且速度缓慢. 如果你希望分析的大量数据已经位于云计算中,那么现货实例就可立刻运行了.但是,如果上传和存储大量数据的成本要超过使用云计算资源所带来的成本节省,那么也许使用内部集群或内部私有云计算则可能更为适合. 如果现货实例是满足你进行大数据分析任务需求

在企业内部打造一个公共云体验

云计算已经彻底改变了我们在企业内部建立IT系统的方式.事实上,自从云计算问世以来,企业IT的目标便一直是能够在自己的数据中心内部复制云计算的能力. 但麻烦的问题则在于,云计算系统的建立是全新的,这意味着他们需要从零开始部署,这样才能够通过借助基于云的资源来使用最现代的技术和方法,进而才能够更具创新性.但对于绝大多数企业组织机构而言,他们并没有足够雄厚的资金来支持从零开始的云计算的部署.企业组织机构的那些已经采购并存在了几十年的硬件和软件设备分别处于不同的成熟水平,而这些结构也必须在操作运营过程中