文档介绍:在集群环境中对象关系模型缓存一致性设计摘要:企业开发中常用到对象关系映射,随着技术和业务的发展,应用系统常需要集群部署来减轻每一台服务器的压力。对象关系映射中的缓存技术对于提升性能有较大益处,但在集群环境中常导致缓存不一致,从而影响业务处理的正确性。文中设计了缓存同步的设计方案,试图解决同步问题,为在集群环境中部署使用ORM缓存技术提供借鉴意义。关键词:对象关系映射;缓存;集群;同步方案中图分类号:TP393文献标识码:A文章编号:2095-130208-00-03 0引言随着信息化技术的快速发展,人们依赖于使用软件解决日常工作中碰到的问题。软件的规模随着技术及业务的发展变得越来越庞大和复杂。从过去个人桌面软件的普及,到现在的分布式软件架构,软件系统已经和企业现有的业务模式紧密结合在一起。对于企业级系统,其最为核心的部分是与业务紧密关联的各类数据。在数据存储方面,企业使用最多的还是关系型数据库系统。关系型数据库从数学理论发展而来,和目前主流的软件开发方式,即面向对象的软件开发方式不匹配。对象关系映射技术的出现从很大程度上解决了两者的不匹配问题,即以系统开发程序员的角度来看,数据是面向对象的,而数据依然存储于关系型数据库,即数据逻辑面向对象,物理关系存在于关系模型中。使用对象关系映射可通过减轻对底层数据库的访问频率来提高系统性能。该性能提升功能通过启用缓存来实现,即数据的获取可以通过缓存而非访问数据库来满足。缓存通常存在于内存中,相对于数据库存取数据需要访问磁盘寻找数据,再将数据通过网络传输给请求者,当缓存命中时所带来的性能提升十分明显。依据局部性原理,设置一个合理的缓存将会有一个可观的缓存命中率,可明显提升系统的存取性能。在ORM中开启缓存存在一个严重的问题,即在集群环境中会产生数据不一致的现象。以B/S模式为例:当一个应用只部署在一个Web站点上时,不存在上述问题;但当该应用采取集群方式部署在多个不同的Web站点上时,极有可能出现相同的对象。在不同站点中存在不同缓存项会导致生产环境中的业务数据出现错误。目前主流的ORM框架均不建议采用集群方式来部署,但随着业务的发展,逐渐增多的业务会对系统产生更大的压力,采用集群方式部署以减小单台设备的压力乃大势所趋。本文通过提出几种设计方案来解决集群部署采用ORM技术系统时存在的缓存不一致问题。 1集群环境中ORM缓存不一致性分析在企业应用系统中,目前使用最为广泛的架构为浏览器-服务器架构,即B/S模式[1]。如图1所示,在B/S模式中,客户端使用浏览器,通过HTTP协议访问部署于应用系统的Web服务器[2]。客户向Web服务器请求或提交数据,服务器对客户的访问进行处理,将结果返回给客户,产生的数据存储在数据库中。当Web服务器中使用了ORM技术后,Web服务器同数据库服务器交换数据的方式将有所变化,如图2所示。Web服务器不再直接通过SQL或存储过程和数据库服务器进行交互,而是将数据对象提交给对象关系映射的框架,该框架再依据系统操作使用SQL或存储过程完成数据存取,将数据存储于数据库或从中获取数据。使用了ORM框架后,为取数方式增添了灵活性,易于开发且具有理想的访问性能[3]。启用ORM缓存,当框架从数据库中成功取数后,获取的数据将会在框架中留有副本,称之为缓存项,所有的缓存项构成了ORM的数据缓存。当进行下一