在WebSphere ESB中创建一种基于数据库的动态缓存模式

根据已普遍被人们接受的 SOA 架构,SOA ">基础架构中的集成层为其他组件提供了无状态服务。所以在任何 SOA 实现中,数据会流经后端与前端系统之间的集成层。依据这一方案,许多请求会反复访问相同的信息。因此,将数据缓存在集成层中是一种限制资源消耗和改善响应时间的有效方式。

在一个最新的项目中,作者面临着扩展简单的缓存模式的需求。集成层提供了服务,使一个基于门户的前端可支持用户使用滚动、过滤和排序等功能处理大量对象,同时将数据页面显示给他们。因为数据来自一个相对较慢的后端,所以缓存它很有帮助。但门户不能承载所有这些信息,因为它的每用户粒度会创建大量缓存的数据,进而显著影响性能。

因此,我们在集成层中实现了一个支持每用户粒度的数据缓存。为了实现对从后端检索的对象列表进行滚动、排序和过滤的功能,我们必须以一种有状态的、逐个用户的方式实现缓存,依据当前的 SOA 架构标准,这是一种罕见的模式。

本文将介绍此模式、基于它的解决方案,以及 IBM® WebSphere® Enterprise Service Bus(以下简称 WebSphere ESB)提供的基础技术。本文将介绍一个智能的、动态的、基于数据库的强大缓存模式,当与 IBM DB2 结合使用时,它使 WebSphere ESB 能将工作负载(尤其是处理元素列表的工作负载)从任何后端系统卸载掉。这个缓存解决方案所提供的价值在于,它能感知缓存的数据结构的语义,以便为调用方提供过滤、分页和排序机制。该缓存模式基于扩展预先打包的 WebSphere ESB 中介原语的能力,本文将概述如何开发您自己的中介原语。

为了充分理解本文,您应拥有使用 WebSphere ESB 的集成经验,基本了解 IBM DB2® 及其支持使用 SQL/XML 和 XQuery 语言对 XML 数据进行排序和查询的 pureXML 特性。

WebSphere ESB 基于数据库的缓存模式的概述和用途

WebSphere ESB 的基于数据库的缓存模式(称为有状态业务对象列表缓存)支持对包含一组业务对象的服务响应消息进行智能、有状态地缓存和反复检索,以便:

使基于浏览器的前端系统能够按页面检索数据集,对其进行过滤和排序,为最终用户提供更便捷的访问 最大限度地减少发送给后端服务和系统的请求数量

为了正常运行,WebSphere ESB 上的功能必须从调用方接收指定了数据检索条件的信息。因此,对有状态业务对象列表缓存的任何调用,必须包含用于检索已缓存业务对象列表的信息,服务请求方会将这些条件作为请求消息的一部分来进行传递。图 1 显示了对象 ResultRetrieveCriteria,表 1 详细描述了它的属性:

图 1. ResultRetrieveCriteria 业务对象

表 1. ResultRetrieveCriteria 属性 属性名称 描述 pagingStartIndex 定义列表的开始索引,以便进行分页 pagingMaxResult 定义将返回以 pagingStartIndex 开头的列表中的
多少个对象 sortField 定义将用于对该列表排序的字段。XPath 表达式必须是相对于响应对象中的列表根元素的路径。 sortASC 定义列表按升序 (true) 还是降序 (false) 排序 searchListName 定义响应对象中将应用于搜索的列表名称。 searchFields 将属性(nameXPath 和值)列表定义为搜索条件。属性名称的 XPath 表达式必须是相对于响应对象中的列表根元素的路径。 searchCombinationType 定义搜索组合类型。所有搜索条件都使用 AND 或 OR 链接。

缓存与图形用户界面 (GUI)(比如门户)结合使用,以显示对象列表和提供排序、搜索和分页等功能。WebSphere ESB 端缓存组件必须包含一个与前端系统的逻辑会话,才能将缓存的值与执行查询的用户相匹配。为了支持这种每用户粒度,每个缓存的元素由两个键标识(这两个键在结合使用时必须是惟一的):

缓存会话键

这个键用于某个实体(通常是一个用户)与资产之间的逻辑会话。该键的值应在为
同一个用户创建的多个缓存条目中保持相同。可将前端会话的 HTTP 会话 ID 用于缓存会话键。 缓存条目键 这个键从业务数据视角惟一地标识缓存的元素。它可以包含请求业务对象的多个元素,这些元素的组合必须惟一地标识响应业务对象实例。

该缓存模式使用缓存会话键和缓存条目键将业务对象列表存储为数据库中的序列化 XML。该缓存模式使用 IBM DB2 及其 pureXML 功能来存储缓存的数据,并实现分页、排序和过滤。该缓存模式将对已缓存数据的请求转换为在数据库中执行的 SQL 语句。在逻辑上,该缓存模式充当着数据库功能的代表,将它们转换为服务调用。

