账户数据更新方法、装置及电子设备与流程

专利2022-06-29  156


本申请涉及财务系统技术领域,尤其涉及一种账户数据更新方法、装置及电子设备。



背景技术:

在银行或者第三方支付系统的账务数据库的处理中,数据从一个账户转出,或者有数据转入一个账户,账务系统都会收到记账请求,并都有一个记账处理的过程,其中,进行高频地入账、出账处理过程的账户即为热点账户,也就是该账户对应的数据会被频繁更新,且对数据的准确性要求极高。针对该热点账户问题,目前已经公开的解决方案主要有两种:一是逻辑拆分,包括账户拆分、账户打散等;二是物理拆分,包括db拆分,数据分割等。上述热点账户的拆分处理方案,均需要将数据写入多个存储区域或者从多个数据库中读取数据,导致产生大量的操作成本和时间成本,破坏数据的一致性,从而影响对账户写操作请求的数据处理性能。



技术实现要素:

有鉴于此,本申请实施例提供一种账户数据更新方法、装置及电子设备,能够实现热点账户写操作请求的高效数据更新处理,大大提升对热点账户写操作请求的数据处理性能。

根据本申请的一个方面,提供一种电子设备,可以包括一个或多个存储介质和一个或多个与存储介质通信的处理器。一个或多个存储介质存储有处理器可执行的机器可读指令。当电子设备运行时,处理器与存储介质之间通过总线通信,处理器执行所述机器可读指令,以执行账户数据更新方法中一个或多个方法。

根据本申请的另一个方面,提供一种账户数据更新方法,所述方法应用于服务器,包括:接收业务方的账户写操作请求;识别所述账户写操作请求对应的账户的账户类型;其中,所述账户类型包括普通账户和热点账户;生成所述账户写操作请求的wal日志文件,并通知所述业务方请求接收成功;其中,所述wal日志文件包括:所述账户写操作请求携带的信息和所述账户类型;当所述账户类型为热点账户时,基于所述wal日志文件对所述账户写操作请求对应的账户进行异步数据更新。

在本申请较佳的实施例中,生成所述账户写操作请求的wal日志文件的步骤之后,所述方法还包括:如果所述账户类型为热点账户,将所述wal日志文件分配至热点账户队列;如果所述账户类型为普通账户,将所述wal日志文件分配至普通账户队列。

在本申请较佳的实施例中,当所述账户类型为热点账户时,基于所述wal日志文件对所述账户写操作请求对应的账户进行异步数据更新的步骤,包括:对于所述热点账户队列中的wal日志文件,按照先进先出原则逐一读取所述wal日志文件;根据读取到的所述wal日志文件对所述wal日志文件对应的账户进行数据更新。

在本申请较佳的实施例中,所述方法还包括:如果所述普通账户队列中有wal日志文件,读取所述普通账户队列中的wal日志文件;根据读取到的所述wal日志文件对所述wal日志文件对应的账户进行数据更新。

在本申请较佳的实施例中,生成所述账户写操作请求的wal日志文件的步骤,包括:将所述账户写操作请求中的业务标识和业务类型,作为wal日志文件的幂等标识;将所述账户类型和所述账户写操作请求中的操作信息写入所述wal日志文件。

在本申请较佳的实施例中,所述方法还包括:当生成所述账户写操作请求的wal日志文件时,在所述wal日志文件中写入第一状态标识,所述第一状态标识用以标识所述账户写操作请求对应的操作处于处理中;当所述wal日志文件对应的账户已完成数据更新,将所述wal日志文件中的第一状态标识修改为第二状态标识,所述第二状态标识用以标识所述账户写操作请求对应的操作已完成。

在本申请较佳的实施例中,所述方法还包括:当监听到异步处理失败的回调消息,或者监听到所述wal日志文件带有所述第一状态标识的持续时长超时时,再次基于所述wal日志文件对所述账户写操作请求对应的账户进行异步数据更新。

在本申请较佳的实施例中,所述方法还包括:记录所述账户再次进行数据更新的次数;如果所述次数超过预设的次数阈值,向所述业务方发送重新发送所述账户写操作请求的通知。

在本申请较佳的实施例中,所述方法还包括:如果所述账户的数据更新操作成功,向所述账户对应的需求方发送所述账户已更新的广播消息,其中,所述需求方包括所述业务方。

在本申请较佳的实施例中,识别所述账户写操作请求对应的账户的账户类型的步骤,包括:获取所述账户写操作请求对应的发起账户标识和目标账户标识;从预存的热点账户数据库中查找是否存在与发起账户标识或目标账户标识匹配的账户标识;如果是,确定所述账户写操作请求对应的账户的账户类型为热点账户。

在本申请较佳的实施例中,所述热点账户数据库通过如下方式生成:统计账户的写操作频率或写操作次数;根据所述写操作频率或所述写操作次数判断所述账户的账户类型是否为热点账户;如果是,将所述账户的账户标识写入所述热点账户数据库。

在本申请较佳的实施例中,识别所述账户写操作请求对应的账户的账户类型的步骤,包括:获取所述账户写操作请求对应的发起账户标识和目标账户标识;检查所述发起账户标识或所述目标账户标识的指定位是否为指定字段;如果是,确定所述账户写操作请求对应的账户的账户类型为热点账户。

根据本申请的另一个方面,还提供一种账户数据更新装置,所述装置应用于服务器,包括:请求接收模块,用于接收业务方的账户写操作请求;账户类型识别模块,用于识别所述账户写操作请求对应的账户的账户类型;其中,所述账户类型包括普通账户和热点账户;日志文件生成模块,用于生成所述账户写操作请求的wal日志文件,并通知所述业务方请求接收成功;其中,所述wal日志文件包括:所述账户写操作请求携带的信息和所述账户类型;异步数据更新模块,用于在所述账户类型为热点账户时,基于所述wal日志文件对所述账户写操作请求对应的账户进行异步数据更新。

在本申请较佳的实施例中,所述装置还包括:文件分配模块,用于:如果所述账户类型为热点账户,将所述wal日志文件分配至热点账户队列;如果所述账户类型为普通账户,将所述wal日志文件分配至普通账户队列。

在本申请较佳的实施例中,所述异步数据更新模块,还用于:对于所述热点账户队列中的wal日志文件,按照先进先出原则逐一读取所述wal日志文件;根据读取到的所述wal日志文件对所述wal日志文件对应的账户进行数据更新。

