首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

在 WebSphere DataPower XC10 Appliance 中使用 REST Gateway 功能增强您的 ESB

在 WebSphere DataPower XC10 Appliance 中使用 REST Gateway 功能增强您的 ESB

简介IBM WebSphere DataPower XC10 Appliance 固件的 1.0.0.4 版介绍了新的 REST Gateway 功能。通过使用一系列基于 HTTP 的操作,REST Gateway 提供了对简单数据网格的非 Java 的客户端访问。此新功能将能够利用 XC10 设备获得弹性缓存的客户端范围扩展到任何具有 HTTP 功能的客户端,包括 PHP 和 .NET 客户端。通过使用 REST Gateway 功能,XC10 可用作 IBM WebSphere DataPower XI50 Integration Appliance 的面向服务的体系结构(Service-Oriented Architecture,SOA)的结果端缓存。
通过消除对后端的冗余请求、提高对客户端的响应时间以及增加系统总吞吐量,使用 XC10 的简单数据网格作为 XI50 的端缓存可显著减少后端系统上的负载。本文将重点介绍 XC10 的 REST Gateway 功能并提供 XI50/XC10 集成的高级别概述。
XC10 REST Gateway 功能IBM WebSphere DataPower XC10 Appliance 被设计成插入式弹性缓存功您企业基础设施使用。XC10 设备是强大的 WebSphere DataPower 硬件平台和先进的 IBM 分布式缓存技术的结合。
XC10 支持三种类型的数据网格:
  • 简单型数据网格存储简单的键值对。
  • 会话型数据网格存储 HTTP 会话管理数据。
  • 动态缓存型网格存储来自可利用 WebSphere Application Server 动态缓存 API 或基于容器的缓存的应用程序的可缓存对象。
要利用托管在 XC10 设备上的简单数据网格,基于 Java 的应用程序使用 IBM WebSphere eXtreme Scale ObjectMap API 来缓存序列化对象作为键值对。通过使用 REST Gateway 功能,非 Java 的客户端(如 Microsoft® .NET 客户端或 WebSphere DataPower Integration Appliance XI50)可以在简单数据网格中使用 HTTP POST 方法来插入或更新数据,使用 HTTP GET 方法从网格获取数据,使用 HTTP DELETE 方法从网格删除数据。REST API 使用了非常简单的 URI 格式,即:
1
/resources/datacaches/[gridname]/[mapName]/[key]




例如,如果您在 XC10 设备中创建了名为 SOAGrid 的简单数据网格,然后创建 myXC10.ibm.com,则生成的用于访问默认映射(名为 SOAGrid)中的关键名称 my.data.item 的 URL 如下所示:
1
http://myXC10.ibm.com/resources/datacaches/SOAGrid/SOAGrid/my.data.item




REST API 在 HTTP 请求中使用内容类型头部以便确定存储在网格中的数据的格式。您可以在同一网格中存储多种内容类型。
REST API 还支持创建动态映射。在创建简单数据网格时,使用与网格相同的名称创建默认映射。该默认映射没有任何生存时间(Time-To-Live,TTL)过期。因此,网格中的条目将保留在网格上直到它们被明确地删除为止。
通过使用 REST API,应用程序可动态创建所需的附加映射。动态映射可通过下列三个映射 TTL 模板之一进行配置:
  • 非生存时间过期(.NONE)。
  • 最后更新时间(.LUT)过期。
  • 最后访问时间(.LAT)过期。
非常重要的是要知道与映射模板相匹配的映射的第一次操作 — 但尚未建立 — 将导致创建新的动态映射。生存时间值通过在 HTTP 请求中添加 ttl 参数来设置。下面是为键 "a,key" 设置 TTL 值为 120 秒的示例。在使用 HTTP POST 方法在网关中插入或更新 a.key 值时使用 TTL 请求参数。
1
http://myXC10.ibm.com/resources/datacaches/SOAGrid/MyMap.LUT/a.key?ttl=120




为了访问托管在 XC10 设备中的数据网格,基于 Java 的客户端必须提供用户 ID 和密码进行验证并确认客户端已被授权访问网格。这个相同的安全需求适用于对数据网格的 REST 访问。在 HTTP 请求的头部中,该应用程序客户端必须提供基本验证头部(其包含已授权用户的用户 ID 和密码)。此外,如果需要传输级安全性,则 REST Gateway 支持 HTTPS 协议。
在使用 REST Gateway 将数据插入到映射时,使用类型 com.ibm.websphere.xsa.RestValue 的包装器类来包装提供的内容类型和请求正文。通过使用 ObjectMap API,Java 客户端可利用这个相同的 RestValue 类来插入或获取来自映射的数据。清单 1 中的示例显示了如何正确使用 RestValue 类以便访问映射并从 Java 客户端插入数据。
清单 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
RestValue rv = new RestValue();

