分布式系统中数据更新和统计的方法及其装置的制造方法

文档序号:9887652阅读:542来源:国知局
分布式系统中数据更新和统计的方法及其装置的制造方法
【技术领域】
[0001]本发明涉及数据处理领域,特别涉及一种分布式系统中数据更新和统计的方法及其装置。
【背景技术】
[0002]更新数据库的一行数据,为了保证更新的准确性,会对该行数据加上一个排他锁,只有当本次更新完成后,才允许进行下一次更新。在某些典型的业务场景下的数据,在数据库层面是巨大的热点同时又是单点。比如一个记账频繁的大账号需要更新余额;比如会计系统中的总账科目,每天上亿笔分录需要驱动更新数十个总账科目的发生额和余额;比如清算系统,需要针对每天上亿笔支付报文根据双边机构按业务或标的物清分出结果。这些场景下的热点数据(账户、总账科目、清分结果),每秒甚至每毫秒都需要进行海量的并发更新,在数据库系统层面是无法承受这种规模的操作的。实时更新无法做到,准实时更新也是一个相当有挑战性的课题。
[0003]同时,在分布式架构的大型系统中,天然存在着系统间交互的延迟,可能是网络延迟的原因,也可能是一些异步消息中间件本身的响应延时。通常这些延迟是很短暂的,但在某些异常状况下,有些延迟可能会放大到很长,可能是分钟级别甚至小时级别。因此,在某些以时间为维度统计、更新数据的过程中,比如更新某个账户每日的发生额,或者清分两个金融机构每个小时的应收应付金额等,还需要考虑如何识别并处理这类延迟到达的数据,同时,还需要尽可能地降低对数据库的资源开销。
[0004]为了解决热点数据的准实时更新问题,目前主要有两种方案:
[0005]其一,在收到更新请求时,不去实时更新,而是将这批数据暂存到数据库中。到日终时,以日期为单位通过遍历所有暂存的明细数据,汇总出需要更新的数据,一次性的进行更新。某些场景下可能需要更新的频率更高,因此可以以小时甚至分钟为一个周期,根据起止时间,遍历暂存的明细数据,汇总出需要更新的数据,一次性的进行更新。汇总更新又称缓冲更新。
[0006]这个方案中,可以很好的解决热点数据更新的问题。但是还可能存在一些因为某些原因延迟了,在汇总时还未被系统成功接收的更新请求,在该方案中,就被漏统计了,造成更新数据的不准确。
[0007]其二,遍历汇总完某个时间段的更新请求后,对这些数据在数据库中打上特殊的标记或是删除。在下一轮遍历时,默认数据库中存在的请求都是还没有汇总过的请求,这样就不会重复和遗漏。但是,这种方案需要在几乎同一时间内对大量数据进行批量更新或删除操作,对数据库而言是个巨大的冲击,会极大的影响系统的稳定性。

【发明内容】