在本申请较佳的实施例中,所述装置还包括:同步数据更新模块,用于:如果所述普通账户队列中有wal日志文件,读取所述普通账户队列中的wal日志文件;根据读取到的所述wal日志文件对所述wal日志文件对应的账户进行数据更新。

在本申请较佳的实施例中,所述日志文件生成模块,还用于:将所述账户写操作请求中的业务标识和业务类型,作为wal日志文件的幂等标识;将所述账户类型和所述账户写操作请求中的操作信息写入所述wal日志文件。

在本申请较佳的实施例中,所述装置还包括:状态设置模块,用于:当生成所述账户写操作请求的wal日志文件时,在所述wal日志文件中写入第一状态标识,所述第一状态标识用以标识所述账户写操作请求对应的操作处于处理中;当所述wal日志文件对应的账户已完成数据更新,将所述wal日志文件中的第一状态标识修改为第二状态标识,所述第二状态标识用以标识所述账户写操作请求对应的操作已完成。

在本申请较佳的实施例中,所述装置还包括:监听回调模块,用于:当监听到异步处理失败的回调消息,或者监听到所述wal日志文件带有所述第一状态标识的持续时长超时时,再次基于所述wal日志文件对所述账户写操作请求对应的账户进行异步数据更新。

在本申请较佳的实施例中,所述装置还包括:提醒模块,用于:记录所述账户再次进行数据更新的次数;如果所述次数超过预设的次数阈值,向所述业务方发送重新发送所述账户写操作请求的通知。

在本申请较佳的实施例中,所述装置还包括:消息广播模块,用于:如果所述账户的数据更新操作成功,向所述账户对应的需求方发送所述账户已更新的广播消息,其中,所述需求方包括所述业务方。

在本申请较佳的实施例中,所述账户类型识别模块,还用于:获取所述账户写操作请求对应的发起账户标识和目标账户标识;从预存的热点账户数据库中查找是否存在与发起账户标识或目标账户标识匹配的账户标识;如果是,确定所述账户写操作请求对应的账户的账户类型为热点账户。

在本申请较佳的实施例中,所述装置还包括:热点账户数据库生成模块,用于:统计账户的写操作频率或写操作次数;根据所述写操作频率或所述写操作次数判断所述账户的账户类型是否为热点账户;如果是,将所述账户的账户标识写入所述热点账户数据库。

在本申请较佳的实施例中,所述账户类型识别模块,还用于:获取所述账户写操作请求对应的发起账户标识和目标账户标识;检查所述发起账户标识或所述目标账户标识的指定位是否为指定字段;如果是,确定所述账户写操作请求对应的账户的账户类型为热点账户。

根据本申请的另一个方面,还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述任一所述的账户数据更新方法的步骤。

在本发明实施例中,首先接收业务方的账户写操作请求,然后识别出该账户写操作请求对应的账户的账户类型,如普通账户或者热点账户;进一步基于上述账户写操作请求生成相应的wal日志文件,该wal日志文件中包括有该账户写操作请求携带的信息和其账户类型,生成上述wal日志文件后,通知所述业务方请求接收成功;如果上述账户类型为热点账户,就基于上述wal日志文件对该账户写操作请求对应的账户进行异步数据更新。本发明通过对热点账户写操作请求生成具有快速追加写优势的wal日志文件,并进行异步数据处理过程,能够实现热点账户写操作请求的高效数据更新处理,大大提升对热点账户写操作请求的处理性能。

为使本申请实施例的上述目的、特征和优点能更明显易懂,下面将结合实施例,并配合所附附图,作详细说明。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本申请实施例所提供的一种账户数据更新系统的框图;

图2示出了本申请实施例所提供的一种电子设备的结构示意图;

图3示出了本申请实施例所提供的一种账户数据更新方法的流程图;

图4示出了本申请实施例所提供的一种热点账户数据更新过程的示意图;

图5示出了本申请实施例所提供的一种账户数据更新装置的结构示意图;

图6示出了本申请实施例所提供的另一种账户数据更新装置的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。

另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

为了使得本领域技术人员能够使用本申请内容,结合特定应用场景“网约车支付场景”,给出以下实施方式。对于本领域技术人员来说,在不脱离本申请的精神和范围的情况下,可以将这里定义的一般原理应用于其他实施例和应用场景。虽然本申请主要围绕网约车支付场景进行描述,但是应该理解,这仅是一个示例性实施例。本申请可以应用于任何其他存在热点账户问题的支付交易场景。例如,本申请可以应用于不同的依赖于第三方支付软件或银行财务系统的外卖点餐支付场景、共享经济支付场景(如共享单车、共享充电桩、共享汽车)等。在网约车支付场景中,本申请可以应用于以下交通工具:可以包括出租车、私家车、顺风车、公共汽车、或无人驾驶车辆等,或其任意组合。本申请还可以包括用于网上支付交易的任何服务系统,例如,用于发送和/或接收快递的系统、用于买卖双方交易的服务系统。本申请的系统或方法的应用可以包括网页、浏览器的插件、客户端终端、定制系统、内部分析系统、或人工智能机器人等,或其任意组合。

需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。

本申请的一个方面涉及一种账户数据更新系统,该系统首先接收业务方的账户写操作请求,然后识别出该账户写操作请求对应的账户的账户类型,如普通账户或者热点账户;进一步基于上述账户写操作请求生成相应的wal(write-aheadlogging,预定日志系统)日志文件,该wal日志文件中包括有该账户写操作请求携带的信息和其账户类型,生成上述wal日志文件后,通知所述业务方请求接收成功;如果上述账户类型为热点账户,就基于上述wal日志文件对该账户写操作请求对应的账户进行异步数据更新。本发明通过对热点账户写操作请求生成具有快速追加写优势的wal日志文件,并进行异步数据处理过程,能够实现热点账户写操作请求的高效数据更新处理,大大提升对热点账户写操作请求的处理性能。

