应用服务系统及数据一致性控制方法与流程

文档序号:15932360发布日期:2018-11-14 01:50阅读:146来源:国知局

本发明涉及数据存储技术领域,特别是应用服务系统及数据一致性控制方法。

背景技术

现有技术中,应用服务系统的结构如图1所示,应用服务为用户端提供相应的服务,与服务相关的数据会存储在数据库中。在用户端数量较多时,为了减低单个应用服务的负载压力,会构建多个应用服务,每个应用服务负载部分用户端,在某个应用服务的数据发生变更时,会同时更新数据库中的源数据。

在应用服务运行的过程中,为了保证各应用服务的缓存中数据的一致性,针对每个应用服务,该应用服务首先从该应用服务的缓存中尝试读取需要的数据,若应用服务的缓存中没有所需的数据或数据已经过期,则从数据库中读取数据,并将数据更新到应用服务的缓存中。

然而,发明人在实现本发明的过程中发现,现有技术至少存在如下问题:

现有应用服务系统中,数据的更新是被动的,在应用服务的缓存中,通过设定数据有效时间的方式使数据过期,在应用服务缓存中的数据过期后从数据库中读取数据,并更新应用服务缓存中的数据。在数据过期前,会存在应用服务的缓存与数据库中数据不一致的情况,数据一致性弱。



技术实现要素:

本发明实施例的目的在于提供一种应用服务系统及数据一致性控制方法,以实现增强数据的一致性。具体技术方案如下:

第一方面,本发明实施例提供了一种应用服务系统,所述系统包括:

服务器及数据库,所述服务器包括缓存控制单元、多个应用服务及多个代理客户端,其中,各所述应用服务对应不同的代理客户端;

所述应用服务,用于提供指定的服务;

所述数据库,用于存储数据;

所述缓存控制单元,用于在检测到数据发生变更时,生成用于表征该变更的更新消息,并向各所述代理客户端发送所述更新消息;

所述代理客户端,用于接收所述更新消息,并按照所述更新消息,更新所述代理客户端对应的应用服务的缓存数据。

可选的,本发明实施例的应用服务系统还包括:缓存中间件;

所述缓存中间件为所述应用服务所在的服务器分配给所述应用服务的指定内存;

所述代理客户端,具体用于接收所述更新消息,按照所述更新消息,更新所述代理客户端对应的应用服务的指定内存中的缓存数据。

可选的,本发明实施例的应用服务系统还包括:缓存中间件;

所述缓存中间件为所述应用服务所在的服务器的共享内存;

所述代理客户端,具体用于接收所述更新消息,按照所述更新消息,更新所述代理客户端对应的应用服务的共享内存中的缓存数据。

可选的,在本发明实施例的应用服务系统中,所述代理客户端为agent进程,且所述agent进程为内核进程。

可选的,在本发明实施例的应用服务系统中,所述缓存控制单元还用于:周期性检测各所述代理客户端的运行状况,在存在运行状况异常的代理客户端时,重新启动该运行状况异常的代理客户端所在的服务器。

第二方面,本发明实施例提供了一种数据一致性控制方法,应用于应用服务系统,所述应用服务系统包括服务器及数据库,所述服务器包括缓存控制单元、多个应用服务及多个代理客户端,各所述应用服务对应不同的代理客户端,所述方法包括:

所述缓存控制单元在检测到数据发生变更时,生成用于表征该变更的更新消息,并向各所述代理客户端发送所述更新消息;

所述代理客户端接收所述更新消息,并按照所述更新消息,更新所述代理客户端对应的应用服务的缓存数据。

可选的,所述应用服务系统还包括:缓存中间件,所述缓存中间件为所述应用服务所在的服务器分配给所述应用服务的指定内存;

所述代理客户端接收所述更新消息,并按照所述更新消息,更新所述代理客户端对应的应用服务的缓存数据,包括;

所述代理客户端接收所述更新消息,按照所述更新消息,更新代理客户端对应的应用服务的指定内存中的缓存数据。

可选的,所述应用服务系统还包括:缓存中间件,所述缓存中间件为所述应用服务所在的服务器的共享内存;

所述代理客户端接收所述更新消息,并按照所述更新消息,更新所述代理客户端对应的应用服务的缓存数据,包括:

