Java在网格方面的持久应用:整合途径 (二)

在这个架构中,所有的JPA操作用于替代数据网格,JPA操作通常会使用SQL用于数据库。这包括所有的 查询和所有的更新。根本上,我们用数据网格完全的取代数据库。伴随着JP QL转换支持,尽管数据存储 是专门在中间层操作,我们仍然可以继续使用JPA为我们设计API。对于系统而言,不需要长期持久的存储 ,这是理想状态。如果要求更多的存贮或者查询性能,你可以简单的增加服务器到网格。

数据库——依靠数据网格

即使所有的查询和更新执行都朝着不利于数据网格的方向发展,它仍然有可能融入到一个持久存储器 数据库。在这个构架当中,网格负责传递网格中的操作性能到数据库。比如说,输入一个对象到网格将会 引起数据库的INSERT操作。这个架构的优势是数据仍然可以频繁使用,而更新会返回到数据库,并且可以 报告目的等等。理想的情况下,网格操作不会同步传递到数据库,这样的话会明显地减弱生产力。异步书 写更新到数据库可以保持网格的灵敏性,并且支持持久性存储的要求。

混合以及匹配——多种结构

迄今为止,我们把数据网格作为JPA的存储器对待,并且认为JPA是数据网格上层的API标准。这个架构 之间的不同点实在不明显。对于新对象来说,归结到配置上面,要看JPA是否是首先书写在数据库上,然 后写入数据网格,或者是否它仅仅是写在网格上面。处理更新以及删除操作时候的逻辑与上面相同。就像 我们看到的,查询操作也与此类似。如果我们可以设置如何在一个实体对实体的基础上读取、输入、查询 ,我们就可以混合这些架构。考虑存储器与应用程序之间的往来。在这样一个应用程序中,你可以得到“ 持久的”实体。但是你也会得到短暂的实体。为了一个持久的实体,实体级别的架构可以使得JPA使用数 据网格作为存储器。

按照数据网格修改JPA

如果顺利的话,把JPA与数据网格相结合是很有可能的,并且可以通过提供快速存取来提升系统的生产 力,从而在中间层进行数据管理。但是他们也为JPA应用程序提供测量标准,与普通方法相比它的可测量 性更显著。

传统意义上,提高JPA应用程序的应用率需要提高应用群集上服务器的数量,使用下载平衡来均匀的分 布工作。但是当你提高群集的大小,发现这个群集大小是受你限制的,限制它可以存储的内容而不需要引 进进程之间的通道和连接。更新然后共享数据可以传递到所有的群集服务器,来确定JPA存储器不包含陈 旧的数据。对于一个伴随着N个服务器的群集来说这意味着每一个更新将会产生N-1个信息。当你增加群集 中服务器的数量,每一个服务器处理一个单一的同步更新的花费依据(N-1)2这样的速率增加,因为任何一 个更新发生,每一个服务器都必须与其它所有的服务器通信。更糟糕的是,伴随着群集的增长,每一个服 务器都不得不花费大量的可用处理时间来解决新到达的更新信息。那些非线性的通信以及更新处理成本意 味着群集JPA应用程序的传统方法利用存储器可以很好的工作,他们受限于小到中型号的群集。

通过拥有一个可共享副本,数据网格能够解决通信上的问题,这个副本来自所有服务器的易存取的对 象。一个更新操作是不需要依赖于将信息传递到所有服务器的,因为在下次他们需要更新对象的时候,是 可以跟上变化的。在一个数据网格中,伴随着可升级的点对点通信架构(即不需要中心信息就可以打破瓶 颈),一个更新是依赖于到服务器的通信的,这是个存储对象的服务器,或者是一个存储备份的服务器。 这种情况下,存取每个服务器单一的同步更新上的通信花费是可以用线性函数C(N)描述的,C是副本(基本 的以及备份的)数量的持续反映。这种线性更新的花费意味着通过使用数据网格来扩展群集有可能实现评 测JPA应用程序,以及达到更高的生产力。

时间: 2024-10-09 02:44:22

Java在网格方面的持久应用:整合途径 (二)的相关文章

Java在网格方面的持久应用:整合途径 (一)

Java Persistence API (JPA)是存取Java关系数据的企业级标准.JPA为Java对象映射到数据库图解提 供支持,包括一个简单的API设计和查询语言的表达,查询语言的表达是为了检索来自数据库映射的结果 ,并且因为这个结果改变回执 .JPA通过书写以及维护他们自己的映射代码.允许存在单一的API而不管 平台.应用服务器或者提供持久执行为开发者提高生产率.这些高速缓存解决方案允许经常的存取实体到 存储器,可以减少到数据库查询的次数和大量花费在转换数据库查询结果到对象上的处理时间