值得注意的是,在本申请提出申请之前,针对热点账户问题,目前已知公开的解决方案主要有两种:一是逻辑拆分,包含账户拆分,账户打散等;二是物理拆分,包括:db数据库拆分,数据分割等。但目前方案普遍存在一个问题,立足于热点账户本身,强行增压,即:无论是物理拆分还是逻辑拆分,本质上都是将一整块拆分为n块来分治处理,分治处理的两个巨大成本:一是写入成本,所有的写入数据要根据分配因子写入对应的存储区域,二是读取成本,要从多个库中读取数据往往需要大量跨表操作,耗费大量的时间外,还需要逻辑整合展现。上述方式很容易造成数据一致性的破坏,从而造成数据重入风险,因此现有方案会给后期带来大量维护成本,且影响账户请求的处理性能。

而本申请提供的账户数据更新系统可以通过对热点账户写操作请求生成具有快速追加写优势的wal日志文件,并进行异步数据处理过程,能够实现热点账户写操作请求的高效数据更新处理,减少后期维护成本的同时,大大提升对热点账户写操作请求的处理性能,保证请求处理的时效性和数据的一致性。

图1是本申请一些实施例的账户数据更新系统100的框图。例如,账户数据更新系统100可以是用于诸如出租车、代驾服务、快车、拼车、公共汽车服务、驾驶员租赁、或班车服务之类的运输服务、或其任意组合的在线运输服务平台。账户数据更新系统100可以包括服务器110、网络120、服务请求方终端130、服务提供方终端140和数据库150中的一种或多种,服务器110中可以包括执行指令操作的处理器。

在一些实施例中,服务器110可以是单个服务器,也可以是服务器组。服务器组可以是集中式的,也可以是分布式的(例如,服务器110可以是分布式系统)。在一些实施例中,服务器110相对于终端,可以是本地的、也可以是远程的。例如,服务器110可以经由网络120访问存储在服务请求方终端130、服务提供方终端140、或数据库150、或其任意组合中的信息和/或数据。作为另一示例,服务器110可以直接连接到服务请求方终端130、服务提供方终端140和数据库150中至少一个,以访问存储的信息和/或数据。在一些实施例中,服务器110可以在云平台上实现;仅作为示例,云平台可以包括私有云、公有云、混合云、社区云(communitycloud)、分布式云、跨云(inter-cloud)、多云(multi-cloud)等,或者它们的任意组合。在一些实施例中,服务器110可以在具有本申请中图2所示的一个或多个组件的电子设备200上实现。

在一些实施例中,服务器110可以包括处理器112。处理器112可以处理与服务请求有关的信息和/或数据,以执行本申请中描述的一个或多个功能。例如,处理器112可以基于从服务请求方终端130获得的服务请求来确定目标车辆。在一些实施例中,处理器112可以包括一个或多个处理核(例如,单核处理器(s)或多核处理器(s))。仅作为举例,处理器112可以包括中央处理单元(centralprocessorunit,cpu)、专用集成电路(applicationspecificintegratedcircuit,asic)、专用指令集处理器(applicationspecificinstruction-setprocessor,asip)、图形处理单元(graphicsprocessingunit,gpu)、物理处理单元(physicsprocessingunit,ppu)、数字信号处理器(digitalsignalprocessor,dsp)、现场可编程门阵列(fieldprogrammablegatearray,fpga)、可编程逻辑器件(programmablelogicdevice,pld)、控制器、微控制器单元、简化指令集计算机(reducedinstructionsetcomputing,risc)、或微处理器等,或其任意组合。

网络120可以用于信息和/或数据的交换。在一些实施例中,账户数据更新系统100中的一个或多个组件(例如,服务器110,服务请求方终端130,服务提供方终端140和数据库150)可以向其他组件发送信息和/或数据。例如,服务器110可以经由网络120从服务请求方终端130获取服务请求。在一些实施例中,网络120可以是任何类型的有线或者无线网络,或者是他们的结合。仅作为示例,网络130可以包括有线网络、无线网络、光纤网络、远程通信网络、内联网、因特网、局域网(localareanetwork,lan)、广域网(wideareanetwork,wan)、无线局域网(wirelesslocalareanetworks,wlan)、城域网(metropolitanareanetwork,man)、广域网(wideareanetwork,wan)、公共电话交换网(publicswitchedtelephonenetwork,pstn)、蓝牙网络、zigbee网络、或近场通信(nearfieldcommunication,nfc)网络等,或其任意组合。在一些实施例中,网络120可以包括一个或多个网络接入点。例如,网络120可以包括有线或无线网络接入点,例如基站和/或网络交换节点,账户数据更新系统100的一个或多个组件可以通过该接入点连接到网络120以交换数据和/或信息。

在一些实施例中,服务请求方终端130的用户可以是除服务实际需求者之外的其他人。例如,服务请求方终端130的用户a可以使用服务请求方终端130来为服务实际需求者b发起服务请求(比如,用户a可以为自己的朋友b叫车),或者从服务器110接收服务信息或指令等。在一些实施例中,服务提供方终端140的用户可以是服务实际提供者,也可以是除服务实际提供者之外的其他人。例如,服务提供方终端140的用户c可以使用服务提供方终端140接收由服务实际提供者d提供服务的服务请求(比如用户c可以为自己雇用的司机d接单),和/或来自服务器110的信息或指令。在一些实施例中,“服务请求方”和“服务请求方终端”可以互换使用,“服务提供方”和“服务提供方终端”可以互换使用。

在一些实施例中,服务请求方终端130可以包括移动设备、平板计算机、膝上型计算机、或机动车辆中的内置设备等,或其任意组合。在一些实施例中,移动设备可以包括智能家居设备、可穿戴设备、智能移动设备、虚拟现实设备、或增强现实设备等,或其任意组合。

在一些实施例中,服务请求方终端130可以是具有用于定位服务请求方和/或服务请求方终端的位置的定位技术的设备。服务提供方终端140可以是与服务请求方终端130类似或相同的设备。在一些实施例中,服务提供方终端140可以是具有定位技术的设备,用于定位服务提供方和/或服务提供方终端的位置。在一些实施例中,服务请求方终端130和/或服务提供方终端140可以与其他定位设备通信以确定服务请求方、服务请求方终端130、服务提供方、或服务提供方终端140、或其任意组合的位置。在一些实施例中,服务请求方终端130和/或服务提供方终端140可以将定位信息发送给服务器110。