所述代理客户端接收所述更新消息,按照所述更新消息,更新所述代理客户端对应的应用服务的共享内存中的缓存数据。

可选的,所述代理客户端为agent进程,且所述agent进程为内核进程。

可选的,本发明实施例的数据一致性控制方法还包括:

所述缓存控制单元周期性检测各所述代理客户端的运行状况,在存在运行状况异常的代理客户端时,重新启动该运行状况异常的代理客户端所在的服务器。

本发明实施例提供的应用服务系统及数据一致性控制方法,该应用服务系统,包括:缓存控制单元、多个应用服务、多个代理客户端及数据库,其中,各应用服务对应不同的代理客户端;应用服务,用于提供指定的服务;数据库,用于存储数据;缓存控制单元,用于在检测到数据发生变更时,生成用于表征该变更的更新消息,并向各代理客户端发送更新消息;代理客户端,用于接收更新消息,并按照更新消息,更新代理客户端对应的应用服务的缓存数据。在检测到数据更新时,缓存控制单元控制各代理客户端完成各应用服务的缓存数据的更新,可以使各应用服务及数据库中的数据保持一致,能够增强数据一致性。当然,实施本发明的任一产品或方法必不一定需要同时达到以上的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为现有技术中应用服务系统的一种示意图;

图2为本发明实施例的应用服务系统的第一种示意图;

图3为本发明实施例的应用服务系统的第二种示意图;

图4为本发明实施例的应用服务系统的第三种示意图;

图5为本发明实施例的数据一致性控制方法的一种流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。

在现有应用服务系统中,在应用服务的缓存中,通过设定数据有效时间的方式使数据过期,在应用服务缓存中的数据过期后从数据库中读取数据,并更新应用服务缓存中的数据,如果在应用服务的数据在有效时间内,而数据库中的数据源发生了变化,该应用服务无法及时获取已变化的数据,现有应用服务系统中数据一致性弱。

有鉴于此:本发明实施例提供了一种应用服务系统,参见图2,该系统包括:

服务器10及数据库11,上述服务器10包括缓存控制单元101、多个应用服务102及多个代理客户端103,其中,各上述应用服务102对应不同的代理客户端103;

上述应用服务102,用于提供指定的服务;

上述数据库11,用于存储数据;

上述缓存控制单元101,用于在检测到数据发生变更时,生成用于表征该变更的更新消息,并向各上述代理客户端103发送上述更新消息;

上述代理客户端103,用于接收上述更新消息,并按照上述更新消息,更新上述代理客户端103对应的应用服务102的缓存数据。

缓存控制单元101是缓存服务的核心控制器,缓存控制单元101可以为独立的服务器10,或服务器10中运行的虚拟机,缓存控制单元101还可以为运行在服务器10中的应用程序等。应用服务102用于提供指定的服务,例如,应用服务102可以为提供视频服务或游戏服务的进程。应用服务102需要基于服务器10进行运行。代理客户端103同样需要基于服务器10进行运行,且代理客户端103与应用服务102可以是一一对应的。

缓存控制单元101用于监控各应用服务102及控制各代理客户端103。缓存控制单元101可以作为一个框架嵌入应用服务102的监控和业务中,以监听或接收数据的更新,并推送给各代理客户端103。可选的,缓存控制单元101与代理客户端103采用主从的方式部署,各应用服务102接入缓存控制单元101,一旦必要的数据发生更新,除了在原有的更新数据源的基础上,缓存控制单元101通过各代理客户端103实现各应用服务102中数据的更新,以保证数据一致性。

缓存控制单元101检测到数据发生变更,可以为应用服务102主动上报的,在应用服务102中发生数据变更时,应用服务102通过代理客户端103告知缓存控制单元101发生了数据变更;缓存控制单元101检测到数据发生变更,可以为缓存控制单元101通过监测各应用服务102的内存,以检测数据是否变更;缓存控制单元101检测到数据发生变更,可以为缓存控制单元101通过监测数据库11中的数据,以检测数据是否变更;缓存控制单元101检测到数据发生变更,还可以为数据库11中的数据发生变更后,数据库11告知缓存控制单元101数据发生了变更。

缓存控制单元101向各代理客户端103发送更新消息,针对每个代理客户端,在该代理客户端103接收到更新信息后,更新该代理客户端103对应的应用服务102的缓存数据。例如,更新消息表征将数据a的值变更为1,则代理客户端103将该代理客户端103对应的应用服务102的缓存数据中数据a的值变更为1。

