数据请求等进行分析处理,并将处理 结果发送给数据库。
[0031] 需要说明的是,本申请实施例所提供的数据更新方法一般由服务器103执行,相应 地,数据更新装置一般设置于服务器103中。
[0032] 应该理解,图1中的客户端、网络和服务器的数目仅仅是示意性的。根据实现需要, 可以具有任意数目的终端设备、网络和服务器,例如客户端101和服务器103均可以为服务 器集群。
[0033] 继续参考图2,示出了根据本申请的数据更新方法的一个实施例的流程200。所述 的数据更新方法,包括以下步骤:
[0034]步骤201,获取至少一个更新数据请求。
[0035]在本实施例中,更新数据方法运行于其上的电子设备(例如图1所示的服务器103) 可以通过有线连接方式或者无线连接方式从客户端(例如图1所示的客户端101)获取更新 数据请求,其中,更新数据请求包括增量数据和该增量数据的数据标识,例如,上述更新数 据请求可以为:[数据标识]123,[增量数据]888。这里,客户端可以根据用户利用终端上的 各种应用产生的数据生成更新数据请求。需要指出的是,上述无线连接方式可以包括但不 限于3G/4G连接、WiFi连接、蓝牙连接、WiMAX连接、Zigbee连接、UWB(ultra wideband)连接、 以及其他现在已知或将来开发的无线连接方式。
[0036] 步骤202,利用预设的定时器任务线程,周期性执行各更新数据请求对应的原子操 作。
[0037] 在本实施例中,数据更新方法运行于其上的电子设备(例如图1所示的服务器103) 可以预先构建至少一个定时器任务进程,其中,上述每个定时器任务进程均可以包括多个 定时器任务线程。上述电子设备利用上述定时器任务线程周期性执行上述获取的更新数据 请求对应的原子操作。这里,通过上述定时器任务线程可以在预设的时间点或时间段定时 启动并执行上述更新数据请求对应的原子操作。
[0038] 在本实施例的一些可选的实现方式中,当上述获取的更新数据请求对应的原子操 作被其中一个上述定时器任务线程所执行时,该更新数据请求对应的原子操作将不会切换 到其它定时器任务线程。
[0039] 步骤203,基于更新数据请求对应的原子操作,更新数据库中更新数据请求的数据 标识对应的待更新数据。
[0040] 在本实施例中,数据更新方法运行于其上的电子设备通过上述更新数据请求对应 的原子操作向数据库发送该更新数据请求,使得数据库可以根据该更新数据请求中的增量 数据的数据标识确定待更新数据,而后根据上述增量数据更新所确定的待更新数据。
[0041] 在本实施例的一些可选的实现方式中,根据业务的需求,可以通过预设的规则更 新上述待更新数据。这里,预设的规则可以是加法规则、减法规则等,例如该数据更新方法 应用于转账系统中时,上述增量数据为转入金额,上述数据标识为账户名,上述待更新数据 为账户余额,则可以通过加法规则更新待更新数据,更新后的数据为转入金额与账户余额 的总和。根据原子操作的特性,上述更新数据请求对应的原子操作在执行的过程中是不会 被任何其它事务或事件中断,保证了数据更新的准确性。
[0042] 本申请的上述实施例提供的方法,通过预设的定时器任务线程周期性的执行上述 更新数据请求对应的原子操作,而后基于原子操作更新数据库中与上述更新数据请求的数 据标识相对应的待更新数据,保证了数据更新的准确性。
[0043] 继续参考图3,图3是根据本申请的数据更新方法的又一个实施例的流程图300。该 数据更新方法的流程300,包括以下步骤:
[0044] 步骤301,缓存客户端发送的各更新数据请求到消息队列。
[0045] 在本实施例中,数据更新方法运行于其上的电子设备(例如图1所示的服务器103) 可以通过有线连接方式或者无线连接方式将客户端发送的更新数据请求缓存到消息队列 中。这里,消息队列可以认为是更新数据请求在传输过程中用于保存更新数据请求的容器, 它可以接收上述客户端发送的更新数据请求,也可以将更新数据请求发送给下一个应用程 序。通过消息队列缓存上述更新数据请求可以避免接收和发送更新数据请求同时执行的要 求。
[0046] 步骤302,将消息队列中的各更新数据请求分发给订阅模块。
[0047] 在本实施例中,上述电子设备将缓存在消息队列中的各更新数据请求以例如广播 等形式分发给订阅上述更新数据请求的订阅模块。其中,订阅模块用于接收上述更新数据 请求,并根据数据标识的对应关系将各更新数据请求插入更新数据表。
[0048] 在本实施例的一些可选的实现方式中,在高并发数据的场景下,客户端向上述消 息队列发送更新数据请求,作为示例,更新数据请求出现了重复缓存的情况;之后,再将消 息队列中缓存的各更新数据请求发送到各订阅模块,这里,可以设置多个订阅模块来解决 数据高并发的问题;最后,上述订阅模块根据接收到的更新数据请求的数据标识将上述更 新数据请求插入到更新数据表中,可以使得重复缓存的更新数据请求只能在更新数据表中 插入一次,保证了更新数据表中各更新数据请求的唯一性。
[0049] 步骤303,从更新数据表获取至少一个更新数据请求。
[0050] 在本实施例中,更新数据方法运行于其上的电子设备(例如图1所示的服务器103) 可以通过有线连接方式或者无线连接方式从更新数据表中获取更新数据请求,其中,更新 数据请求包括增量数据和该增量数据的数据标识。这里,可以通过步骤301和步骤302将客 户端生成更新数据请求插入上述更新数据表中。
[0051] 步骤304,根据更新数据请求的总量和各更新数据请求对应的原子操作的耗时,确 定开启定时器任务进程的数量和各所开启的定时器任务进程中开启的定时器任务线程的 数量。
[0052]在本实施例中,数据更新方法运行于其上的电子设备可以预先构建至少一个定时 器任务进程,其中,上述每个定时器任务进程均可包括多个定时器任务线程。上述电子设备 根据更新数据请求的总量和单个更新数据请求对应的原子操作的耗时,计算理想情况下所 有更新数据请求的总耗时。根据上述计算获得的总耗时,确定需要开启定时器任务进程的 数量和各所开启的定时器任务进程中开启的定时器任务线程的数量以最大可能的提高数 据更新的效率,最大限度的利用服务器的计算资源。
[0053] 在本实施例的一些可选的实现方式中,用m表示上述更新数据请求的总量,nl表示 开启定时器任务进程的数量,n2各所开启的定时器任务进程中开启的定时器任务线程的数 量,t表示单个更新数据请求对应的原子操作的耗时,T表示处理上述m个更新数据请求的总 辦,则7 = X t。腿況能日權壬紐剧勺顏nl矛咯膨劍勺劍權壬紐 程中开启的定时器任务线程的数量n2可以根据实际的场景需要确定。例如,当开启的定时 器任务线程的数量(即nlXn2)大于更新数据请求的总量(即m)时,不仅不能提高数据更新 的效率,还会造成资源的浪费,当开启的定时器任务线程的数量(即nlXn2)远小于更新数 据请求的总量(即m)时,可能会造成更新数据请求的堵塞,降低高数据更新的效率,因此,需 要结合实际的场景需要确定开启定时器任务进程的数量nl和各所开启的定时器任务进程 中开启的定时器任务线程的数量π2。
[0054] 步骤305,利用预设的定时器任务线程,周期性执行各更新数据请求对应的原子操 作。
[0055] 在本实施例中,上述电子设备利用上述开启的定时器任务线程周期性执行上述获 取的更新数据请求对应的原子操作。这里,通过上述定时器任务线程可以在预设的时间点 或时间段定时启动并执行上述更新数据请求对应的原子操作。
[0056] 步骤306,基于更新数据请求对应的原子操作,更新数据库中更新数据请求的数据 标识对应的待更新数据。
[0057] 在本实施例中,数据更新方法运行于其上的电子设备通过上述更新数据请求对应 的原子操作向数据库发送该更新数