数据库150可以存储数据和/或指令。在一些实施例中,数据库150可以存储从服务请求方终端130和/或服务提供方终端140获得的数据。在一些实施例中,数据库150可以存储在本申请中描述的示例性方法的数据和/或指令。在一些实施例中,数据库150可以包括大容量存储器、可移动存储器、易失性读写存储器、或只读存储器(read-onlymemory,rom)等,或其任意组合。作为举例,大容量存储器可以包括磁盘、光盘、固态驱动器等;可移动存储器可包括闪存驱动器、软盘、光盘、存储卡、zip磁盘、磁带等;易失性读写存储器可以包括随机存取存储器(randomaccessmemory,ram);ram可以包括动态ram(dynamicrandomaccessmemory,dram),双倍数据速率同步动态ram(doubledate-ratesynchronousram,ddrsdram);静态ram(staticrandom-accessmemory,sram),晶闸管ram(thyristor-basedrandomaccessmemory,t-ram)和零电容器ram(zero-ram)等。作为举例,rom可以包括掩模rom(maskread-onlymemory,mrom)、可编程rom(programmableread-onlymemory,prom)、可擦除可编程rom(programmableerasableread-onlymemory,perom)、电可擦除可编程rom(electricallyerasableprogrammablereadonlymemory,eeprom)、光盘rom(cd-rom)、以及数字通用磁盘rom等。在一些实施例中,数据库150可以在云平台上实现。仅作为示例,云平台可以包括私有云、公有云、混合云、社区云、分布式云、跨云、多云或者其它类似的等,或其任意组合。

在一些实施例中,数据库150可以连接到网络120以与账户数据更新系统100(例如,服务器110,服务请求方终端130,服务提供方终端140等)中的一个或多个组件通信。账户数据更新系统100中的一个或多个组件可以经由网络120访问存储在数据库150中的数据或指令。在一些实施例中,数据库150可以直接连接到异常行驶行为的识别系统100中的一个或多个组件(例如,服务器110,服务请求方终端130,服务提供方终端140等);或者,在一些实施例中,数据库150也可以是服务器110的一部分。

在一些实施例中,账户数据更新系统100中的一个或多个组件(例如,服务器110,服务请求方终端130,服务提供方终端140等)可以具有访问数据库150的权限。在一些实施例中,当满足一定条件时,账户数据更新系统100中的一个或多个组件可以读取和/或修改与服务请求方、服务提供方、或公众、或其任意组合有关的信息。例如,服务器110可以在接收服务请求之后读取和/或修改一个或多个用户的信息。

图2示出根据本申请的一些实施例的可以实现本申请思想的服务器110、服务请求方终端130、服务提供方终端140的电子设备200的示例性硬件和软件组件的示意图。例如,处理器220可以用于电子设备200上,并且用于执行本申请中的功能。

电子设备200可以是通用计算机或特殊用途的计算机,两者都可以用于实现本申请的异常行驶行为的识别方法。本申请尽管仅示出了一个计算机,但是为了方便起见,可以在多个类似平台上以分布式方式实现本申请描述的功能,以均衡处理负载。

例如,电子设备200可以包括连接到网络的网络端口210、用于执行程序指令的一个或多个处理器220、通信总线230和不同形式的存储介质240,例如,磁盘、rom或ram,或其任意组合。示例性地,计算机平台还可以包括存储在rom、ram或其他类型的非暂时性存储介质或其任意组合中的程序指令。根据这些程序指令可以实现本申请的方法。电子设备200还包括计算机与其他输入输出设备(例如键盘、显示屏)之间的输入/输出(input/output,i/o)接口250。

为了便于说明,在电子设备200中仅描述了一个处理器。然而,应当注意,本申请中的电子设备200还可以包括多个处理器,因此本申请中描述的一个处理器执行的步骤也可以由多个处理器联合执行或单独执行。例如,若电子设备200的处理器执行步骤a和步骤b,则应该理解,步骤a和步骤b也可以由两个不同的处理器共同执行或者在一个处理器中单独执行。例如,第一处理器执行步骤a,第二处理器执行步骤b,或者第一处理器和第二处理器共同执行步骤a和b。

图3为本申请实施例所提供的一种账户数据更新方法,该方法可以应用于诸如打车平台等多种平台的服务器,具体可以包括以下步骤:

步骤s302,接收业务方的账户写操作请求。

在网约车服务场景中,用户如果需要打车服务(例如预约专车或者快车等),可以通过服务请求方终端进行预约下单,服务请求方终端会生成订单并发送至打车平台服务器,该订单通常包括用户所在位置和用户的联系方式等信息。服务器根据用户所在位置,将订单推送至距离较近的司机的服务提供方终端,司机接收到订单后可以与用户建立通信,完成用户打车服务。

在打车服务结束后,用户会通过服务请求方终端向服务器的平台账户进行付款操作,即向平台账户进行转账,上述打车服务中涉及的订单服务就是财务系统的业务方,用户在进行付款操作的同时,该业务方会向服务器发送账户写操作请求,该请求中携带有业务标识、业务类型和操作信息。其中,业务标识和业务类型作为该账户写操作请求的幂等标识,可以避免发生重复操作,上述业务标识是该请求的唯一id或流水号,业务类型可以包括转账、奖励等多种类型,上述操作信息为该请求所涉及的财务信息,如金额大小、发起账户和目标账户等。

步骤s304,识别账户写操作请求对应的账户的账户类型。

在上述业务方发起账户写操作请求后,服务器进一步对该请求所对应的账户的账户类型进行判断,其中,账户类型包括普通账户和热点账户。热点账户即为入账出账操作频率很高的账户,比如,在打车订单高峰期,平台账户的入账量相当大,即为一种热点账户。

区分热点账户和普通账户,是为了后续对两种账户采用不同的处理方式进行数据更新,以实现对服务器的分压,更好地提升账户写操作请求的处理性能。

具体识别账户写操作请求对应的账户的账户类型的方式有多种,本发明实施例包括但不限于数据库查找方式、账户标识快速识别方式。

步骤s306,生成账户写操作请求的wal日志文件,并通知业务方请求接收成功。

在账户写操作请求对应的账户的账户类型识别完成的同时,服务器还对上述账户写操作请求生成其相应的wal日志文件,生成wal日志文件意味着上述账户写操作请求写入wal流水成功,wal流水是指根据wal日志原理设计的财务流水,请求数据一旦记录wal流水便能够保证数据最终更新成功,无论是掉电还是突然死机等各种情况。wal日志模式下,生成wal日志文件的同时,服务器还向上述业务方返回信息,即通知上述业务方请求接收成功。这种采用wal日志方式时效性非常高,可以大大提升请求处理性能。