可选的,为了保证数据安全,缓存控制单元101和各个代理客户端103之间通过加密协议进行通信。代理客户端103与应用服务102等,可以通过任意进程间通讯的方式进行交互。

在本发明实施例中,在检测到数据更新时,缓存控制单元控制各代理客户端完成各应用服务的缓存数据的更新,可以使各应用服务及数据库中的数据保持一致,能够增强数据一致性。

可选的,参见图3,本发明实施例的应用服务系统还包括:缓存中间件;

上述缓存中间件为上述应用服务102所在的服务器10分配给上述应用服务102的指定内存;

上述代理客户端103,具体用于接收上述更新消息,按照上述更新消息,更新上述代理客户端103对应的应用服务102的指定内存中的缓存数据。

可以将缓存中间件设置在应用服务102的本地内存。具体的,缓存中间件为服务器10为应用服务102分配的指定内存区域。缓存中间件用于缓存应用服务102运行过程中所需的数据,应用服务102可以从缓存中间件中读取数据,由于缓存中间件存在于本地的内存,能够提高数据的读取速度。代理客户端103按照更新消息,更新应用服务102本地内存中的缓存中间件,以保证数据的一致性。

上述代理客户端103对应用服务102本地内存中的数据进行读写更新,以保持与数据库11中数据源的一致性,例如,对缓存中间件中的数据进行读写更新,使之与源数据保持一致性。缓存中间件的载体可以是共享内存;或者缓存中间件的载体为应用服务102内的内存。

可选的,参见图4,本发明实施例的应用服务系统,还包括:缓存中间件;

上述缓存中间件为上述应用服务102所在的服务器10的共享内存;

上述代理客户端103,具体用于接收上述更新消息,按照上述更新消息,更新上述代理客户端103对应的应用服务102的共享内存中的缓存数据。

共享内存是以linux为代表的操作系统中进程间通信的方式,共享内存可以方便的在各进程间进行数据交互,并且由于是内存读写,交互效率高。代理客户端103,可以读写共享内存中的缓存数据,应用服务102可以读取共享内存中的缓存数据,代理客户端103通过更新共享内存中的缓存数据,来增强数据的一致性,在更新数据时,可以通过置标志位的方式来解决读写锁的问题,能够减少指针直接读写内存的错误,增加可靠性和效率。

当然还可以采用其他交互方式,例如使用应用服务102内的内存作为缓存,代理客户端103使用侵入式或直接改写内存的方式完成数据注入,比如通过java虚拟机的jvmti(javavirtualmachinetoolinterface)更改heap;利用hook找到应用中的数据的指针并修改等;应用服务读取这些缓存数据时,agent进程保证这些数据始终与数据库11中的源数据保持一致性。

在本发明实施例中,缓存中间件为共享内存,代理客户端103通过更新共享内存中数据,增强数据的一致性,并且各应用服务的进程通过共享内存进行交互,交互效率高。

可选的,上述代理客户端103为agent进程,且上述agent进程为内核进程。

agent进程作为一个独立进程运行在应用服务102对应的操作系统上。为了保证数据的一致性,可以提升agent进程的优先级,将agent进程设定为应用服务102对应的操作系统的内核进程。agent进程会和应用服务102的操作系统一起启动,启动之后将向缓存控制单元101申请注册,缓存控制单元101完成agent进程的注册,并向agent进程发送配置信息,agent进程接收配置信息并完成配置。agent进程和应用服务102中共享缓存,并且可以按照更新消息更新缓存中的数据。

在本发明实施例中,代理客户端为agent进程,且为内核进程,agent进程可以保持和缓存控制单元的长链接,并且在网络、cpu、内存等资源紧张时扔然可以保持与缓存控制单元的通信,保证数据的一致性。

可选的,上述缓存控制单元101还用于:周期性检测各上述代理客户端103的运行状况,在存在运行状况异常的代理客户端103时,重新启动该运行状况异常的代理客户端103所在的服务器10。

为了保证数据的一致性,缓存控制单元101需要与代理客户端103之间保持通信,例如,缓存控制单元101对记录的所有注册的代理客户端103定时进行心跳检测,并且在缓存控制单元101向代理客户端103发送消息后,要求该代理客户端103给予肯定答复。在代理客户端103心跳检测失效或代理客户端103答复失败时,缓存控制单元101将该代理客户端103所在的服务器10重新启动,以保证数据一致性。