求一个java的百科开源开源项目,最好可以二次开发!

问题描述 求一个java的百科开源开源项目,最好可以二次开发! 求一个java的百科开源开源项目,最好可以二次开发! 就是最快的能够搭建一个百科项目,并且可以根据需求进行二次开发! 解决方案 建议用mediawiki,虽然它是php的,但是比其它系统好很多.

Java中增强for循环在一维数组和二维数组中的使用方法_java

一维数组: int[] a={1,2,3}; for(int i:a) { System.out.print(i+" "); } 输出:1 2 3 二维数组: import java.util.Scanner; public class tet { public static void main(String[] args) { //int[][] b={{1,2,3},{4,5,6}};行 int[][] a=new int[5][];//必须明确行数 for(int i=0;i&l

企业Java应用服务器之JBoss7.1与Apahce整合

为什么使用Jboss? 1.Jboss支持热部署,将归档后的JAR.WAR文件到部署目录下自动加载部署,自动更新. 2.在高并发访问时,性能比Tomcat更加优秀.高效. 3.Jboss在设计方面与Tomcat相比,进行了线程池和连接池的优化. 4.Jboss已经成为Java中间件的一个企业级的Web应用,Tomcat是轻量级应用,作为Java开发调试环境使用广泛. 5.配置简单,占用系统资源少. Jboss AS 7.1两种运行模式? Dmain Mode(域模式):多台Jboss AS服务器

详解Java的MyBatis框架与Spring框架整合中的映射器注入_java

MyBatis-Spring允许你在Service Bean中注入映射器.当使用映射器时,就像调用DAO那样来调用映射器就可以了,但是此时你就不需要进行任何DAO实现的编码,因为MyBatis会为你进行. 使用注入的映射器,你的代码就不会出现任何MyBatis-Spring依赖和MyBatis依赖.在我们的应用中有这样一个简单的映射器.你也应该知道映射器仅仅是一个接口: public interface UserMapper { User getUser(String userId); } 这是

java程序调用xfire发布的webService服务(二)

在上一篇的调用xfire发布的webService服务中,我只是从服务端返回了一个字符串给客户端,却没有测试从客户端传递数据给服务端.而实际应用中一般是不太可能只出现这样的应用场景的,因此我便更进一步测试了客户端传递数据给服务端. 因为相关的jar包在上一篇已经说过,因此便不再重复说明,这次的测试步骤如下: 一.测试向服务端传递字符串(重点在第二个):     为了进一步理解服务搭建,我重新写了一个服务端服务类: 接口: package xfireTest; public interface X

Java多线程:“JUC锁”04之公平锁(二)

概要 前面一章,我们学习了"公平锁"获取锁的详细流程:这里,我们再来看看"公平锁 "释放锁的过程.内容包括: 参考代码 释放公平锁(基于JDK1.7.0_40) "公平锁"的获取过程请参考"Java多线程系列--"JUC锁"03之 公平锁 (一)",锁的使用示例请参考"Java多线程系列--"JUC锁"02之 互斥锁 ReentrantLock". 注意: (01)

SpringSide开发实战(四):打通数据持久层的任督二脉

在这里,将创建一个简化的用户管理模块,演示怎样利用SpringSide提供的数据持久层 的功能,包括怎样通过Hibernate的Annotation来配置多对一映射和多对多映射. 大家都知道,现在最流行用户管理模型的是RBAC,也就是基于角色的访问控制模型,在 这种模型中,可以划分多个层次,如用户-角色-资源.用户-角色-权限-资源.用户-角色- 角色组-权限-资源.用户-角色-角色组-权限-操作-资源等等,因此,想要创建一个完善而 复杂的用户管理模块,是相当具有难度的.在Web2.0时代,有一

Java 设计模式 接口型模式 之 适配器Adapter模式 (二)

适配器模式的意图 : 使用不同接口的类所提供的服务为客户端提供其所希望的接口; -- 问题解决场景 : 在 类A 中实现了接口中的抽象方法, 客户端B 已经定义好了方法的调用, 但是调用的方法 与 类A 中的方法名不同, 这时我们就需要适配器模式了; -- eg : 类A 实现了接口A1, 类B 实现了接口B1, 这里C调用 A 和 B 希望 A 和 B 能提供相同方法的接口, 这时我们需要使用适配器模式; 1. 接口适配 (1) 接口适配简介 接口适配 :  -- 问题场景 : 客户端需要调用