在生成账户写操作请求的wal日志文件时,还同时会将上述识别出的账户类型添加到该wal日志文件中,因此,该wal日志文件中不仅包括账户写操作请求携带的信息,如:业务类型、业务标识和操作信息,还包括请求对应的账户的账户类型。

基于wal日志文件中的账户类型,可以采取不同的数据处理方式对账户数据进行更新,如账户类型为热点账户时,采用下述步骤进行操作。

步骤s308,当账户类型为热点账户时,基于wal日志文件对账户写操作请求对应的账户进行异步数据更新。

在具体实施中,当账户写操作请求对应的账户的账户类型为热点账户时,基于wal日志文件,采用异步处理方式对该请求的账户进行数据更新。该wal日志文件中包括有账户写操作请求携带的信息,如:业务类型、业务标识和操作信息,其中,操作信息包括金额大小、发起账户和目标账户等。因此,基于上述信息进行异步处理可以实现该账户写操作请求对应的账户的数据更新。

异步处理的数据更新过程可以有多种方式,在此不做具体限定。

本发明通过对热点账户写操作请求生成具有快速追加写优势的wal日志文件,并进行异步数据处理过程,能够实现热点账户写操作请求的高效数据更新处理,大大提升对热点账户写操作请求的处理性能。与传统的热点账户的拆分处理方案相比,避免因对热点账户请求进行物理或逻辑上的分库分表,而带来的大量操作和损耗,整体性能大大提升,并能够保证数据的整体一致性和请求处理的时效性。

热点账户是指线上财务系统中会被频繁操作的账户,需要具有很高的性能。例如公司入账和公司出账账户,几乎每一笔资金的操作均会牵涉该账户的变动。如上面所述的平台账户就是一种热点账户。要想提高平台的请求处理性能,在接收到账户写操作请求后,需要首先对账户写操作请求对应的账户的账户类型进行识别,下面对本发明实施例所提供的两种账户类型识别方法进行详细阐述:

第一种:获取账户写操作请求对应的发起账户标识和目标账户标识;从预存的热点账户数据库中查找是否存在与发起账户标识或目标账户标识匹配的账户标识;如果是,确定账户写操作请求对应的账户的账户类型为热点账户。

具体实施中,在服务器中预先存储有热点账户数据库,该热点账户数据库中存储有热点账户对应的账户标识,通过从热点账户数据库中查找,判断是否有与上述账户写操作请求对应的账户的账户标识(发起账户标识或目标账户标识)所匹配的账户标识,如果有,即可确定上述账户写操作请求对应的账户的账户类型为热点账户,反之,则为普通账户。

上述热点账户数据库的生成过程如下:统计账户的写操作频率或写操作次数;根据写操作频率或写操作次数判断账户的账户类型是否为热点账户;如果是,将账户的账户标识写入热点账户数据库。

比如:分钟级账户操作次数超过150次的短期营销账户,或者天级累计账户操作次数超过50000次的大ka商户,均可以确定为热点账户,并基于其对应的账户标识,生成热点账户数据库。

需要说明的是,在后续对账户写操作请求进行数据更新的过程中,如果检测到账户操作频率大于预设阈值的情况时,还可以再将该账户标识添加至热点账户数据库中,或者也可以将账户操作频率变低的小于预设阈值的账户标识从热点账户数据库中删除,以对热点账户数据库进行不断地更新。

第二种:获取账户写操作请求对应的发起账户标识和目标账户标识;检查发起账户标识或目标账户标识的指定位是否为指定字段;如果是,确定账户写操作请求对应的账户的账户类型为热点账户。

比如,检测到账户写操作请求对应的发起账户标识和目标账户标识中,至少一个账户标识的开头四位是xxxx,即该账户的账户标识的指定位是指定字段,则确定该账户写操作请求对应的账户的账户类型为热点账户。这种方式可以快速判断出账户写操作请求对应的账户的账户类型。

在账户写操作请求对应的账户的账户类型识别完成的同时,服务器还对上述账户写操作请求生成其相应的wal日志文件,具体的wal日志文件生成方式如下:

将账户写操作请求中的业务标识和业务类型,作为wal日志文件的幂等标识;将账户类型和账户写操作请求中的操作信息写入wal日志文件。

具体实施中,最终生成的wal日志文件中包括有,可以避免同一个请求重复操作的幂等标识,该幂等标识具体包括:业务标识和业务类型,该业务标识是该请求的唯一id或流水号,业务类型可以包括转账、奖励等多种类型,此外,wal日志文件中还记录有账户写操作请求所携带的操作信息,以及上述识别出的账户类型,其中,操作信息为该请求所涉及的财务信息,如金额大小、发起账户和目标账户等,通过写入日志的账户类型确定后续同步处理还是异步处理,通过写入日志的操作信息,可以实现账户数据的更新。

为了进一步提升账户数据更新效率,本实施例中将热点账户和普通账户的账户写操作请求进行分类处理,即上述生成账户写操作请求的wal日志文件的步骤之后,账户数据更新方法还包括:如果账户类型为热点账户,将wal日志文件分配至热点账户队列;如果账户类型为普通账户,将wal日志文件分配至普通账户队列。

在具体实施中,在上述根据账户写操作请求所携带的信息生成wal日志文件的过程中,还将判断出的账户类型添加至该wal日志文件中,因此,可以进一步根据该wal日志文件中的账户类型,将其分配到不同的账户队列,以进行不同的数据处理过程,具体的,如果上述账户写操作请求对应的账户的账户类型为热点账户,则将其对应的wal日志文件分配至热点账户队列,以进行后续异步数据更新;如果上述账户写操作请求对应的账户的账户类型为普通账户,则将其对应的wal日志文件分配至普通账户队列,以进行同数据更新,从而提高账户写操作请求的整体处理性能。

下面具体说明本实施例中的异步数据更新过程和同步数据更新过程:

(1)异步数据更新过程:

对于热点账户队列中的wal日志文件,按照先进先出原则逐一读取wal日志文件;根据读取到的wal日志文件对wal日志文件对应的账户进行数据更新。