rv.setContentType(“application/xml”);

String myXml=”<customer>thomas</customer>”;

rv.setValue(myXml.getBytes(“UTF8”));

ogSession.begin();

ObjectMap map = ogSession.getMap(“MyMap.LUT”);

map.insert(“thomas”,rv);

ogSession.commit();




企业服务总线(Enterprise Service Bus,ESB)是 SOA 的关键组件。ESB 在消息层上连接并集成应用程序、服务和业务流程流。其执行调解、消息转换、路由、流程编排并提供服务质量(安全、可靠的消息传递和交易记录管理)。WebSphere Datapower Integration Appliance XI50 是安全的、易于部署的硬件 ESB。在专用硬件工具中,XI50 是高度可缩放的集成解决方案。它能够从服务器卸载 eXtensible 样式表语言转换(eXtensible Stylesheet Language Transformation,XSLT)处理、XPath 路由、XML 转换和其他资源密集型任务(如消息级或传输级安全性处理)以便减少延时、提高吞吐量并增加服务器利用率。
通过使用新的 XC10 REST Gateway 功能,您现在可以将弹性缓存层与 ESB 集成到一起。通常要在应用程序服务器层和数据库层之间插入弹性缓存层;然而,在此配置中(与 ESB 集成),弹性缓存层充当 ESB 的端缓存。托管在 XC10 功能上的简单数据网格用作 XI50 硬件 ESB 的 SOA 结果缓存。在 SOA 中,在所有应用程序请求路由到应用程序以前,它们都通过 ESB。因此,如果从弹性缓存层检索到应用程序请求的结果,则会清除应用程序处理和此请求的处理延时。此结果会显著降低响应时间并减少应用程序处理。
要使用 XC10 作为端缓存,XML 代理在 XI50 处理链中被定义为第一个组件。它将使用一系列缓存策略规则以便确定每一个传入请求的可缓存性。这些规则是特定于应用程序的,但一般情况下,可在请求 URI 中、请求正文中的特定 XML 内容或两者的组合中触发缓存策略规则。使用 XSL 定义这些规则。而后将 XSL 加载到 XI50 内存中。此外,使用一组 XSL 生成对 XC10 REST Gateway 的适当格式的 REST 请求以便存储或检索网格中的数据。
对于这种情况来说,XC10 配置有一个简单数据网格,包含两个映射。第一个映射称为请求缓存,其用于缓存传入的请求。第二个映射称为结果缓存,其用于缓存每一个已缓存请求的结果。这些映射可基于应用程序和数据要求通过适当的 TTL 模板动态创建。为了安全起见,需要在 XC10 上配置唯一的用户 ID 和密码,XI50 使用它们来访问数据网格。
图 1. 高级设计图 1 显示了 XI50 的高级设计,通过使用 REST API 来利用 XC10 简单数据网格作为 SOA 结果端缓存。接收到传入客户端应用程序请求时,XML 代理检查了 URI 或 XML 正文内容以便基于缓存策略规则确定该请求是否满足缓存的标准。如果该请求可缓存,则 XML 代理将执行标准端缓存操作。通过使用基于 REST 的 HTTP GET 方法,XML 代理将查看请求是否缓存在简单数据网格中。如果 HTTP GET 返回了 HTTP 404 NOT FOUND,标志着缓存的丢失,那么 XML 代理将使请求能够通过现有处理流传递到后端系统中托管的应用程序。XML 代理将使用基于 REST 的 HTTP POST 方法以便将请求插入到请求缓存中。XML 代理还将结果缓存到结果缓存,因为它通过 XML 代理流回到客户端应用程序。如果在请求缓存中发现传入的请求,则从结果缓存检索结果,从而绕过后端系统,去除了应用程序和数据层引入的延时。
结束语 通过使用新的 REST Gateway 功能,基于非 Java 的客户端可以访问托管在 IBM WebSphere DataPower XC10 Appliance 中的简单数据网格。REST Gateway 扩展了可以利用弹性缓存技术的客户端的范围。正如此处所描述的那样,通过将 WebSphere DataPower Integration Appliance XI50 与 XC10 集成在一起作为 SOA 结果端缓存可以消除对后端系统的多余请求,从而显著减少后端系统上的负载。
返回列表