时间: 2024-11-13 06:56:12

在WebSphere ESB中创建一种基于数据库的动态缓存模式的相关文章

用哪种离线数据库实现离线缓存比较好

问题描述 用哪种离线数据库实现离线缓存比较好,有没有人做过,现在的IndexdDB是比较成熟的了吧 解决方案 解决方案二:sqlite吧

在WebSphere sMash中集成Java和PHP

引言 本文说明如何使用 Java Bridge 从 PHP 访问 Java 类.其中将讨论如何调用 Java 方法和访问字段(实例和静态字段).另外还将讨论异常处理及 PHP 和 Java 之间的类型转换. ZSL.WebSphere sMash 和 Apache Lucene 有关真实示例,本文逐步说明了使用 PHP 编写的简单搜索引擎的创建工作,此引擎可使用 Apache Lucene 建立文件索引和进行搜索.Apache Lucene 是一个高性能的全功能文本搜索引擎库,完全使用 Java

基于反馈的动态负载平衡调度算法在Hadoop异构环境中的设计与实现

基于反馈的动态负载平衡调度算法在Hadoop异构环境中的设计与实现 南京理工大学  李元洪 本文在介绍云计算的基本概念.体系结构及其应用发展的基础上,分析了云计算模型的实现框架和容错机制.针对云计算Hadoop开源平台,详细分析了其中的分布式文件系统(HDFS, Hadoop Distributed File System)和MapReduce计算模型,并对Hadoop平台下的作业调度技术.FIFO.公平队列和计算能力作业调度算法做了深入的研究. 对Hadoop现有的调度算法在异构环境下的计算性

一种基于EMF模型的在GEF中判断创建连接线有效性的方法

简介: 结合目前比较受欢迎的 EMF(Eclipse Modeling Framework)和 GEF(Graphical Editing Framework)技术,提出了一种在图形化开发中创建连接线时普遍适用的验证方法. 最后给出了一个创建 连接线时动态 Schema 验证的例子,并根据 Schema 的定义列出创建连接线的真值表.针对该真值表的每 项进行验证,保证不符合 Schema 定义规则的模型对应的图形之间不能创建连接线,降低了 Schema 验证 和修改的复杂性. 一种基于 EMF

如何在WebSphere ESB流中实现用户上下文

您是否正在 IBM® Integration Designer(以下简称 Integration Designer)中编写中介流,以便将它们部署在 http://www.aliyun.com/zixun/aggregation/13387.html">WebSphere Enterprise Service Bus (ESB) 上,并且需要在两个或更多中介流之间传递额外的信息?您可以通过阅读文档来决定使用哪些 "用户定义的上下文" 来完成此任务,并且您会选择使用用户上下

JS中创建函数的三种方式及区别_基础知识

1.函数声明 function sum1(n1,n2){ return n1+n2; }; 2.函数表达式,又叫函数字面量 var sum2=function(n1,n2){ return n1+n2; }; 两者的区别:解析器会先读取函数声明,并使其在执行任何代码之前可以访问:而函数表达式则必须等到解析器执行到它所在的代码行才会真正被解释执行. 自执行函数严格来说也叫函数表达式,它主要用于创建一个新的作用域,在此作用域内声明的变量,不会和其它作用域内的变量冲突或混淆,大多是以匿名函数方式存在,

JavaScript中创建类/对象的几种方法总结_javascript技巧

在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的. JS对象是一种复合类型,它允许你通过变量名存储和访问,换一种思路,对象是一个无序的属性集合,集合中的每一项都由名称和值组成(听起来是不是很像我们常听说的HASH表.字典.健/值对?),而其中的值类型可能是内置类型(如number,string),也可能是对象. 一.由一对大括号括起来 复制代码 代码如下: var emptyObj = {

轨迹系列——一种基于中值滤波的轨迹纠偏方法和几点思考

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在无路网的情况下,如何进行轨迹纠偏也是一个很多人在研究的内容,各种方案均有很多,有基于不同滤波算法的,也有基于机器学习的,等等.这里,我探讨一种实现相对简单的基于中值滤波来进行轨迹纠偏的方法. 2.中值滤波简介 中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代

使用动态缓存提升WPS和WebSphere ESB解决方案的性能

使用动态缓存提升 WebSphere Process Server 和 WebSphere ESB 解决方案的性能 当您在开发 SCA 解决方案时,会经常需要一些难以获取或难以计算的数据.为了获得这些数据,您可 能需要调用 Web 服务.连接到数据库.执行复杂的逻辑运算或从多个数据源汇总数据.如果这些数据不 会随时间发生变化,您可以通过适度使用缓存来获得显著的性能提升.本教程将向您展示一种简单有效的 缓存技术 DynaCache,它基于一个成熟的产品特性,能够帮助您满足应用程序性能需要.此外,通