具体应用时,通过异步channel管道削峰填谷进行热点账户操作,对于高并发请求,往往存在短时间内大量的请求,但是空闲时间却没有请求。channel管道的设计,就是当流量大量涌入的时候,先收下请求,然后再下游均匀的将请求发放。也就是说,当请求数量较多时,先将请求的wal日志文件加入到热点账户队列中,然后基于先进先出原则,逐一读取wal日志文件,该wal日志文件中包括有账户写操作请求携带的信息,如:业务类型、业务标识和操作信息,其中,操作信息包括金额大小、发起账户和目标账户等。然后根据读取到的wal日志文件中的各种信息对wal日志文件对应的账户进行数据更新。

(2)同步数据更新过程:

如果普通账户队列中有wal日志文件,读取普通账户队列中的wal日志文件;根据读取到的wal日志文件对wal日志文件对应的账户进行数据更新。

在具体应用中,一旦检测到上述普通账户队列中有wal日志文件,便立刻进行文件读取操作,并进行普通账户写操作请求的wal日志文件对应的账户的快速数据更新。

本申请实施例中通过对热点账户和普通账户分别采取异步处理和同步处理方式,可以给服务器进行分压,同时提升数据的处理性能。

出于账户数据一致性的考虑,上述账户数据更新方法还包括:当生成账户写操作请求的wal日志文件时,在wal日志文件中写入第一状态标识,第一状态标识用以标识账户写操作请求对应的操作处于处理中;当wal日志文件对应的账户已完成数据更新,将wal日志文件中的第一状态标识修改为第二状态标识,第二状态标识用以标识账户写操作请求对应的操作已完成。

比如,第一状态标识为001,用于表示账户写操作请求对应的操作处于处理中的状态,第二状态标识为002,用于表示账户写操作请求对应的操作已完成。需要说明的是,001,002仅为示例,还可以是其他的标识符号。

在热点账户的异步处理过程中,当监听到异步处理失败的回调消息,或者监听到wal日志文件带有第一状态标识(即账户写操作请求的操作处于处理中)的持续时长超时时,再次基于wal日志文件对账户写操作请求对应的账户进行异步数据更新。

这种处理方式,可以在异步处理逻辑异常时,将第一状态标识调整为001,重新进行异步流程触发,达到无限回溯,或者在账户写操作请求的操作处于处理中的时长超过预设阈值时,重新进行异步流程触发,达到无限回溯,保证后续数据处理的最终一致性。

进一步,还可以记录上述账户再次进行数据更新的次数;如果次数超过预设的次数阈值,向业务方发送重新发送账户写操作请求的通知。这种情况下需要人工参与,通过通知业务方再次发送请求,确保最终账户数据更新完成。

如果账户的数据更新操作成功,还可以向账户对应的需求方发送账户已更新的广播消息,其中,需求方包括业务方。

具体的,账户数据更新完成后,服务器可以以全局广播消息的方式广播最终结果,一方面,当异步处理失败时,可以使系统自身监听到回调消息,重新触发异步流程;还可以异步通知业务方,无阻塞的保证数据的完整一致性;另一方面,可以通过消息队列发送广播消息到相关业务方,以使相关业务方进行实时数据流统计,如大数据统计等;最后,广播消息还可以告知对时效性要求极高的业务方,要求时效性一般在100ms以内,最终使其接收到账户全流程处理已经成功的消息。

本发明实施例所提供的账户数据更新方法,基于wal日志模式,通过状态标识、幂等标识、异步数据处理过程以及全局广播消息的整体设计,保证了热点账户的数据流高效、准确的记录,更新和追溯。

下面列举一种具体的热点账户应用实例:

由账户a向账户b进行转账。经判断账户a和账户b中至少有一个为热点账户,该账户请求为热点账户请求,具体过程包括以下步骤,参见图4所示:

步骤s402,接收业务方发起的热点账户请求。

步骤s404,记录wal流水,返回给业务方(告知业务方请求已成功接收)。

这一步骤中,相当于生成该热点账户请求的wal日志文件,该wal日志文件中记录有四个信息:

(1)幂等标识,包括业务标识和业务类型,以保证这个业务不会重复;

(2)状态标识,生成wal日志文件表示写入wal流水成功,此时状态标识为1,若最终异步处理成功会将状态标识1改为2;

(3)操作信息,比如账户a、账户b以及转账金额等;

(4)账户类型,即预先判断出的该账户请求涉及的账户的账户类型,这里为热点账户。

步骤s406,异步流程触发,写入成功后就将该wal日志文件分配到热点账户队列,以进行异步数据更新。

步骤s408,异步流式处理失败,即分配到热点账户队列过程异常,则返回步骤s402中以进行重新触发。

步骤s410,异步流式处理成功,就进行账户更新,即将wal日志中的状态标识由1改为2,并且将该请求对应的账户的状态进行变更,即账户a的金额变少,账户b的金额变多。

步骤s412,如果账户更新失败,则返回步骤s402中以进行重新触发。

步骤s414,账户更新成功,就进行消息广播;可以告知业务方这个业务完成,是否还需要其他操作;或者告知相关业务方账户a和账户b之间的转账已经完成,以使相关财务统计信息中对此条财务信息进行记录;或者也可以使系统本身对该请求的账户的操作频率进行统计,以对其是否是热点账户进行重新判断及更新。

本实施例通过热点账户请求、wal异步流、广播一致性三个部分可以确保数据最终的一致性,并提升对热点账户请求的处理性能。

图5是示出本申请的一些实施例的账户数据更新装置的框图,该账户数据更新装置实现的功能对应上述方法执行的步骤。该装置可以理解为上述服务器,或服务器的处理器,也可以理解为独立于上述服务器或处理器之外的在服务器控制下实现本申请功能的组件,如图所示,账户数据更新装置可以包括:请求接收模块502、账户类型识别模块504、日志文件生成模块506和异步数据更新模块508。

其中,请求接收模块502,用于接收业务方的账户写操作请求;账户类型识别模块504,用于识别账户写操作请求对应的账户的账户类型;其中,账户类型包括普通账户和热点账户;日志文件生成模块506,用于生成账户写操作请求的wal日志文件,并通知业务方请求接收成功;其中,wal日志文件包括:账户写操作请求携带的信息和账户类型;异步数据更新模块508,用于在账户类型为热点账户时,基于wal日志文件对账户写操作请求对应的账户进行异步数据更新。

上述账户数据更新装置中,通过对热点账户写操作请求生成具有快速追加写优势的wal日志文件,并进行异步数据处理过程,能够实现热点账户写操作请求的高效数据更新处理,大大提升对热点账户写操作请求的处理性能。