在本发明实施例中,重启运行状况异常的代理客户端103所在的应用服务102,增强数据的一致性。

本发明实施例的应用服务系统为任意能够提供应用服务的系统,例如,可以提供弹幕业务、用户体系业务及提供游戏业务等。

对于弹幕业务,需要使用安全控制,在指定上级指令发出时要立即改变配置,禁止或放开指定频道或视频的弹幕功能。采用本发明实施例的应用服务系统,相比于现有技术中使用接口或缓存中间件进行数据同步,减轻了处理压力,增加了数据同步的速度,并且能查看各应用服务上业务服务的配置状态,以及时处理异常。

用户体系业务需要存储每一个用户的任务状态及积分信息等,由于用户量庞大,缓存中间件的数据量及qps(querypersecond,每秒查询率)的压力非常大,而一旦网络或缓存中间件发生抖动,对业务的影响很大。本发明实施例的应用服务系统,通过自定义的数据结构,仅需1g的缓存便可以容纳1亿用户的所有数据,并且响应时间下降99%,降低了网络和缓存中间件的压力,增强了应用服务稳定性

对于游戏业务,由于业务要求,仅能使用接口的方式与第三方进行数据交互,但第三方的接口承载能力有限,在游戏业务前端近万qps下压力非常大,容易出现异常,并且数据更新不及时。而采用发明实施例的应用服务系统,将接口作为数据源,将近万qps变成10+qps,响应时间下降99%,大大降低了系统负荷,提高了系统稳定性。

本发明实施例还提供了一种数据一致性控制方法,参见图5,应用于应用服务系统,上述应用服务系统包括服务器及数据库,上述服务器包括缓存控制单元、多个应用服务及多个代理客户端,各上述应用服务对应不同的代理客户端,上述方法包括:

s501,上述缓存控制单元在检测到数据发生变更时,生成用于表征该变更的更新消息,并向各上述代理客户端发送上述更新消息;

s502,上述代理客户端接收上述更新消息,并按照上述更新消息,更新上述代理客户端对应的应用服务的缓存数据。

在本发明实施例中,在检测到数据更新时,缓存控制单元控制各代理客户端完成各应用服务的缓存数据的更新,可以使各应用服务及数据库中的数据保持一致,能够增强数据一致性。

可选的,上述应用服务系统还包括:缓存中间件,上述缓存中间件为上述应用服务所在的服务器分配给上述应用服务的指定内存;

相应的,上述代理客户端接收上述更新消息,并按照上述更新消息,更新上述代理客户端对应的应用服务的缓存数据,包括;

上述代理客户端接收上述更新消息,按照上述更新消息,更新代理客户端对应的应用服务的指定内存中的缓存数据。

在本发明实施例中,更新缓存中间件中的数据能够增加数据的一致性。

可选的,上述应用服务系统还包括:缓存中间件,上述应用服务系统还包括:缓存中间件,上述缓存中间件为上述应用服务所在的服务器的共享内存;

相应的,上述代理客户端接收上述更新消息,并按照上述更新消息,更新上述代理客户端对应的应用服务的缓存数据,包括:

上述代理客户端接收上述更新消息,按照上述更新消息,更新上述代理客户端对应的应用服务的共享内存中的缓存数据。

在本发明实施例中,缓存中间件为共享内存,代理客户端通过更新共享内存中数据,增强数据的一致性,并且各应用服务的进程通过共享内存进行交互,交互效率高。

可选的,在本发明实施的数据一致性控制方法中,上述代理客户端为agent进程,且上述agent进程为内核进程。

在本发明实施例中,代理客户端为agent进程,且为内核进程,agent进程可以保持和缓存控制单元的长链接,并且在网络、cpu、内存等资源紧张时扔然可以保持与缓存控制单元的通信,保证数据的一致性。

可选的,本发明实施的数据一致性控制方法还包括:

上述缓存控制单元周期性检测各上述代理客户端的运行状况,在存在运行状况异常的代理客户端时,重新启动该运行状况异常的代理客户端所在的服务器。

在本发明实施例中,重启运行状况异常的代理客户端所在的服务器,能够增强数据的一致性。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质以及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1