[0008]本发明的目的在于提供一种分布式系统中数据更新和统计的方法及其装置,可确保数据统计的及时性,并有效防止因延迟而未被及时统计的数据的漏统计,确保对来自如大型分布式架构系统的信息的准确准时统计。
[0009]为解决上述技术问题,本发明的实施方式公开了一种分布式系统中数据更新和统计的方法,包括以下步骤:
[0010]判断接收到的数据的接收时刻与该数据的产生时刻之间的时间差是否超过预定阈值;
[0011]如果判断结果为是,则根据接收时刻生成数据的批次号;
[0012]如果判断结果为否,则根据产生时刻生成数据的批次号;
[0013]将带有批次号的数据存入数据库中;
[0014]根据批次号对数据库中储存的带有批次号的数据进行统计。
[0015]本发明的实施方式还公开了一种分布式系统中数据更新和统计的装置,包括:
[0016]判断单元,用于判断接收到的数据的接收时刻与该数据的产生时刻之间的时间差是否超过预定阈值;
[0017]第一生成单元,用于当判断单元的判断结果为是时,根据接收时刻生成数据的批次号;
[0018]第二生成单元,用于当判断单元的判断结果为否时,根据产生时刻生成数据的批次号;
[0019]存储单元,用于将带有批次号的数据存入数据库中;
[0020]统计单元,用于根据批次号对数据库中储存的带有批次号的数据进行统计。
[0021]本发明实施方式与现有技术相比,主要区别及其效果在于:
[0022]根据数据的产生时刻给数据打上批次号,可确保后续数据统计的及时性,而对于延迟接收到的数据根据其接收时刻打批次号,可有效防止因延迟而未被及时统计的数据的漏统计,确保对来自如大型分布式架构系统的信息的准确准时统计。并且,按批次统计,可降低数据库系统的更新操作负担,尤其对于热点数据以每秒甚至每毫秒都需要进行海量的并发更新的数据库系统。
【附图说明】
[0023]图1是本发明第一实施方式中一种分布式系统中数据更新和统计的方法的流程不意图;
[0024]图2是本发明第二实施方式中一种分布式系统中数据更新和统计的装置的结构示意图。
【具体实施方式】
[0025]在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
[0026]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
[0027]本发明第一实施方式涉及一种分布式系统中数据更新和统计的方法。图1是该分布式系统中数据更新和统计的方法的流程示意图。
[0028]具体地,如图1所示,该分布式系统中数据更新和统计的方法包括以下步骤:
[0029]在步骤101中,判断接收到的数据的接收时刻与该数据的产生时刻之间的时间差是否超过预定阈值。如果判断结果为是,则进入步骤102 ;否则,进入步骤103。
[0030]在步骤102中,根据接收时刻生成数据的批次号。
[0031]在步骤103中,根据产生时刻生成数据的批次号。
[0032]此后进入步骤104,将带有批次号的数据存入数据库中。
[0033]此后进入步骤105,根据批次号对数据库中储存的带有批次号的数据进行统计。
[0034]此后结束本流程。
[0035]在本发明的一优选例中,上述步骤105包括以下子步骤:
[0036]根据数据的产生时刻确定统计与该数据属于同一批次的所有数据的统计时间。
[0037]此外,可以理解,在本发明的其他实施方式中,也可以根据实际情况以其他方式设定不同批次数据的统计时间,比如将一天划分为多个时间区间,每个时间区间内存入数据库的带有批次号的数据在该时间区间结束的时刻进行统计。
[0038]在本发明另的一优选例中,一天被预先分为多个时间区间,每个时间区间对应一个批次号,该批次号包括当天日期。且上述步骤102中包括以下子步骤:
[0039]将数据的接收时刻所在的时间区间对应的批次号作为该数据的批次号。且上述步骤103包括以下子步骤:
[0040]将数据的产生时刻所在的时间区间对应的批次号作为该数据的批次号。
[0041]本优选例的一个具体实现过程如下:
[0042]以半小时为维度统计热点数据,那么,一天24小时就会被划分成48个时间片,那么这些时间片的序号可以设定为日期拼接上01至48,即yyyyMMddOl?yyyyMMdd48。这样如果某个业务的实际发生时间是在2014年8月30日00:29:50,处于00:00-00:30分之间,我们就可以在接收到该数据库时,预先给它打上2014083001这个批次号存入数据库中。当过了 00:30分之后,我们就可以去扫描数据库所有附带有2014083001这个批次号的数据,按一定维度进行汇总统计。汇总后的结果就表示00:00-00:30这半个小时内发生更新的数据的总和。
[0043]但是,并不是所有数据都会很快到达,例如,刚才在00:29:50发生的数据,有可能在00:30:50才被接收处理(一般的延迟都是在秒级甚至毫秒级),所以,我们不能在00:30分就马上开始进行扫描,而是需要设置一个预定阈值,例如10分钟(预定阈值究竟设置多少合适,需要对实际数据统计出延迟时间的分布图,找一个最合适的点),使上一个时间片内的业务几乎全部都会在00:40分前到达,那么我们在00:40分统计00:00-00:30分的数据时,会得到一个高度准确的结果。
[0044]然而,在一些极端情况下,某几条数据可能延迟时间很长,比如延迟半小时或数小时。这样,即使加上了 10分钟的预定阈值,我们开始在00:40开始统计时,因为数据还没到达,也就不会统计到这些数据。当这些数据在00:59:16被接收时,如果根据业务实际发生时间00:29:50给打上批次号2014083001,那么因为这个批次号已经被汇总过,所以这条数据永远不会再有被统计到的。所以我们需要对实际到达时,已经过了其应该属于的那个批次的汇总时间的数据打其他批次的批次号,纳入其他批次进行处理。比如这条00:59:16到达的数据,我们就要打上2014083002的批次号,跟所有发生在00:30-01:00的数据一并统计。此外,如果有数据是在01:59:16被接收的,就要打上2014083004的批次号,跟所有发生在01:30-02:00的数据一并统计。以此类推,对后续发生延长的数据都作此处理。
[0045]可以理解,在本发明的其他实施方式中,也可以以其他方式确定批次号,例如,以小时、月等为单位,将其划分是不同的时间区间,然后确定对应各时间区间的批次号,或以已生成的批次号为基础,累加生成后续的批次号,等等。
[0046]此外,在
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1