参见图6所示,在一些实施方式中,上述账户数据更新装置除了包括与图5中相同的请求接收模块602、账户类型识别模块604、日志文件生成模块606和异步数据更新模块608之外,还包括:文件分配模块610,用于:如果账户类型为热点账户,将wal日志文件分配至热点账户队列;如果账户类型为普通账户,将wal日志文件分配至普通账户队列。

在一些实施方式中,异步数据更新模块608,还用于:对于热点账户队列中的wal日志文件,按照先进先出原则逐一读取wal日志文件;根据读取到的wal日志文件对wal日志文件对应的账户进行数据更新。

在一些实施方式中,上述账户数据更新装置还包括:同步数据更新模块612,用于:如果普通账户队列中有wal日志文件,读取普通账户队列中的wal日志文件;根据读取到的wal日志文件对wal日志文件对应的账户进行数据更新。

具体实施时,上述日志文件生成模块606,还用于:将账户写操作请求中的业务标识和业务类型,作为wal日志文件的幂等标识;将账户类型和账户写操作请求中的操作信息写入wal日志文件。

在另一种实施方式中,上述账户数据更新装置还包括:状态设置模块614,用于:当生成账户写操作请求的wal日志文件时,在wal日志文件中写入第一状态标识,第一状态标识用以标识账户写操作请求对应的操作处于处理中;当wal日志文件对应的账户已完成数据更新,将wal日志文件中的第一状态标识修改为第二状态标识,第二状态标识用以标识账户写操作请求对应的操作已完成。

在另一种实施方式中,上述账户数据更新装置还包括:监听回调模块616,用于:当监听到异步处理失败的回调消息,或者监听到wal日志文件带有第一状态标识的持续时长超时时,再次基于wal日志文件对账户写操作请求对应的账户进行异步数据更新。

在另一种实施方式中,上述账户数据更新装置还包括:提醒模块618,用于:记录账户再次进行数据更新的次数;如果次数超过预设的次数阈值,向业务方发送重新发送账户写操作请求的通知。

在另一种实施方式中,上述账户数据更新装置还包括:消息广播模块620,用于:如果账户的数据更新操作成功,向账户对应的需求方发送账户已更新的广播消息,其中,需求方包括业务方。

在具体实施时,上述账户类型识别模块604,还用于:获取账户写操作请求对应的发起账户标识和目标账户标识;从预存的热点账户数据库中查找是否存在与发起账户标识或目标账户匹配标识的账户标识;如果是,确定账户写操作请求对应的账户的账户类型为热点账户。

在另一种实施方式中,上述账户数据更新装置还包括:热点账户数据库生成模块622,用于:统计账户的写操作频率或写操作次数;根据写操作频率或写操作次数确定账户的账户类型为热点账户;如果是,将账户的账户标识写入热点账户数据库。

在具体实施中,上述账户类型识别模块604,还用于:获取账户写操作请求对应的发起账户标识和目标账户标识;检查发起账户标识或目标账户标识的指定位是否为指定字段;如果是,确定账户写操作请求对应的账户的账户类型为热点账户。

上述模块可以经由有线连接或无线连接彼此连接或通信。有线连接可以包括金属线缆、光缆、混合线缆等,或其任意组合。无线连接可以包括通过lan、wan、蓝牙、zigbee、或nfc等形式的连接,或其任意组合。两个或更多个模块可以组合为单个模块,并且任何一个模块可以分成两个或更多个单元。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

另外,在本申请实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。

在本申请的描述中,需要说明的是,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。


技术特征:

1.一种账户数据更新方法,其特征在于,所述方法应用于服务器,包括:

接收业务方的账户写操作请求;

识别所述账户写操作请求对应的账户的账户类型;其中,所述账户类型包括普通账户和热点账户;

生成所述账户写操作请求的wal日志文件,并通知所述业务方请求接收成功;其中,所述wal日志文件包括:所述账户写操作请求携带的信息和所述账户类型;

当所述账户类型为热点账户时,基于所述wal日志文件对所述账户写操作请求对应的账户进行异步数据更新。

2.根据权利要求1所述的方法,其特征在于,生成所述账户写操作请求的wal日志文件的步骤之后,所述方法还包括:

如果所述账户类型为热点账户,将所述wal日志文件分配至热点账户队列;

如果所述账户类型为普通账户,将所述wal日志文件分配至普通账户队列。

3.根据权利要求2所述的方法,其特征在于,当所述账户类型为热点账户时,基于所述wal日志文件对所述账户写操作请求对应的账户进行异步数据更新的步骤,包括:

对于所述热点账户队列中的wal日志文件,按照先进先出原则逐一读取所述wal日志文件;

根据读取到的所述wal日志文件对所述wal日志文件对应的账户进行数据更新。

4.根据权利要求2所述的方法,其特征在于,所述方法还包括:

如果所述普通账户队列中有wal日志文件,读取所述普通账户队列中的wal日志文件;

根据读取到的所述wal日志文件对所述wal日志文件对应的账户进行数据更新。

5.根据权利要求1所述的方法,其特征在于,生成所述账户写操作请求的wal日志文件的步骤,包括:

将所述账户写操作请求中的业务标识和业务类型,作为wal日志文件的幂等标识;

将所述账户类型和所述账户写操作请求中的操作信息写入所述wal日志文件。

6.根据权利要求1所述的方法,其特征在于,所述方法还包括:

当生成所述账户写操作请求的wal日志文件时,在所述wal日志文件中写入第一状态标识,所述第一状态标识用以标识所述账户写操作请求对应的操作处于处理中;

当所述wal日志文件对应的账户已完成数据更新,将所述wal日志文件中的第一状态标识修改为第二状态标识,所述第二状态标识用以标识所述账户写操作请求对应的操作已完成。

7.根据权利要求6所述的方法,其特征在于,所述方法还包括:

当监听到异步处理失败的回调消息,或者监听到所述wal日志文件带有所述第一状态标识的持续时长超时时,再次基于所述wal日志文件对所述账户写操作请求对应的账户进行异步数据更新。

8.根据权利要求7所述的方法,其特征在于,所述方法还包括:

记录所述账户再次进行数据更新的次数;

如果所述次数超过预设的次数阈值,向所述业务方发送重新发送所述账户写操作请求的通知。

9.根据权利要求1所述的方法,其特征在于,所述方法还包括:

