专利名称:一种Web客户端与服务器的数据同步方法和系统的制作方法
技术领域:
本发明涉及网络信息传输技术领域,更为具体地,涉及一种基于服务器推送的Web客户端缓存同步方法和装置。
背景技术:
B/S (BiOwser/Server,浏览器/服务器)架构以其高可伸缩性,实施、管理和使用的简单方便成为网络应用的主流,基于B/S架构的WEB客户端数据缓存技术则是提升应用性能的最有效的方式之一,所谓WEB客户端数据缓存,即将频繁访问的基础数据缓存到客户端本地,使用时直接访问本地缓存中的数据,不从服务器端获取。实践证明,这种客户端缓存的工作模式可以大大的降低服务器和网络的负载、减小数据的加载延迟、提升了系统 响应速度。在高并发情况下,效果更加明显。缓存方案中核心问题就是确保客户端与服务端的数据一致性,在服务器数据更新情况下,客户端访问到的应是即时数据而不是过时数据,好的缓存同步方案不但能保证数据一致性,还要尽可能降低同步时间,减少服务器压力。常见缓存同步方案一般采用Ajax轮询技术,Ajax是一种异步请求技术,可以向服务器发出请求并处理响应,而不阻塞用户。Ajax轮询是指客户端首先向服务器发起数据同步请求,在收到应用服务器的响应数据后客户端响应函数马上处理数据,同时再次发出新的同步请求重新建立连接,直到所有数据同步完成。Ajax轮询的优点就是在不刷新整个页面前提下同步数据,使得WEB应用程序更加迅捷的响应用户交互,缺点是频繁的交互增加了建立和关闭网络连接的频率,增加网络延时和服务器的负载压力。
发明内容
鉴于上述问题,本发明的目的是提供一种Web客户端与服务器的数据同步方法和系统,通过服务器对同步数据的主动推送,以避免了客户端和服务器的频繁交互,降低网络延时和服务器的负载压力。根据本发明的一个方面,提供了一种Web客户端与服务器的数据同步方法,包括服务器在基础数据表中的基础数据发生变动时将所述变动内容生成变动记录同步保存至变动日志表中;服务器根据Web客户端的同步请求从所述变动日志表中查询所述变动记录,在服务器与所述Web客户端的持续连接状态下分批将所述变动记录传输至所述Web客户端;其中,所述Web客户端的同步请求包括最近一次同步时间戳和需要同步的基础数据范围;所述服务器根据所述同步请求查询所述同步时间戳后发生的且属于所述基础数据范围的变动记录。其中,优选的方案是,在基础数据表中的基础数据发生变动时,所述服务器将所述变动内容以Sql语句的形式、XML格式的形式、或Json格式的形式生成变动记录同步保存至所述变动日志表中。根据本发明的另一方面,提供了一种Web客户端数据同步推送服务器,包括同步触发器,用于在基础数据表中的基础数据发生变动时将所述变动内容生成变动记录同步保存至变动日志表中;变动日志表,用于保存通过所述同步触发器同步的基础数据表的变动记录;同步请求响应单元,用于根据Web客户端的同步请求从所述变动日志表中查询所述变动记录,在与所述Web客户端的持续连接状态下分批将所述变动记录传输至所述Web客户端;其中,所述同步请求响应单元根据所述Web客户端需要同步的基础数据范围查询所述Web客户端最近一次同步时间戳后发生的变动记录。 根据本发明的再一方面,还提供一种包括Web客户端和前述的服务器的Web客户端与服务器的数据同步系统。利用上述根据本发明Web客户端与服务器的数据同步方法和装置,能够为WEB客户端缓存提供基于“服务器推送”机制的高效同步方案,更加充分地利用服务器的计算能力和存储能力,减小网络传输与交互压力,提升应用的响应速度和用户体验。为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明旨在包括所有这些方面以及它们的等同物。
通过参考以下结合附图的说明及权利要求书的内容,并且随着对本发明的更全面理解,本发明的其它目的及结果将更加明白及易于理解。在附图中图I为根据本发明的Web客户端与服务器的数据同步方法的流程图;图2为根据本发明实施例的同步数据在服务器端以及客户端-服务器的数据同步过程示意图;图3为根据本发明实施例的客户端数据同步的数据处理方法示意图;图4为根据本发明实施例的Web客户端数据同步推送服务器的方框示意图。在所有附图中相同的标号指示相似或相应的特征或功能。
具体实施例方式在下面的描述中,出于说明的目的,为了提供对一个或多个实施例的全面理解,阐述了许多具体细节。然而,很明显,也可以在没有这些具体细节的情况下实现这些实施例。在其它例子中,为了便于描述一个或多个实施例,公知的结构和设备以方框图的形式示出。以下将结合附图对本发明的具体实施例进行详细描述。图I示出了根据本发明实施例的Web客户端与服务器的数据同步方法的流程图。如图I所示,本发明提供的Web客户端与服务器的数据同步方法包括如下步骤SllO :服务器在基础数据表中的基础数据发生变动时将变动内容生成变动记录同步保存至变动日志表中;
S120 :服务器根据Web客户端的同步请求从变动日志表中查询上述变动记录,在服务器与Web客户端保持持续连接状态下分批将所查询到的变动记录传输至所述Web客户端。其中,Web客户端的同步请求包括最近一次同步时间戳和需要同步的基础数据范围,以便服务器根据该同步请求查询Web客户端在最近一次同步时间戳后发生的且属于基础数据范围的变动记录。通过上述流程可以看出,本发明提供的Web客户端与服务器的数据同步方法在数据的同步传输方面包括两个部分Server (服务器)端数据同步和Client-Server (客户端-服务器)数据同步。图2示出了根据本发明实施例的同步数据在服务器端以及客户端-服务器的数 据同步过程。如图2所示,Server端数据同步采用数据库触发器技术监听需要同步的基础数据表(S201)。当基础数据表中的基础数据发生变动时,同步触发器便将这些变动内容以Sql语句形式、XML格式的形式或者Json格式的形式生成变动记录同步统一保存到一个变动日志表中,作为下一步Client-Server数据同步的数据来源。Client-Server数据同步采用“反Ajax”技术,通过实现“服务器推送”来解决Ajax轮询频繁发送请求的问题。Web客户端的同步时机可以选择登录系统或打开业务界面时,客户端向服务器发起同步请求(S202),同步请求中包括最近一次同步时间戳及需同步的基础数据范围信息,服务器从变动日志表中进行数据分页查询(S203),查询客户端最近一次同步时间戳后发生的变动记录,然后在服务器与Web客户端保持持续连接状态下分批、源源不断的将查询到的需同步的基础数据范围内的变动记录传输给客户端,而不需客户端发送多次同步请求。这种通过最近一次同步时间戳及需同步的基础数据范围进行限定同步范围的增量、按需下载策略,可以实现分散下载数据,减少每次同步的数据量,达到降低服务器、网络压力的目的。下面分别对实施本发明过程中的Server端数据同步和Client-Server数据同步做更加详细的说明。Server端数据同步客户端缓存数据一般为基础数据,基础数据具有数量稳定、变动较少等特点,易于客户端存储与数据同步,Server端数据同步主要是将基础数据表变动内容通过触发器同步到变动日志表中。图3示出了根据本发明实施例的客户端数据同步的数据处理方法。如图3所示,当用户维护基础数据时,触发器将根据数据变动类型分别处理如果是插入操作,那么将直接在变动日志表中记录一条“插入”类型的变动记录,内容包括基础数据表名、更新时间戳、基础数据本身的键值、变动类型、变动描述语句等信息;如果是更新操作,触发器首先将删除本条基础数据对应的所有“更新”类变动记录,然后重新插入一条“更新”类型的变动记录,记录最新变动情况,保证变动记录表中只有一条更新类型记录;如果是删除操作,触发器直接在日志表中插入一条“删除”类型的变动记录。通过上述处理,每一条基础数据在变动日志表中的变动记录数量始终不多于三条,每条分别代表一种变动类型(插入、删除、更新),进而达到遏制变动记录随基础数据修改而无限增长的目的。变动记录的相对稳定保证了服务器端分页查询的效率,同时也减少了网络传输的数据量和交互频率,提升同步效率。Client-Server 数据同步如图2所示,Client-Server数据同步采用Http流技术将服务器端数据分批“推送”给客户端(参见步骤S204 S207),在同步期间不会像Ajax轮询方式频繁建立、释放连接,而是一直保持连接打开状态。具体实现方式为首先在页面中动态创建隐藏的iframe标签,该标签的src属性指向服务器端同步servlet路径,向服务器发起同步请求,建立连接;servlet在接收到请求后采用分页查询方式循环检索所有符合条件的变动记录(S204、S206),每检索到一页数据即发送给客户端进行处理(S205、S207)。每次发送时servlet会创建一个script标签,该标签内部带有JavaScript同步函数,同步函数的参数就是由变动记录组装成的JSON数组字符串构成,servlet使用Response的FlushO方法分段发送数据;当客户端Iframe被附加上这一 script标签时,标签中的同步方法将会在客户端执行,JSON数组中的每条变动Sql会将最终结果更新到Web客户端嵌入式数据库中,保证客户端与服务器数据一致,同步完成后会记录最后同步的时间戳,然后销毁iframe对象从而释放 客户端与服务器端的连接。在传送数据过程中还可以采用Http压缩技术对数据进行压缩,以降低数据体积。在本发明的一个具体实施例中,压缩后的数据体积可以缩小至原来的1/10左右,大大降低传送数据体积,传输数据所消耗的时间也随着体积的缩小而减少。另外,数据不断传输会增加iframe所在页面占用内存的开销,为了防止客户端内存的溢出,还可以在客户端对iframe对象接收数据的数量进行控制,在数据量达到上限(预设限值)时销毁iframe对象,强制浏览器释放内存,然后再次创建iframe对象重新连接服务器,经过实践测试,每次发送5000条记录,同步10次销毁重建iframe情况下,同步效果最好。上述实践测试的环境服务器和客户端电脑配置如下
权利要求
1.一种Web客户端与服务器的数据同步方法,包括 服务器在基础数据表中的基础数据发生变动时将所述变动内容生成变动记录同步保存至变动日志表中; 服务器根据Web客户端的同步请求从所述变动日志表中查询所述变动记录,在服务器与所述Web客户端的持续连接状态下分批将所述变动记录传输至所述Web客户端;其中, 所述Web客户端的同步请求包括最近一次同步时间戳和需要同步的基础数据范围;所述服务器根据所述同步请求查询所述同步时间戳后发生的且属于所述基础数据范围的变动记录。
2.如权利要求I所述的数据同步方法,其中,所述Web客户端在登录系统或者打开业务界面时向服务器发起同步请求。
3.如权利要求I所述的数据同步方法,其中,在基础数据表中的基础数据发生变动时,所述服务器将所述变动内容以Sql语句的形式、XML格式的形式、或Json格式的形式生成变动记录同步保存至所述变动日志表中。
4.如权利要求3所述的数据同步方法,其中,所述变动记录包括基础数据表名、同步时间戳、基础数据本身的键值、变动类型、变动描述语句。
5.如权利要求I所述的数据同步方法,其中,在所述服务器在基础数据表中的基础数据发生变动时将所述变动内容生成变动记录同步保存至变动日志表中的过程中, 如果所述变动为插入操作,则所述服务器直接在所述变动日志表中记录一条“插入”类型的变动记录; 如果所述变动为更新操作,则所述服务器首先删除本条基础数据对应的所有“更新”类变动记录,然后重新插入一条“更新”类型的变动记录; 如果所述变动类型为删除操作,则所述服务器直接在日志表中插入一条“删除”类型的变动记录。
6.如权利要求I所述的数据同步方法,其中,所述服务器在接收到所述Web客户端的同步请求后采用分页查询方式循环检索所有符合条件的变动记录,每检索到一页数据即传输给所述Web客户端。
7.如权利要求6所述的数据同步方法,其中,所述服务器每次向所述Web客户端传输检索到的数据时,创建一个内部带有同步函数的标签;以及, 在客户端执行所述标签中的同步方法。
8.如权利要求7所述的数据同步方法,其中,所述Web客户端在所述同步完成后记录最后同步的时间戳。
9.如权利要求7所述的数据同步方法,其中,当所述Web客户端接收所述服务器传输的变动记录次数达到预设限值时,所述Web客户端记录最后同步的时间戳并主动断开与所述服务器的连接,释放浏览器内存,然后再次创建与所述服务器的连接请求。
10.一种Web客户端数据同步推送服务器,包括 同步触发器,用于在基础数据表中的基础数据发生变动时将所述变动内容生成变动记录同步保存至变动日志表中; 变动日志表,用于保存通过所述同步触发器同步的基础数据表的变动记录; 同步请求响应单元,用于根据Web客户端的同步请求从所述变动日志表中查询所述变动记录,在与所述Web客户端的持续连接状态下分批将所述变动记录传输至所述Web客户端;其中, 所述同步请求响应单元根据所述Web客户端需要同步的基础数据范围查询所述Web客户端最近一次同步时间戳后发生的变动记录。
11.一种Web客户端与服务器的数据同步系统,包括Web客户端和如权利要求10所述的服务器。
全文摘要
本发明提供了一种Web客户端与服务器的数据同步方法和装置,其中的方法包括服务器在基础数据表中的基础数据发生变动时将所述变动内容生成变动记录同步保存至变动日志表中;服务器根据Web客户端的同步请求从所述变动日志表中查询所述变动记录,在服务器与所述Web客户端的持续连接状态下分批将所述变动记录传输至所述Web客户端;其中,所述Web客户端的同步请求包括最近一次同步时间戳和需要同步的基础数据范围;所述服务器根据所述同步请求查询所述同步时间戳后发生的且属于所述基础数据范围的变动记录。本发明能够更加充分地利用服务器的计算能力和存储能力,减小网络传输与交互压力,提升应用的响应速度和用户体验。
文档编号H04L29/08GK102904887SQ20121036685
公开日2013年1月30日 申请日期2012年9月26日 优先权日2012年9月26日
发明者黄小卫, 姜韬, 叶丽艳, 王雪峰, 刘兵 申请人:东软集团股份有限公司