分布式系统及数据增量更新方法

文档序号:9579072阅读:661来源:国知局
分布式系统及数据增量更新方法
【技术领域】
[0001]本申请涉及计算机技术领域,尤其涉及一种分布式系统及数据增量更新方法。
【背景技术】
[0002]随着互联网的飞速发展,使用网络的用户越来越多,如何快速响应用户的请求已经是各个互联网公司争取用户的重要的手段之一。例如,一个包含海量信息的网站,如果该网站响应用户请求的速度过慢,随着时间的推移,该网站的用户量会有大量流失。
[0003]目前,可通过缓存例如分布式缓存的方式提高响应的速度,由于缓存的数据存放在内存中,并且在数据访问的过程中不需要与数据库,例如关系数据库进行交互,因此,相对于从数据库查询来说,直接从缓存取数据要快得多,通常情况下,从缓存中取数据最少要比从数据库中取数据快10倍以上,而且可以支持更大的并发访问量。
[0004]分布式缓存的关键技术在于确保缓存数据与数据库数据的一致性,现有的分布式缓存实现方案通常是首先在数据库中添加标记位,然后分布式缓存与服务器定时心跳,判断数据库中的数据标记是否变更。如果变更,则全量更新缓存中的数据。由于在数据变更的过程中要依赖数据库(Database,DB),因此现有的分布式缓存技术存在以下几方面的问题:
[0005]1、在对数据变更时全量刷新,资源消耗量比较大。例如,假设数据总量是1000条记录,一次变更往往只会变更其中的几条,如果在变更过程中全量加载所有数据,计算资源消耗较大。
[0006]2、变更后的数据往往是以数据库中的数据为准,但是读写分离模式下,如果写数据库与读数据库之间数据产生延迟,将会导致应用无法读取到最新写入的变更信息。
[0007]3、在分布式缓存数据初始化的过程中,数据库的访问量大,数据库访问压力大,系统不稳定。
[0008]因此,基于分布式缓存的系统更新缓慢且不稳定。

【发明内容】

[0009]本申请旨在至少在一定程度上解决相关技术中的技术问题之一。
[0010]为此,本申请的第一个目的在于提出一种分布式系统,该系统可降低系统资源消耗,提高分布式客户端的数据增量更新速度和分布式系统的稳定性。
[0011]本申请的第二个目的在于提出一种数据增量更新方法。
[0012]为达上述目的,本申请第一方面实施例提出了一种分布式系统,包括服务器、分布式客户端和位于服务器和分布式客户端之间的中间件,中间件包括第一中间件,其中:服务器,用于向分布式客户端发送数据变更通知;分布式客户端,用于接收来自服务器的数据变更通知,根据数据变更通知向第一中间件发送变更数据获取请求,并接收第一中间件返回的变更数据;第一中间件,用于接收来自分布式客户端的变更数据获取请求,根据变更数据获取请求获取变更数据,并向分布式客户端返回变更数据。
[0013]本申请实施例的分布式系统,通过在服务器和分布式客户端之间增加中间件,使得分布式客户端可以优先从新增加的中间件中获得增量变更数据,由此,减少了对分布式系统中数据库的访问压力,降低了系统资源消耗,提高了分布式客户端的数据增量更新速度和分布式系统的稳定性。
[0014]为达上述目的,本申请第二方面实施例提出了一种数据增量更新方法,该方法包括:分布式客户端接收服务器发送的数据变更通知;以及分布式客户端根据数据变更通知从第一中间件获取变更数据,并向分布式客户端返回变更数据。
[0015]本申请实施例的数据增量更新方法,通过在服务器和分布式客户端之间增加中间件,使得分布式客户端可以优先从新增加的中间件中获得增量变更数据,由此,减少了对分布式系统中数据库的访问压力,降低了系统资源消耗,提高了分布式客户端的数据增量更新速度和分布式系统的稳定性。
【附图说明】
[0016]图1a是本申请一个实施例的分布式系统的结构示意图。
[0017]图1b是本申请一个实施例的分布式系统进行数据变更的示意图。
[0018]图2是本申请一个实施例的数据增量更新方法的流程图。
[0019]图3是本申请一个实施例的数据初始化过程的流程图。
【具体实施方式】
[0020]下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
[0021]下面参考附图描述本申请实施例的分布式系统及数据增量更新方法。
[0022]图1a是本申请一个实施例的分布式系统的结构示意图,如图1a所示,该系统包括服务器10、分布式客户端20和位于服务器10和分布式客户端20之间的中间件30,中间件30包括第一中间件31,其中:
[0023]服务器10用于向分布式客户端20发送数据变更通知;分布式客户端20用于接收来自服务器10的数据变更通知,根据数据变更通知向第一中间件31发送变更数据获取请求,并接收第一中间件31返回的变更数据;第一中间件31用于接收来自分布式客户端20的变更数据获取请求,根据变更数据获取请求获取变更数据,并向分布式客户端20返回变更数据。需要说明的是,本申请实施例中分布式客户端获取变更数据的过程是分布式客户端数据的增量更新过程,该增量更新的方式相对于全量更新的方式可以大大减少对系统资源的消耗,有效提高数据的更新效率。
[0024]另外,分布式客户端10还用于:在未接收到第一中间件31返回的变更数据后,向服务器10发送变更数据获取请求,并接收服务器10返回的变更数据。相应地,服务器10还用于:根据变更数据获取请求从本地的缓存获取变更数据,并向分布式客户端20返回变更数据,其中,缓存可以包括但限于虚拟缓存,例如,虚拟缓存为Java虚拟机缓存(Javavirtual machine cache, Jvm-cache)。由此,通过从本地的缓存中获得变更数据,可以降低因第一中间件存储失效而导致分布式系统不稳定情况的发生,保证系统的稳定性。
[0025]进一步地,服务器10还可以用于:若未从缓存获取到变更数据,则从本地的数据库获取变更数据,并向分布式客户端20返回变更数据。也就是说,只有在缓存无法获取变更数据时,服务器10才从数据库中读取数据,通过这种间接依赖数据库的方式不仅可以保证分布式客户端可以获得变更数据,还可以减轻数据库的访问压力,进一步可提高分布式系统的稳定性。
[0026]为了使分布式缓存可以从第一中间件31中获得变更数据,需要将变更数据保存至分布式缓存中,因此,服务器10还用于:当获得变更数据时,向第一中间件31发送变更数据;第一中间件31还用于:接收来自服务器10的变更数据并保存。
[0027]同样地,为了使分布式缓存可以从第一中间件31中获得变更数据,需要将变更数据保存至分布式缓存中,因此,服务器10还用于:当获得变更数据时,向缓存发送变更数据。
[0028]另外,上述中间件还可以包括第二中间件32,具体地,服务器10可以通过第二中间件32例如消息中间件向分布式客户端20发送数据变更通知。
[0029]下面对分布式系统进行数据变更的过程进行详细介绍,如图1b所示,该过程包括:
[0030]SI,服务器10获得变更数据后,将变更的数据放置到第一中间件31和缓存中。
[0031]S2,服务器通过第二中间件
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1