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

文档序号:9579072阅读:来源:国知局
即消息中间件32将数据变更通知推送给所有的分布式客户端20中。
[0032]S3,分布式客户端20接收数据变更通知,并根据数据变更通知向第一中间件31发送变更数据获取请求,第一中间件31接收分布式客户端20发送的变更数据获取请求,并向分布式客户端20返回变更数据。
[0033]S4,若分布式客户端20未接收到第一中间件31返回的变更数据,则分布式客户端20向服务器10发送变更数据获取请求,具体地,服务器10根据变更数据获取请求从本地的缓存中查询指定的变更数据,若从缓存中获取到变更数据,则将变更数据发送至分布式客户端20。
[0034]S5,若从缓存中没有获取到变更数据,则从服务器10本地的数据库中加载变更数据,并将获得的变更数据发送至分布式客户端20。由此,可减少数据库的访问压力,提高分布式系统的稳定性。
[0035]另外,在执行上述数据增量更新过程之前,分布式客户端20还需要执行初始化过程,具体地,分布式客户端20还可以用于向服务器10发送初始化请求;服务器10还可以用于:根据初始化请求判断缓存和数据库中的数据版本是否一致,若一致,则从缓存获取初始数据,并向分布式客户端20返回初始数据,若不一致,则从数据库中获取初始数据,并向分布式客户端20返回初始数据。
[0036]上述分布式系统进行数据初始化的过程中,并不是采用直接从数据库中获得数据的方式,而是采用从缓存中获得数据的方式,仅在缓存与数据库中的数据版本不一致时,才从数据库中获得数据,由此,可减少对数据库的访问压力,保证分布式系统的稳定性,提高了后续分布式系统的访问性能。
[0037]具体地,当分布式系统启动之后,在进行首次业务操作的过程中,将会触发分布式客户端20缓存的初始化工作。具体而言,分布式客户端20向服务器10发送初始化请求,以获得服务器10中最新的数据。服务器10接收分布式客户端20发送的初始化请求,并根据初始化请求首先判断当前服务器10缓存和数据库中的数据版本是否一致,若一致,则月艮务器10直接将缓存的数据发送至分布式客户端20。若不一致,则服务器10加载数据库中的数据,并将数据库中的数据发送至分布式客户端20,同时,服务器10根据数据库中的数据版本对本地的缓存中的数据版本进行更新,以使数据库与缓存中的数据版本同步。
[0038]本申请实施例的分布式系统,通过在服务器和分布式客户端之间增加中间件,使得分布式客户端可以优先从新增加的中间件中获得增量变更数据,由此,减少了对分布式系统中数据库的访问压力,降低了系统资源消耗,提高了分布式客户端的数据增量更新速度和分布式系统的稳定性。
[0039]为了实现上述实施例,本申请还提出一种数据增量更新方法。
[0040]图2是本申请一个实施例的数据增量更新方法的流程图,该数据增量更新方法可应用于包括服务器、分布式客户端和位于服务器和分布式客户端之间的中间件的分布式系统,其中,中间件可以包括第一中间件,如图2所示,该方法包括:
[0041]S201,分布式客户端接收服务器发送的数据变更通知。
[0042]具体地,服务器获得变更数据后,首先将变更的数据放置到第一中间件和缓存中,并通过第二中间件向分布式客户端发送数据变更通知,分布式客户端通过第二中间件例如消息中间件接收服务器发送的数据变更通知。
[0043]需要说明的是,本申请实施例中分布式客户端获取变更数据的过程是数据的增量更新过程,该增量更新的方式相对于全量更新的方式可以大大减少对系统资源的消耗,有效提高数据的更新效率。
[0044]S202,分布式客户端根据数据变更通知从第一中间件获取变更数据,并向分布式客户端返回变更数据。
[0045]具体地,在分布式客户端用于接收来自服务器的数据变更通知后,根据数据变更通知向第一中间件发送变更数据获取请求,第一中间件接收分布式客户端发送的变更数据获取请求,并向分布式客户端返回变更数据。
[0046]在该实施例中,分布式客户端在未从第一中间件获取到变更数据时,则从服务器的缓存获取变更数据,若未从缓存获取到变更数据,则从服务器的数据库获取变更数据。
[0047]具体地,若分布式客户端未接收到第一中间件返回的变更数据,则分布式客户端向服务器发送变更数据获取请求,服务器根据变更数据获取请求从本地的缓存中查询指定的变更数据,若从缓存中获取到变更数据,则将变更数据发送至分布式客户端其中,缓存可以包括但限于虚拟缓存,例如,虚拟缓存为Java虚拟机缓存(Javavirtual machine cache,Jvm-cache)。由此,通过从本地的缓存中获得变更数据,可以降低因第一中间件存储失效而导致分布式系统不稳定情况的发生,保证系统的稳定性。
[0048]若从缓存中没有获取到变更数据,则从服务器本地的数据库中加载变更数据,并将获得的变更数据发送至分布式客户端通过这种间接依赖数据库的方式不仅可以保证分布式客户端可以获得变更数据,还可以减轻数据库的访问压力,进一步可提高分布式系统的稳定性。
[0049]另外,在该实施例中,在执行上述数据增量更新过程之前,分布式客户端还需要执行初始化过程,具体地,如图3所示,该初始化过程包括:
[0050]S301,服务器接收分布式客户端发送的初始化请求。
[0051]S302,服务器根据初始化请求判断缓存和数据库中的数据版本是否一致,若一致,则执行S303,若不一致,则执行S304。
[0052]S303,服务器从缓存中获取初始数据,并向分布式客户端返回初始数据。
[0053]在缓存和数据库中的数据版本一致时,服务器将从缓存中获得的初始数据返回客户端,分布式客户端根据接收到的初始数据对分布式客户端进行初始化。
[0054]S304,服务器从数据库中获取初始数据,并向分布式客户端返回初始数据。
[0055]上述分布式系统进行数据初始化的过程中,并不是采用直接从数据库中获得数据的方式,而是采用从缓存中获得数据的方式,仅在缓存与数据库中的数据版本不一致时,才从数据库中获得数据,由此,可减少对数据库的访问压力,保证分布式系统的稳定性,提高了后续分布式系统的访问性能。
[0056]本申请实施例的数据增量更新方法,通过在服务器和分布式客户端之间增加中间件,使得分布式客户端可以优先从新增加的中间件中获得增量变更数据,由此,减少了对分布式系统中数据库的访问压力,降低了系统资源消耗,提高了分布式客户端的数据增量更新速度和分布式系统的稳定性。
[0057]在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0058]此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1