如果所述账户的数据更新操作成功,向所述账户对应的需求方发送所述账户已更新的广播消息,其中,所述需求方包括所述业务方。

10.根据权利要求1所述的方法,其特征在于,识别所述账户写操作请求对应的账户的账户类型的步骤,包括:

获取所述账户写操作请求对应的发起账户标识和目标账户标识;

从预存的热点账户数据库中查找是否存在与发起账户标识或目标账户标识匹配的账户标识;

如果是,确定所述账户写操作请求对应的账户的账户类型为热点账户。

11.根据权利要求1所述的方法,其特征在于,所述热点账户数据库通过如下方式生成:

统计账户的写操作频率或写操作次数;

根据所述写操作频率或所述写操作次数判断所述账户的账户类型是否为热点账户;

如果是,将所述账户的账户标识写入所述热点账户数据库。

12.根据权利要求1所述的方法,其特征在于,识别所述账户写操作请求对应的账户的账户类型的步骤,包括:

获取所述账户写操作请求对应的发起账户标识和目标账户标识;

检查所述发起账户标识或所述目标账户标识的指定位是否为指定字段;

如果是,确定所述账户写操作请求对应的账户的账户类型为热点账户。

13.一种账户数据更新装置,其特征在于,所述装置应用于服务器,包括:

请求接收模块,用于接收业务方的账户写操作请求;

账户类型识别模块,用于识别所述账户写操作请求对应的账户的账户类型;其中,所述账户类型包括普通账户和热点账户;

日志文件生成模块,用于生成所述账户写操作请求的wal日志文件,并通知所述业务方请求接收成功;其中,所述wal日志文件包括:所述账户写操作请求携带的信息和所述账户类型;

异步数据更新模块,用于在所述账户类型为热点账户时,基于所述wal日志文件对所述账户写操作请求对应的账户进行异步数据更新。

14.根据权利要求13所述的装置,其特征在于,所述装置还包括:文件分配模块,用于:

如果所述账户类型为热点账户,将所述wal日志文件分配至热点账户队列;

如果所述账户类型为普通账户,将所述wal日志文件分配至普通账户队列。

15.根据权利要求14所述的装置,其特征在于,所述异步数据更新模块,还用于:

对于所述热点账户队列中的wal日志文件,按照先进先出原则逐一读取所述wal日志文件;

根据读取到的所述wal日志文件对所述wal日志文件对应的账户进行数据更新。

16.根据权利要求14所述的装置,其特征在于,所述装置还包括:同步数据更新模块,用于:

如果所述普通账户队列中有wal日志文件,读取所述普通账户队列中的wal日志文件;

根据读取到的所述wal日志文件对所述wal日志文件对应的账户进行数据更新。

17.根据权利要求13所述的装置,其特征在于,所述日志文件生成模块,还用于:

将所述账户写操作请求中的业务标识和业务类型,作为wal日志文件的幂等标识;

将所述账户类型和所述账户写操作请求中的操作信息写入所述wal日志文件。

18.根据权利要求13所述的装置,其特征在于,所述装置还包括:状态设置模块,用于:

当生成所述账户写操作请求的wal日志文件时,在所述wal日志文件中写入第一状态标识,所述第一状态标识用以标识所述账户写操作请求对应的操作处于处理中;

当所述wal日志文件对应的账户已完成数据更新,将所述wal日志文件中的第一状态标识修改为第二状态标识,所述第二状态标识用以标识所述账户写操作请求对应的操作已完成。

19.根据权利要求18所述的装置,其特征在于,所述装置还包括:监听回调模块,用于:

当监听到异步处理失败的回调消息,或者监听到所述wal日志文件带有所述第一状态标识的持续时长超时时,再次基于所述wal日志文件对所述账户写操作请求对应的账户进行异步数据更新。

20.根据权利要求19所述的装置,其特征在于,所述装置还包括:提醒模块,用于:

记录所述账户再次进行数据更新的次数;

如果所述次数超过预设的次数阈值,向所述业务方发送重新发送所述账户写操作请求的通知。

21.根据权利要求13所述的装置,其特征在于,所述装置还包括:消息广播模块,用于:

如果所述账户的数据更新操作成功,向所述账户对应的需求方发送所述账户已更新的广播消息,其中,所述需求方包括所述业务方。

22.根据权利要求13所述的装置,其特征在于,所述账户类型识别模块,还用于:

获取所述账户写操作请求对应的发起账户标识和目标账户标识;

从预存的热点账户数据库中查找是否存在与发起账户标识或目标账户标识匹配的账户标识;

如果是,确定所述账户写操作请求对应的账户的账户类型为热点账户。

23.根据权利要求13所述的装置,其特征在于,所述装置还包括:热点账户数据库生成模块,用于:

统计账户的写操作频率或写操作次数;

根据所述写操作频率或所述写操作次数判断所述账户的账户类型是否为热点账户;

如果是,将所述账户的账户标识写入所述热点账户数据库。

24.根据权利要求13所述的装置,其特征在于,所述账户类型识别模块,还用于:

获取所述账户写操作请求对应的发起账户标识和目标账户标识;

检查所述发起账户标识或所述目标账户标识的指定位是否为指定字段;

如果是,确定所述账户写操作请求对应的账户的账户类型为热点账户。

25.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行时执行如权利要求1至12任一所述的账户数据更新方法的步骤。

26.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1~12任一所述的账户数据更新方法的步骤。

技术总结
本申请提供了一种账户数据更新方法、装置及电子设备,其中,该方法包括:接收业务方的账户写操作请求;识别账户写操作请求对应的账户的账户类型;其中,账户类型包括普通账户和热点账户;生成账户写操作请求的WAL日志文件,并通知业务方请求接收成功;其中,WAL日志文件包括:账户写操作请求携带的信息和账户类型;当账户类型为热点账户时,基于WAL日志文件对账户写操作请求对应的账户进行异步数据更新。本申请实施例通过对热点账户写操作请求生成具有快速追加写优势的WAL日志文件,并进行异步数据处理过程,能够实现热点账户写操作请求的高效数据更新处理,大大提升对热点账户写操作请求的数据处理性能。

技术研发人员:刘恺;崔涣;康亮;樊倬溥;崔国良
受保护的技术使用者:北京嘀嘀无限科技发展有限公司
技术研发日:2018.11.13
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-50181.html

最新回复(0)