CN116628033A - 缓存预热和数据处理的方法、服务装置、电子设备及介质 - Google Patents
缓存预热和数据处理的方法、服务装置、电子设备及介质 Download PDFInfo
- Publication number
- CN116628033A CN116628033A CN202310628153.XA CN202310628153A CN116628033A CN 116628033 A CN116628033 A CN 116628033A CN 202310628153 A CN202310628153 A CN 202310628153A CN 116628033 A CN116628033 A CN 116628033A
- Authority
- CN
- China
- Prior art keywords
- data
- information
- message body
- cache
- preheating
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title description 5
- 238000000034 method Methods 0.000 claims abstract description 90
- 238000012545 processing Methods 0.000 claims abstract description 45
- 238000012544 monitoring process Methods 0.000 claims abstract description 26
- 238000012216 screening Methods 0.000 claims description 53
- 230000005856 abnormality Effects 0.000 claims description 49
- 230000008859 change Effects 0.000 claims description 43
- 238000004891 communication Methods 0.000 claims description 17
- 230000001360 synchronised effect Effects 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 15
- 230000002159 abnormal effect Effects 0.000 claims description 14
- 238000010438 heat treatment Methods 0.000 claims description 14
- 238000012795 verification Methods 0.000 claims description 11
- 230000008014 freezing Effects 0.000 claims description 9
- 238000007710 freezing Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 8
- 239000000758 substrate Substances 0.000 claims description 2
- 238000012546 transfer Methods 0.000 abstract description 9
- 230000000737 periodic effect Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 7
- 238000011084 recovery Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 238000012508 change request Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012827 research and development Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种缓存预热和数据处理的方法、服务装置、电子设备及介质,上述缓存预热的方法包括:监听并获取消息队列中的预热消息体;上述预热消息体是由从数据库定期筛选出的第一最新目标数据生成的;确定缓存中是否存在与上述预热消息体对应的第一数据;在存在上述第一数据的情况下,确定上述第一数据和上述预热消息体的信息是否一致;在上述第一数据与上述预热消息体的信息不一致的情况下,将上述预热消息体的信息设置为上述第一数据的替换值。该方法实现缓存中的预热数据和数据库中的数据源保持一致,基于消息队列的数据实时流转特性,有效节省数据中转所需的存储空间。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种缓存预热和数据处理的方法、服务装置、电子设备及介质。
背景技术
随着各类应用系统的用户量越来越多,应用所支持的功能越来越复杂,如何在高并发场景下确保应用系统能够及时响应用户请求成为业界面临的问题,同时在提升高并发请求下响应及时性的同时还确保数据库的性能稳定也至关重要。以电商领域为例,在特定节日或者促销等场景下,很多用户会进行网购操作,在支持自动分期服务的场景下,会产生大量用户高并发的签约、变更签约、查询签约等场景,在大量访问请求在短时间内访问数据库的情况下,会导致数据库的宕机。
相关技术中,通过在服务器的缓存中预先加载一些数据(称为缓存预热),针对查询请求先访问缓存,在缓存中查询不到的情况下再去访问数据库,这种方式可以减轻数据库的访问压力。目前的缓存预热的方式大多是基于用户请求进行缓存预热。
发明内容
为了解决或者至少部分地解决以下发现的技术问题:基于用户请求进行缓存预热不能自发进行,而且进行预热的过程中如果数据源发生了变化,根据用户请求进行预热的方式存在缓存中的预热数据和数据源不一致的问题;本公开的实施例提供了一种缓存预热和数据处理的方法、服务装置、电子设备及介质。
第一方面,本公开的实施例提供了一种缓存预热的方法。上述缓存预热的方法包括:监听并获取消息队列中的预热消息体;上述预热消息体是由从数据库定期筛选出的第一最新目标数据生成的;确定缓存中是否存在与上述预热消息体对应的第一数据;在存在上述第一数据的情况下,确定上述第一数据和上述预热消息体的信息是否一致;在上述第一数据与上述预热消息体的信息不一致的情况下,将上述预热消息体的信息设置为上述第一数据的替换值。
根据本公开的实施例,上述确定缓存中是否存在与上述预热消息体对应的第一数据,包括:将上述预热消息体转换为第一数据实体;上述第一数据实体携带有以下信息:第一用户标识、第一用户状态和第一自动分期付款信息;在上述缓存中查询是否存在以上述第一用户标识作为键的第一数据。确定上述第一数据和上述预热消息体的信息是否一致,包括:确定上述第一数据与上述第一用户状态和上述第一自动分期付款信息是否一致;在上述第一数据与上述第一用户状态和上述第一自动分期付款信息中至少一项不一致的情况下,视为上述第一数据与上述预热消息体的信息不一致。
根据本公开的实施例,上述第一最新目标数据包括:筛选时段内的用户状态为非注销状态、非冻结状态且经风控校验为非高风险类型的自动分期规则记录数据;其中,以上述定期对应的筛选时机作为时间终点,从上述时间终点回溯预设时长作为上述筛选时段;其中,上述筛选时段包括:第一筛选时段,上述第一筛选时段用于筛选增量数据;或者,第二筛选时段,上述第二筛选时段用于筛选增量数据和存量数据。
根据本公开的实施例,上述缓存预热的方法还包括:监听并获取上述消息队列中的补偿消息体;上述补偿消息体是在上述定期的间隔时段内由从上述数据库中获取的第二最新目标数据生成的;确定上述缓存中是否存在与上述补偿消息体对应的第二数据;在存在上述第二数据的情况下,确定上述第二数据和上述补偿消息体的信息是否一致;在上述第二数据与上述补偿消息体的信息不一致的情况下,将上述补偿消息体的信息设置为上述第二数据的替换值;在不存在上述第二数据的情况下,将上述补偿消息体的信息存储至上述缓存中。
根据本公开的实施例,确定上述缓存中是否存在与上述补偿消息体对应的第二数据,包括:将上述补偿消息体转换为第二数据实体;上述第二数据实体携带有以下信息:第二用户标识、第二用户状态和第二自动分期付款信息;在上述缓存中查询是否存在以上述第二用户标识作为键的第二数据。确定上述第二数据和上述补偿消息体的信息是否一致,包括:确定上述第二数据与上述第二用户状态和上述第二自动分期付款信息是否一致;在上述第二数据与上述第二用户状态和上述第二自动分期付款信息中至少一项不一致的情况下,视为上述第二数据与上述补偿消息体的信息不一致。
根据本公开的实施例,上述第二最新目标数据包括:上述间隔时段内的用户状态为非注销状态、非冻结状态且经风控校验为非高风险类型的自动分期规则记录数据。
根据本公开的实施例,上述缓存预热的方法还包括:在不存在上述第一数据的情况下,将上述预热消息体的信息存储至上述缓存中。
根据本公开的实施例,上述缓存预热的方法还包括:检测针对上述消息队列是否发生数据消费异常;在检测到上述数据消费异常的情况下,识别消费异常类型;在上述消费异常类型为网络异常的情况下,监测网络状态并在网络状态恢复正常的情况下进行第一消费重试操作,在上述第一消费重试操作中,从重试队列和上述消息队列同步进行数据消费;其中上述重试队列中的数据是从上述消息队列转移的由于网络异常导致消费失败的待消费目标数据;在上述消费异常类型为模块异常的情况下,监测发生异常的第一模块的状态并在状态恢复正常的情况下进行第二消费重试操作,在上述第二消费重试操作中,基于上述第一模块,从上述消息队列消费数据至缓存。
根据本公开的实施例,上述缓存预热的方法还包括:检测针对上述消息队列是否发生数据产生异常;在检测到上述数据产生异常的情况下,识别产生异常类型;在上述产生异常类型为网络异常的情况下,监测网络状态并在网络状态恢复正常的情况下进行第一产生重试操作,在上述第一产生重试操作中,将第一待同步预热消息体同步至上述消息队列中;其中上述第一待同步预热消息体是由于网络异常导致尚未在上述消息队列同步的预热消息体;在上述产生异常类型为模块异常的情况下,监测发生异常的第二模块的状态并在状态恢复正常的情况下进行第二产生重试操作,在上述第二产生重试操作中,基于上述第二模块对待处理的第一最新目标数据进行处理,生成第二待同步预热消息体,并将上述第二待同步预热消息体同步至上述消息队列。
第二方面,本公开的实施例提供了一种数据处理的方法。上述数据处理的方法包括:接收请求端发起的针对目标数据对象的操作指令,上述操作指令包括以下至少一种指令:新增指令、查询指令、变更指令;上述变更指令包括内容变更和状态变更至少一种;根据上述签约指令、上述变更指令的至少一种,在数据库中对上述目标数据对象对应的目标信息对应进行存储、变更的至少一种;根据上述查询指令,从缓存中查询是否存在与上述目标数据对象对应的目标信息;上述缓存内的信息采用如上所述的缓存预热的方法进行预热得到;在上述缓存中存在上述目标信息的情况下,将上述目标信息发送给上述请求端。
根据本公开的实施例,上述数据处理的方法包括:在上述缓存中不存在上述目标信息的情况下,从上述数据库中查询是否存在上述目标信息;在上述数据库中存在上述目标信息的情况下,将上述目标信息发给给上述请求端,并存储至上述缓存中;在上述数据库中不存在上述目标信息的情况,将上述目标数据对象对应的用户标识和未签约状态下的记录信息存储至上述缓存;上述未签约状态用于表示上述用户标识对应的用户并未参与上述目标数据对象对应的业务。其中,在下一次接收到针对上述用户标识的查询指令的情况下,根据上述缓存中存储的上述记录信息来反馈查询结果。
在一些实施例中,上述目标数据对象包括:账单分期记录表,上述新增指令包括签约指令,上述变更指令包括:签约信息变更指令、签约状态变更指令,上述签约状态变更指令包括:签约关闭指令。
第三方面,本公开的实施例提供了一种服务装置。上述服务装置包括:数据监听模块、数据匹配模块、一致性校验模块和赋值模块。上述数据监听模块用于监听并获取消息队列中的预热消息体;上述预热消息体是由从数据库定期筛选出的第一最新目标数据生成的。上述数据匹配模块用于确定缓存中是否存在与上述预热消息体对应的第一数据。上述一致性校验模块用于在存在上述第一数据的情况下,确定上述第一数据和上述预热消息体的信息是否一致。上述赋值模块用于在上述第一数据与上述预热消息体的信息不一致的情况下,将上述预热消息体的信息设置为上述第一数据的替换值。
根据本公开的实施例,上述服务装置还包括:请求指令接收模块、查询模块、数据发送模块和数据处理模块。上述请求指令接收模块用于接收请求端发起的针对目标数据对象的操作指令,上述操作指令包括以下至少一种指令:新增指令、查询指令、变更指令;上述变更指令包括内容变更和状态变更至少一种。上述查询模块用于根据上述查询指令,从上述缓存中查询是否存在与上述目标数据对象对应的目标信息。上述数据发送模块用于在上述缓存中存在上述目标信息的情况下,将上述目标信息发送给上述请求端。上述数据处理模块用于根据上述签约指令、上述变更指令的至少一种,在数据库中对上述目标数据对象对应的目标信息对应进行存储、变更的至少一种。
第三方面,本公开的实施例提供了一种电子设备。上述电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现如上所述的缓存预热的方法或数据处理的方法。
第四方面,本公开的实施例提供了一种计算机可读存储介质。上述计算机可读存储介质上存储有计算机程序,上述计算机程序被处理器执行时实现如上所述的缓存预热的方法或数据处理的方法。
本公开实施例提供的上述技术方案至少具有如下优点的部分或全部:
通过利用从数据库定期筛选出第一最新目标数据生成预热消息体,该预热消息体携带的是数据库中在定期筛选时最新的目标数据,确保后续进行第一数据和预热消息体的信息之间的一致性校验的时候能够将最新的数据更新至缓存,实现缓存中的预热数据和数据库中的数据源保持一致;另外,通过利用消息队列进行数据实时流转,将该预热消息体存储于消息队列中,从上述消息队列中监听是否产生了预热消息体,在监听到预热消息体的情况下及时消费上述预热消息体,基于数据实时流转特性,传输较大容量的第一最新目标数据所需的消息队列的空间比起第一最新目标数据的容量而言很小,有效节省数据中转所需的存储空间。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示意性地示出了适用于本公开实施例的缓存预热和数据处理的方法的系统架构;
图2示意性地示出了根据本公开一实施例的缓存预热的方法的流程图;
图3示意性地示出了根据本公开另一实施例的缓存预热的方法的流程图;
图4示意性地示出了根据本公开又一实施例的缓存预热的方法的流程图;
图5示意性地示出了根据本公开再一实施例的缓存预热的方法的流程图;
图6示意性地示出了根据本公开又另一实施例的缓存预热的方法的流程图;
图7示意性地示出了根据本公开一实施例的数据处理的方法的流程图;
图8示意性地示出了根据本公开另一实施例的数据处理的方法的流程图;
图9示意性地示出了根据本公开一实施例的服务装置的结构框图;
图10示意性地示出了根据本公开另一实施例的服务装置的结构框图;以及
图11示意性地示出了本公开实施例提供的电子设备的结构框图。
具体实施方式
如何在高并发场景下确保应用系统能够及时响应用户请求成为业界面临的问题,同时在提升高并发请求下响应及时性的同时还确保数据库的性能稳定也至关重要。
以电商领域为例,在特定节日或者促销等场景下,很多用户会进行网购操作,在支持自动分期服务的场景下,会产生大量用户高并发的签约、变更签约、查询签约等场景。在高并发查询请求下,数据库qps(每秒查询率,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。即每秒的响应请求数,也即是最大吞吐能力)峰值达到2w/s(万每秒),数据库cpu使用峰值高达87%,由于自动分期签约规则为单库单表存储,在特定节日或促销期间暴露出数据库存在宕机风险。
有鉴于此,本公开的实施例提供了一种缓存预热和数据处理的方法、服务装置、电子设备及介质,能够实现缓存中的预热数据和数据库中的数据源保持一致,同时基于消息队列的数据实时流转特性,传输较大容量的第一最新目标数据所需的消息队列的空间比起第一最新目标数据的容量而言很小,有效节省数据中转所需的存储空间;此外还提出了基于全量数据预热的方案,有助于提升缓存命中率;通过提出预热补偿方案,在同步进行数据处理和预热过程中,能够实现容错时间内缓存和数据库的数据源的一致性;通过提出预热重试方案,实现自动重试预热,在异常恢复之后促进缓存预热的及时恢复,使得异常产生的影响时间尽可能缩短。
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
图1示意性地示出了适用于本公开实施例的缓存预热和数据处理的方法的系统架构。
参照图1所示,适用于本公开实施例的缓存预热和数据处理的方法的系统架构100包括:请求端110、服务节点120和数据库130。
其中,请求端110和服务节点120之间、服务节点120和数据库130之间均通过网络进行通信。网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
请求端110可以是具有数据查询需求或数据处理请求的电子设备,例如请求端是安装有应用的终端设备,或者请求端是为应用提供服务支持的服务器等。上述应用诸如但不限于是:购物类应用、网页浏览器应用、视频播放类应用、支付类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。上述电子设备包括但不限于是:笔记本电脑、台式计算机、智能手机、平板电脑或应用服务器等。
上述数据库130可以是服务节点120自带的数据库,也可以是独立于服务节点120且能够被服务节点120所访问(具有读取权限,例如针对账单分期的查询请求)或具有读写权限(例如针对账单分期的签约、变更或关闭请求等)的数据库。在一些实施例中,上述数据库130可以是分布式数据库。
上述服务节点120用于为上述终端设备(请求端的一种示例)的应用提供数据查询或数据处理服务;或者为上述应用服务器(请求端的另一种示例)进一步提供数据查询或数据处理服务。在一些实施例中,上述服务节点可以是分布式服务集群中的服务节点。参照图1所示,上述服务节点120具有本地的缓存121,该缓存121的访问优先级高于数据库130的访问优先级。服务节点120可以执行本公开实施例提供的数据处理的方法,以处理请求端110发送的关于账单分期(例如支持账单自动分期付款的支付服务)的查询请求、签约请求、变更请求或签约关闭请求等。参照图1中单箭头对应的数据流所示,针对查询请求对应的查询指令,服务节点120优先从缓存121中查询数据,在缓存121中查询到数据的情况下,将查询结果发送给请求端110,如图1的单点划线箭头所示;在缓存121中查询不到数据的情况下,从数据库130中查询数据,在数据库130中查询到数据的情况下,将查询结果发送给请求端110,如图1中的双点划线箭头所示。参照图1中双箭头对应的数据流所示,针对签约请求、变更请求或签约关闭请求,服务节点120对数据库130进行对应的签约记录存储、签约记录变更和签约状态更新为关闭等操作,并将处理结果反馈给请求端110。其中,服务节点120的缓存121中预热的数据是采用本公开实施例提供的缓存预热的方法得到的。
上述服务节点120可以执行本公开实施例提供的缓存预热的方法,参照图1中的虚线箭头所示,服务节点120将数据库130中的数据预热加载至消息队列(MQ,Message Queue)140中,并从消息队列140中消费数据至该服务节点120的缓存121中,以便在服务节点120处理请求端的查询请求或访问请求时从缓存121中查询数据。上述消息队列140可以是服务节点120提供的一个数据结构,也可以是独立于服务节点120且能够被服务节点120所存取的一个数据结构。
应该理解,图1中的请求端、服务节点、数据库、消息队列的数目仅仅是示意性的。根据实现需要,可以具有任意数目的请求端、服务节点、数据库和消息队列。另外,上述系统架构100仅作为一种实施场景的示例,本公开实施例提供的缓存预热的方法和数据处理的方法也可以应用于其他未示例的数据查询和数据处理场景。
本公开的第一个示例性实施例提供了一种缓存预热的方法。本实施例提供的方法可以由图1示例的系统架构100中的一个或多个服务节点120来执行。
图2示意性地示出了根据本公开一实施例的缓存预热的方法的流程图。
参照图2所示,本公开实施例提供的缓存预热的方法,包括以下步骤:S210、S220、S230和S240。
在步骤S210,监听并获取消息队列中的预热消息体;上述预热消息体是由从数据库定期筛选出的第一最新目标数据生成的。
从上述消息队列中监听是否产生了预热消息体,在监听到消息队列中存放有预热消息体的情况下及时依序消费上述预热消息体,基于数据实时流转特性,传输较大容量的第一最新目标数据所需的消息队列的空间比起第一最新目标数据的容量而言很小,有效节省数据中转所需的存储空间。
上述数据库存储的数据可以按照生成时间或修改时间等最新操作时间的先后顺序来进行排序,针对同一个数据对象同时具有生成时间和修改时间的情况,将其修改时间(为最新操作时间)作为该数据对象用于排序的时间。
在一些实施例中,上述定期是指设定数据扫描周期,例如设定每隔10分钟扫描数据库来定期筛选。则针对扫描时间对应的当前时刻t1,第一最新目标数据是指当前时刻t1对数据库在筛选时段内(例如为t2(t2为t1的3小时之前的时刻)~t1这一时段)筛选出来的最新数据;由于数据库中存储有多个数据,这里的目标数据是指应用的请求场景下所需的数据,例如针对购物类应用的分期付款场景,对应的目标数据为用户对应的自动分期规则记录数据。针对其他场景,上述目标数据可以变化,例如针对电商的订单或物流场景,对应的目标数据为用户对应的订单记录数据或物流记录数据等。
其中,以上述定期对应的筛选时机作为时间终点(例如为上述当前时刻t1),从上述时间终点回溯预设时长(例如回溯3个小时)作为上述筛选时段。
例如,可以通过设置cron表达式来设置定期对应的数据扫描周期,cron表达式是一个具有时间含义的字符串,字符串以5~6个空格隔开,分为6~7个域,格式为X XXXXXX。其中X表示一个域的占位符。例如cron表达式为:0 15 10?**,表示每天上午10:15执行扫描任务。
最新的数据对应的筛选时段可以根据不同应用场景来进行定义,例如在一实施例中,将3小时以内(包含3小时)的数据定义为最新的数据,即作为增量数据;3小时以前(不包含3小时对应的时间点)的数据作为存量数据。
这里的最新的含义是动态变化的,针对每个定期的扫描时刻,例如为t1时刻、(t1+10分钟)时刻、(t1+20分钟)时刻等每个当前的扫描时刻而言,筛选时段也是对应变化的,例如针对t1+10分钟这一扫描时刻,第一最新目标数据是指在t3(t3=t2+10分钟)~t1+10分钟这一筛选时段筛选出来的目标数据;另外,随着数据库根据请求不断动态变化的情况,从数据库筛选出来的结果(第一最新目标数据)也是动态变化的,相应的,存放于消息队列的预热消息体也是动态变化的。
在一些实施例中,从数据库定期筛选出第一最新目标数据以及根据第一最新目标数据生成预热消息体并存储于消息队列的前置步骤可以是由预热调度模块来实现的。在一些实施例中,上述预热调度模块可以是位于服务节点120中的一个功能模块;在另一些实施例中,上述预热调度模块也可以是设置于第三方设备D1中的一个功能模块,该第三方设备D1能够与数据库和消息队列进行数据交互,且该第三方设备D1独立于上述服务节点120。
在步骤S220,确定缓存中是否存在与上述预热消息体对应的第一数据。
以分期付款场景为例,在一些实施例中,预热消息体携带的是当前扫描时刻(例如为t1+10分钟)下新签约用户X对应的数据(例如该用户X是在t1+9分钟的时候签约的)的情况下,服务节点120的缓存中不存在用户X对应的第一数据;在一些实施例中,预热消息体携带的是当前扫描时刻(例如为t1+10分钟)下已签约用户Y对应的数据的情况下,服务节点120的缓存中存在用户Y对应的第一数据。
在步骤S230,在存在上述第一数据的情况下,确定上述第一数据和上述预热消息体的信息是否一致。
第一数据和已签约用户Y对应的数据可能是一致的,也可能是不一致的,例如用户Y在t1时刻签约后,又在t1+5分钟的时刻对签约信息进行了变更;此时数据库中对应的已签约用户Y的第一数据是t1时刻的信息,属于变更前的信息,而在当前扫描时刻(例如为t1+10分钟)对应的预热消息体携带的是变更后的信息(t1+5分钟的时刻对应变更后的信息),产生了缓存中的第一数据与上述预热消息体不一致的情形。
在步骤S240,在上述第一数据与上述预热消息体的信息不一致的情况下,将上述预热消息体的信息设置为上述第一数据的替换值。
在缓存中的第一数据和对应的预热消息体的信息不一致的情况下,通过将预热消息体的信息设置为第一数据的替换值,实现缓存和数据库中的最新信息的自动同步,有效解决缓存的数据和数据库的数据不一致的问题。
在包含上述步骤S210~240的实施例中,通过利用从数据库定期筛选出第一最新目标数据生成预热消息体,该预热消息体携带的是数据库中在定期筛选时最新的目标数据,确保后续进行第一数据和预热消息体的信息之间的一致性校验的时候能够将最新的数据更新至缓存,实现缓存中的预热数据和数据源保持一致;另外,通过利用消息队列进行数据实时流转,将该预热消息体存储于消息队列中,从上述消息队列中监听是否产生了预热消息体,在监听到预热消息体的情况下及时消费上述预热消息体,基于数据实时流转特性,传输较大容量的第一最新目标数据所需的消息队列的空间比起第一最新目标数据的容量而言很小,有效节省数据中转所需的存储空间。
在一些实施例中,基于分布式服务集群中的多个服务节点来进行缓存预热时,可以通过多个服务节点从上述消息队列并发获取的方式来加快数据消费。在一些实施例中,多个服务节点与用户群组之间具有对应关系,每个服务节点可以根据用户标识的分组来从消息队列进行所负责群组的用户数据消费,以便在请求端发起请求的过程中响应对应群组内的用户数据查询,通过定向指定查询和匹配服务节点,有助于提升查询响应效率和查询命中率,避免随机分配服务节点查询导致的有些服务节点内缓存并未预热某些数据却被分配查询导致的查询失败的情况。在另一些实施例中,也可以将相同群组的用户数据划分至同一个消息队列,不同群组的用户数据划分至不同的消息队列,各个服务节点各自从对应的消息队列消费数据。
消息队列可以是普通队列或环形队列,例如消息队列共有9个存储位置,队列位置编号分别为0~8,目前有5条消息M1~M5,分别对应放置于消息队列的存储位置0~4中。3个服务节点J1~J3从消息队列并发消费消息,可以是各个服务节点读取固定存储位置的消息,或者服务节点和所要读取的存储位置之间的对应关系不固定,按照先后读取顺序依序进行读取。作为示例,服务节点J1消费0号位置的消息,服务节点J2消费1号位置的消息,服务节点J3消费2号位置的消息,由于消息队列中的数据随着消费过程而动态递补,并且遵循先进先出的原则,则并发消费的结果可以是:服务节点J1消费0号存储位置的消息M1,服务节点J2消费1号存储位置的消息M2,服务节点J3消费2号存储位置的消息M3,服务节点J1消费0号存储位置的消息M4,服务节点J2消费1号存储位置的消息M5。随着消息队列的消费过程的进行,消息队列中也会存入新的消息,并随着消息的消费过程而变化存储位置。
在一些实施例中,上述步骤S210中,上述第一最新目标数据包括:筛选时段内的用户状态为非注销状态、非冻结状态且经风控校验为非高风险类型的自动分期规则记录数据。相应的,筛选条件包括:用户状态为非注销状态and(表示逻辑与)非冻结状态and风控校验结果为非高风险类型。
在一些实施例中,上述筛选时段包括:第一筛选时段,上述第一筛选时段用于筛选增量数据。例如预热调度模块的第一调度模块用于筛选增量数据。作为示例,当前扫描时刻为t1,则第一筛选时段为t1-3小时~t1(例如取值包含区间的左端点和右端点)。
通过筛选增量数据,能够将增量数据从数据库预热至服务节点的缓存,确保同步到缓存中的数据和数据库中最新的增量数据是一致的。对于高并发访问(查询请求)场景而言,大多数情况下是新签约的用户或历史用户有最新操作的情形C1下发起查询请求,这些反映到数据库中是作为增量数据存在,因此通过基于增量数据筛选得到的第一最新目标数据来生成预热消息体,并根据该增量数据对应的预热消息体进行缓存的预热,能够覆盖大部分查询请求,将原先指向数据库的查询请求对应的大部分流量压力引流到缓存中并且能够大概率命中,有助于提升高并发请求下的数据响应及时性以及提升数据库的稳定性,避免高并发流量打向数据库导致的数据库宕机;此外,在处理付款分期对应的签约、变更或签约关闭等请求时访问数据库的过程和缓存预热的过程是同步的,提高应用系统的可用性并对应用系统的负载(比如处理请求量)无影响。
在另一些实施例中,上述筛选时段包括:第二筛选时段,上述第二筛选时段用于筛选增量数据和存量数据。上述存量数据是基于筛选时段内的存量数据,即该存量数据的筛选起始点可以进行设定。例如预热调度模块的第二调度模块用于筛选全量数据,该全量数据包含上述增量数据和存量数据。作为示例,存量数据对应的筛选时段为t1-7天~t1-3小时(例如取值包含区间左端点,不含区间右端点),第二筛选时段对应为:t1-7天~t1。
考虑到有些历史用户且近期并未进行签约更新的用户也可能在高并发场景下具有查询请求,这些用户对应在数据库中的数据为存量数据,在满足情形C1对应的用户查询请求的前提下,为了进一步满足这些存量数据对应的用户的快速查询需求,提升查询响应效率,通过同时筛选存量数据和增量数据,能够提升缓存命中率并满足各种用户的查询需求。此外,也可以设置筛选全量数据的时段,例如根据使用场景(例如为商品大促期间)和用户使用应用的用户行为来设置对应的时段,其他时段则对增量数据进行筛选。
根据本公开的实施例,上述步骤S220中,确定缓存中是否存在与上述预热消息体对应的第一数据,包括:将上述预热消息体转换为第一数据实体;上述第一数据实体携带有以下信息:第一用户标识、第一用户状态和第一自动分期付款信息;在上述缓存中查询是否存在以上述第一用户标识作为键的第一数据。
上述预热消息体是报文对应的字符串形式,需要转换为数据实体之后进行后续的查询和校验一致性操作。上述数据实体例如为java(一种编程语言)的数据类型中的类,可以描述为java类,就是具备某些共同特征的实体的集合,它是一种抽象的数据类型,是对具有相同特征实体的抽象。
上述第一自动分期付款信息包括:账单日、最后还款日、起分金额、分期期数和开通状态等。
上述步骤S230中,确定上述第一数据和上述预热消息体的信息是否一致,包括:确定上述第一数据与上述第一用户状态和上述第一自动分期付款信息是否一致;在上述第一数据与上述第一用户状态和上述第一自动分期付款信息中至少一项不一致的情况下,视为上述第一数据与上述预热消息体的信息不一致。
图3示意性地示出了根据本公开另一实施例的缓存预热的方法的流程图。
参照图3所示,缓存预热的方法除了包括上述步骤S210~S240之外,还包括以下步骤S310。
在步骤S310,在不存在上述第一数据的情况下,将上述预热消息体的信息存储至上述缓存中。
例如,预热消息体携带的是当前扫描时刻(例如为t1+10分钟)下新签约用户X对应的数据(该用户是在t1+9分钟的时候签约的)的情况下,服务节点120的缓存中不存在用户X对应的第一数据,则将该预热消息体携带的新签约用户X对应的数据存储至缓存中。
图4示意性地示出了根据本公开又一实施例的缓存预热的方法的流程图。
在研发中发现,如果缓存预热失败或者如果用户在缓存预热对应的定期扫描数据库的间隔时间内进行了数据变更操作,那么数据库中的数据源和预热后的缓存数据会存在不一致的情况,本公开的实施例针对该场景也提供了基于补偿消息体进行数据同步更新以保证预热的缓存数据和数据库的最新数据的一致性的预热补偿方案。
根据本公开的实施例,缓存预热的方法包括上述步骤S210~S240之外,还包括步骤:S410、S420、S430a、S430b和S440,为了简化示意,仅在图4中示意了步骤S410~S440。
上述步骤S410,监听并获取上述消息队列中的补偿消息体;上述补偿消息体是在上述定期的间隔时段内由从上述数据库中获取的第二最新目标数据生成的。
例如,上述定期对应于设定数据扫描周期,以设定每隔10分钟进行扫描为例,定期的当前时刻为t1,下一个扫描时刻为t1+10分钟,则上述定期的间隔时段是指在t1~t1+10分钟对应的时段内,上述补偿消息体的数据采集周期可以根据容错时间(缓存和数据库的数据不一致的允许时间)来进行设定,例如这里示例为10s,即在t1~t1+10分钟对应的时段内每隔10秒筛选数据库得到第二最新目标数据。
例如,上述第二最新目标数据包括:上述间隔时段内的用户状态为非注销状态、非冻结状态且经风控校验为非高风险类型的自动分期规则记录数据。在一些实施例中,上述第二最新目标数据和上述第一最新目标数据位于同一个数据表中。
在一些实施例中,上述补偿消息体和预热消息体按照产生时间的先后依序存放于同一个消息队列中。
在一些实施例中,在上述定期的间隔时段内由从上述数据库中定期获取第二最新目标数据以及根据第二最新目标数据生成补偿消息体并存储于消息队列的前置步骤可以是由补偿调度模块来实现的。在一些实施例中,上述补偿调度模块可以是位于服务节点120中的一个功能模块;在另一些实施例中,上述补偿调度模块也可以是设置于第三方设备D2中的一个功能模块,该第三方设备D2能够与数据库和消息队列进行数据交互,且该第三方设备D2独立于上述服务节点120。在一些实施例中,预热调度模块和补偿调度模块各自所在的第三方设备D1和D2可以是同一个设备或者是不同的设备。
上述步骤S420,确定上述缓存中是否存在与上述补偿消息体对应的第二数据。
以付款分期场景为例,在一些实施例中,补偿消息体携带的是当前扫描时刻(例如为t1+10分钟10秒)下新签约用户Z对应的数据(该用户是在t1+10分钟2秒的时候签约的)的情况下,则服务节点120的缓存中不存在用户Z对应的第二数据;在一些实施例中,补偿消息体携带的是当前扫描时刻(例如为t1+10分钟10秒)下已签约用户Y对应的最新数据的情况下,服务节点120的缓存中预先已经进行过预热并存在用户Y对应的第二数据。
根据本公开的实施例,上述步骤S420中,确定上述缓存中是否存在与上述补偿消息体对应的第二数据,包括:将上述补偿消息体转换为第二数据实体;上述第二数据实体携带有以下信息:第二用户标识、第二用户状态和第二自动分期付款信息;在上述缓存中查询是否存在以上述第二用户标识作为键的第二数据。
上述步骤S430a,在存在上述第二数据的情况下,确定上述第二数据和上述补偿消息体的信息是否一致。
第二数据和已签约用户Y对应的最新数据可能是一致的,也可能是不一致的,例如用户Y在t1时刻签约后,在t1时刻缓存预热的时候将签约信息写入至缓存;在t1+10分钟缓存预热的时候维持该签约信息不变;假设用户在t1+10分钟5秒的时刻对签约信息进行了变更;此时数据库中对应的已签约用户Y的第一数据是t1+10分钟时刻的信息,属于变更前的信息,而在当前扫描时刻(例如为t1+10分钟5秒的时刻)对应的补偿消息体携带的是变更后的信息,产生了缓存中的第二数据与上述补偿消息体不一致的情形。
根据本公开的实施例,上述步骤S430a中,确定上述第二数据和上述补偿消息体的信息是否一致,包括:确定上述第二数据与上述第二用户状态和上述第二自动分期付款信息是否一致;在上述第二数据与上述第二用户状态和上述第二自动分期付款信息中至少一项不一致的情况下,视为上述第二数据与上述补偿消息体的信息不一致。
在一些实施例中,上述第二自动分期付款信息包括:账单日、最后还款日、起分金额、分期期数和开通状态等。
上述步骤S440,在上述第二数据与上述补偿消息体的信息不一致的情况下,将上述补偿消息体的信息设置为上述第二数据的替换值。
在上述步骤S430b,在不存在上述第二数据的情况下,将上述补偿消息体的信息存储至上述缓存中。
在包含步骤S210~S240和S410、S420、S430a、S430b和S440的实施例中,补偿消息体和预热消息体对应的筛选时段不同,如此在服务节点进行数据处理的同时,基于预热消息体能够保证定期对应的扫描时刻下进行缓存预热的数据和数据库的最新目标数据是一致的,基于补偿消息体能够在定期对应的间隔时段内进一步对发生数据库的数据源发生变更的情况同步至缓存中,实现在容错时间尺度的全时段范围一致性。
图5示意性地示出了根据本公开再一实施例的缓存预热的方法的流程图。
在研发中发现,如果缓存预热由于网络原因导致失败或者由于设备原因导致预热失败,也会导致数据库中的数据和缓存中的数据无法及时同步产生的不一致的情况,此外,如果没有对应的重试机制,可能还会导致消息队列的阻塞以及数据库的宕机等问题。有鉴于此,本公开实施例中通过提出针对消息队列进行监听和自动重试的方案,不仅能够检测到问题并识别问题类型,还能够针对不同的问题类型进行对应的处理,实现自动重试预热,在异常恢复之后促进缓存预热的及时恢复,使得异常产生的影响时间尽可能缩短,下面参照图5和图6来详细介绍对应的实施例。
根据本公开的实施例,缓存预热的方法除了包括上述步骤S210~S240之外,或者包括上述步骤S210~S240和S310之外,或者包括上述步骤S210~S240和S410~S440之外,还包括以下步骤:S510、S520、S531和S532。为了简化示意,在图5中仅示意了步骤S510、S520、S531和S532。
在步骤S510,检测针对上述消息队列是否发生数据消费异常。
例如,监听到消息队列中在设定时长内的数据数量超过第一设定阈值,则视为发生数据消费异常。即,数据积压程度超过设定程度的情况下,视为发生消费异常。
在步骤S520,在检测到上述数据消费异常的情况下,识别消费异常类型。
在一些实施例中,通过校验消息队列的消费对象(例如为服务节点中的第一模块)和消息队列之间的通信状态是否正常,确定消费异常类型是否为网络异常。通过校验消息队列所处的设备(可以是服务节点或者为第三方设备)和消息队列的消费对象所处的设备(例如为服务节点)与消息队列关联的功能模块的性能是否正常,确定消费异常类型是否为模块异常。
在步骤S531,在上述消费异常类型为网络异常的情况下,监测网络状态并在网络状态恢复正常的情况下进行第一消费重试操作,在上述第一消费重试操作中,从重试队列和上述消息队列同步进行数据消费。
其中上述重试队列中的数据是从上述消息队列转移的由于网络异常导致消费失败的待消费目标数据。
例如,消息队列中的某个消息Mx正在被服务节点中的第一模块(消费对象的一种示例)读取,结果中途由于消息队列和第一模块之间的网络异常,导致消费失败(即读取失败),则会将消息队列中的上述消息Mx转移至重试队列中,消息队列中位于该消息Mx下一个位置的数据递补至消息Mx的原先位置。这样一来,对于按照顺序进行消费的场景而言,例如针对一个服务节点按照先后顺序依次消费消息队列中的数据的场景,能够有效避免消息Mx存放于消息队列导致对后续消息消费的阻塞,同时在后续进行消费重试的时候通过同步消费上述重试队列和上述消息队列,有效提升数据消费效率以及数据中转效率,有助于提升缓存预热效率和数据处理时效性。
对于并发消费的场景而言,针对多个服务节点按照固定存储位置消费消息队列的场景,通过将待消费目标数据转移至重试队列,能够降低待消费数据存放于消息队列导致这些待消费数据所在存储位置不能及时更新导致的存储资源占用,其他位置的数据由于还有对应的其他服务节点(如果正常的话)进行动态消费,不会受到影响,同时在后续进行消费重试的时候通过同步消费上述重试队列和上述消息队列,有效提升数据消费效率以及数据中转效率,有助于提升缓存预热效率和数据处理时效性。针对多个服务节点按照随机存储位置消费消息队列的场景,如果其中一个服务节点发生网络异常,通过将待消费数据转移至重试队列,能够使得其他服务节点正常消费数据队列中的其他数据,并保证发生网络异常的服务节点在网络状态恢复正常之后从重试队列中重试进行对应数据的消费。
在步骤S532,在上述异常类型为模块异常的情况下,监测发生异常的第一模块的状态并在状态恢复正常的情况下进行第二消费重试操作,在上述第二消费重试操作中,基于上述第一模块,从上述消息队列消费数据至缓存。
在一些实施例中,上述第一模块可以是上述服务节点120中用于进行消息队列的监听和数据消费的功能模块。
在服务节点的第一模块发生异常的情况下,需要等待第一模块恢复正常之后再从数据队列进行数据消费,这种情况下消息队列中会保存所有需要的数据避免数据丢失,不过这种情况可能会产生一些积压数据,本实施例中通过预留存储空间的余量来确保消息队列能够容纳一定程度的积压数据。在包含多个服务节点来进行消息队列消费的场景中,其中一个服务节点的第一模块发生异常的情况下,可以将该服务节点对应的用户群组暂时性的转移到其他正常的服务节点进行负责,由其他服务节点消费消息队列来实现缓存预热和数据处理。
图6示意性地示出了根据本公开又另一实施例的缓存预热的方法的流程图。
根据本公开的实施例,在上述各个实施例的基础上,缓存预热的方法除了包括上述步骤S210~S240之外,或者包括上述步骤S210~S240和S310之外,或者包括上述步骤S210~S240和S410~S440之外,或者包括上述步骤S210~S240、S410~S440和S510~S532之外,还包括以下步骤:S610、S620、S631和S632。为了简化示意,在图6中仅示意了步骤S610、S620、S631和S632。
在步骤S610,检测针对上述消息队列是否发生数据产生异常。
例如,监听到消息队列在设定时长内的消息数量低于第二设定阈值,则视为发生数据产生异常。上述第二设定阈值小于上述第一设定阈值。将消息队列的数据产生活跃程度明显低于常规情况的状态视为数据产生异常。
在步骤S620,在检测到上述数据产生异常的情况下,识别产生异常类型。
在一些实施例中,通过校验消息队列的生成对象(例如为服务节点中的第二模块)和消息队列之间的通信状态是否正常,确定产生异常类型是否为网络异常。通过校验消息队列所处的设备(可以是服务节点或者为第三方设备)和消息队列的生成对象所处的设备(例如为服务节点)与消息队列关联的功能模块的性能是否正常,确定产生异常类型是否为模块异常。
在步骤S631,在上述产生异常类型为网络异常的情况下,监测网络状态并在网络状态恢复正常的情况下进行第一产生重试操作,在上述第一产生重试操作中,将第一待同步预热消息体同步至上述消息队列中。
其中上述第一待同步预热消息体是由于网络异常导致尚未在上述消息队列同步的预热消息体。
在步骤S632,在上述产生异常类型为模块异常的情况下,监测发生异常的第二模块的状态并在状态恢复正常的情况下进行第二产生重试操作,在上述第二产生重试操作中,基于上述第二模块对待处理的第一最新目标数据进行处理,生成第二待同步预热消息体,并将上述第二待同步预热消息体同步至上述消息队列。
其中上述第二待同步预热消息体是由于模块异常导致尚未在上述消息队列同步的预热消息体。在一些实施例中,第二模块可以是上述预热调度模块。
在包含上述步骤S510~S532、步骤S610~S632的至少一组的实施例中,能够检测到问题并识别问题类型,还能够针对不同的问题类型进行对应的处理,实现自动重试预热,在异常恢复之后促进缓存预热的及时恢复,使得异常产生的影响时间尽可能缩短。
本公开的第二个示例性实施例提供了一种数据处理的方法。本实施例的方法可以由图1示例的系统架构100中的服务节点120来执行。
图7示意性地示出了根据本公开一实施例的数据处理的方法的流程图。
参照图7所示,本公开实施例提供的数据处理的方法,包括以下步骤:S710、S720、S730和S740a。
在步骤S710,接收请求端发起的针对目标数据对象的操作指令,上述操作指令包括以下至少一种指令:新增指令、查询指令、变更指令。上述变更指令包括内容变更和状态变更至少一种。在另一些实施例中,上述指令还包括删除指令。
参照图1所示,在一些实施例中,请求端发起的请求为针对账单分期记录表的签约、变更或签约关闭请求,上述请求携带有用户标识等。上述目标数据对象包括:用户标识所在的账单分期记录表,上述操作指令包括以下至少一种指令:签约指令、查询指令、签约信息变更指令、签约状态关闭指令。上述新增指令包括上述签约指令,上述变更指令包括:签约信息变更指令、签约状态变更指令,上述签约状态变更指令包括:签约关闭指令。
在步骤S720,根据上述新增指令、变更指令的至少一种,在数据库中对上述目标数据对象对应的目标信息对应进行存储、变更的至少一种。上述目标对象对应的目标信息是指上述账单分期记录表中用户标识对应的自动分期规则记录数据,例如包含:用户状态(诸如正常状态、注销状态、冻结状态等)和自动分期付款信息,包括:账单日、最后还款日、起分金额、分期期数和开通状态(诸如已开通、未开通、开通后关闭等状态)等。
在步骤S730,根据上述查询指令,从缓存中查询是否存在与上述目标数据对象对应的目标信息。
上述缓存内的信息采用本公开实施例提供的缓存预热的方法进行预热得到。
在步骤S740a,在上述缓存中存在上述目标信息的情况下,将上述目标信息发送给上述请求端。
步骤S710~S720的具体细节还可以参照图1中双箭头所示的数据流和前面关于系统架构100的详细描述,步骤S730~S740a的实施过程可以参照图1中单点划线示意的数据流和第一个实施例的内容进行理解,这里不再赘述。
图8示意性地示出了根据本公开另一实施例的数据处理的方法的流程图。
根据本公开的实施例,上述数据处理的方法除了包括步骤S710~S740a之外,还包括以下步骤:S740b、S750a和S750b,为了简化示意,在图8中仅示意了步骤S730、S740a、S740b、S750a和S750b。
在步骤S740b,在上述缓存中不存在上述目标信息的情况下,从上述数据库中查询是否存在上述目标信息。
在步骤S750a,在上述数据库中存在上述目标信息的情况下,将上述目标信息发给给上述请求端,并存储至上述缓存中。
在步骤S750b,在上述数据库中不存在上述目标信息的情况,将上述目标数据对象对应的用户标识和未签约状态下的记录信息存储至上述缓存。上述未签约状态用于表示上述用户标识对应的用户并未参与上述目标数据对象对应的业务。
在下一次接收到针对上述用户标识的查询指令的情况下,对应在步骤S730中,根据上述缓存中存储的上述记录信息来反馈查询结果。
在没有签约的用户查询的时候,对应的用户标识和默认的记录信息(这里是没有签约状态下的信息)存储至缓存;下次这个用户再次来查询,从缓存里面查看到该用户没有签约的状态,无需再访问数据库,该方式能够使得缓存有效分担数据库中不存在签约状态的用户的查询请求流量。
本公开的第三个示例性实施例提供了一种服务装置。本实施例的服务装置可以是服务集群中的服务节点。
图9示意性地示出了根据本公开一实施例的服务装置的结构框图。
参照图9所示,本公开实施例提供的服务装置900包括:数据监听模块901、数据匹配模块902、一致性校验模块903和赋值模块904。
上述数据监听模块901用于监听并获取消息队列中的预热消息体;上述预热消息体是由从数据库定期筛选出的第一最新目标数据生成的。
根据本公开的实施例,上述第一最新目标数据包括:筛选时段内的用户状态为非注销状态、非冻结状态且经风控校验为非高风险类型的自动分期规则记录数据;其中,以上述定期对应的筛选时机作为时间终点,从上述时间终点回溯预设时长作为上述筛选时段;其中,上述筛选时段包括:第一筛选时段,上述第一筛选时段用于筛选增量数据;或者,第二筛选时段,上述第二筛选时段用于筛选增量数据和存量数据。
上述数据匹配模块902用于确定缓存中是否存在与上述预热消息体对应的第一数据。
上述一致性校验模块903用于在存在上述第一数据的情况下,确定上述第一数据和上述预热消息体的信息是否一致。
上述赋值模块904用于在上述第一数据与上述预热消息体的信息不一致的情况下,将上述预热消息体的信息设置为上述第一数据的替换值。
在一些实施例中,上述赋值模块904还用于在不存在上述第一数据的情况下,将上述预热消息体的信息存储至上述缓存中。
在一些实施例中,上述数据监听模块901还用于监听并获取上述消息队列中的补偿消息体;上述补偿消息体是在上述定期的间隔时段内由从上述数据库中获取的第二最新目标数据生成的。
根据本公开的实施例,上述第二最新目标数据包括:上述间隔时段内的用户状态为非注销状态、非冻结状态且经风控校验为非高风险类型的自动分期规则记录数据。
在一些实施例中,上述数据匹配模块902还用于确定上述缓存中是否存在与上述补偿消息体对应的第二数据。
在一些实施例中,上述一致性校验模块903还用于在存在上述第二数据的情况下,确定上述第二数据和上述补偿消息体的信息是否一致。
在一些实施例中,上述赋值模块904还用于在上述第二数据与上述补偿消息体的信息不一致的情况下,将上述补偿消息体的信息设置为上述第二数据的替换值;在不存在上述第二数据的情况下,将上述补偿消息体的信息存储至上述缓存中。
根据本公开的实施例,上述服务装置900还包括:异常检测模块、异常类型确定模块和重试模块。
在一些实施例中,上述异常检测模块用于检测针对上述消息队列是否发生数据消费异常。
在一些实施例中,上述异常类型确定模块用于在检测到上述数据消费异常的情况下,识别消费异常类型。
在一些实施例中,上述重试模块用于:在上述消费异常类型为网络异常的情况下,监测网络状态并在网络状态恢复正常的情况下进行第一消费重试操作,在上述第一消费重试操作中,从重试队列和上述消息队列同步进行数据消费;其中上述重试队列中的数据是从上述消息队列转移的由于网络异常导致消费失败的待消费目标数据;在上述异常类型为模块异常的情况下,监测发生异常的第一模块的状态并在状态恢复正常的情况下进行第二消费重试操作,在上述第二消费重试操作中,基于上述第一模块,从上述消息队列消费数据至缓存。
在一些实施例中,上述异常检测模块还用于检测针对上述消息队列是否发生数据产生异常。
在一些实施例中,上述异常类型确定模块还用于在检测到上述数据产生异常的情况下,识别产生异常类型。
在一些实施例中,上述重试模块还用于:在上述产生异常类型为网络异常的情况下,监测网络状态并在网络状态恢复正常的情况下进行第一产生重试操作,在上述第一产生重试操作中,将第一待同步预热消息体同步至上述消息队列中;其中上述第一待同步预热消息体是由于网络异常导致尚未在上述消息队列同步的预热消息体;在上述产生异常类型为模块异常的情况下,监测发生异常的第二模块的状态并在状态恢复正常的情况下进行第二产生重试操作,在上述第二产生重试操作中,基于上述第二模块对待处理的第一最新目标数据进行处理,生成第二待同步预热消息体,并将上述第二待同步预热消息体同步至上述消息队列。
图10示意性地示出了根据本公开另一实施例的服务装置的结构框图。
在一些实施例中,在上述各个实施例的基础上,上述服务装置还可以进一步包括:请求指令接收模块、查询模块、数据发送模块和数据处理模块。
例如,参照图10所示,服务装置1000包括:数据监听模块1001、数据匹配模块1002、一致性校验模块1003、赋值模块1004、请求指令接收模块1005、查询模块1006、数据发送模块1007和数据处理模块1008。
上述数据监听模块1001、数据匹配模块1002、一致性校验模块1003、赋值模块1004可以参照前面关于数据监听模块901、数据匹配模块902、一致性校验模块903、赋值模块904的详细描述。
上述请求指令接收模块1005用于接收请求端发起的针对目标数据对象的操作指令,上述操作指令包括以下至少一种指令:新增指令、查询指令、变更指令;上述变更指令包括内容变更和状态变更至少一种。
上述查询模块1006用于根据上述查询指令,从上述缓存中查询是否存在与上述目标数据对象对应的目标信息。
上述数据发送模块1007用于在上述缓存中存在上述目标信息的情况下,将上述目标信息发送给上述请求端。
上述数据处理模块1008用于根据上述签约指令、上述变更指令的至少一种,在数据库中对上述目标数据对象对应的目标信息对应进行存储、变更的至少一种。
上述各个模块的具体实施细节可以参照第一个实施例的详细描述,第一个实施例的全部内容也可以并入本实施例中。
上述装置900或装置1000所包含的功能模块中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。上述装置900或装置1000所包含的功能模块中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,上述装置900或装置1000所包含的功能模块中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
本公开的第四个示例性实施例提供了一种电子设备。
图11示意性示出了本公开实施例提供的电子设备的结构框图。
参照图11所示,本公开实施例提供的电子设备1100包括处理器1101、通信接口1102、存储器1103和通信总线1104,其中,处理器1101、通信接口1102和存储器1103通过通信总线1104完成相互间的通信;存储器1103,用于存放计算机程序;处理器1101,用于执行存储器上所存放的程序时,实现如上所述的缓存预热的方法或数据处理的方法。
本公开的第五个示例性实施例还提供了一种计算机可读存储介质。上述计算机可读存储介质上存储有计算机程序,上述计算机程序被处理器执行时实现如上所述的缓存预热的方法或数据处理的方法。
该计算机可读存储介质可以是上述实施例中描述的设备或装置中所包含的;也可以是单独存在,而未装配入该设备或装置中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
需要说明的是,本公开实施例提供的技术方案中,所涉及的用户个人信息的采集、收集、更新、分析、处理、使用、传输、存储等方面,均符合相关法律法规的规定,被用于合法的用途,且不违背公序良俗。对用户个人信息采取必要措施,防止对用户个人信息数据的非法访问,维护用户个人信息安全、网络安全和国家安全。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (15)
1.一种缓存预热的方法,其特征在于,包括:
监听并获取消息队列中的预热消息体;所述预热消息体是由从数据库定期筛选出的第一最新目标数据生成的;
确定缓存中是否存在与所述预热消息体对应的第一数据;
在存在所述第一数据的情况下,确定所述第一数据和所述预热消息体的信息是否一致;
在所述第一数据与所述预热消息体的信息不一致的情况下,将所述预热消息体的信息设置为所述第一数据的替换值。
2.根据权利要求1所述的方法,其特征在于,
所述确定缓存中是否存在与所述预热消息体对应的第一数据,包括:将所述预热消息体转换为第一数据实体;所述第一数据实体携带有以下信息:第一用户标识、第一用户状态和第一自动分期付款信息;在所述缓存中查询是否存在以所述第一用户标识作为键的第一数据;
确定所述第一数据和所述预热消息体的信息是否一致,包括:确定所述第一数据与所述第一用户状态和所述第一自动分期付款信息是否一致;在所述第一数据与所述第一用户状态和所述第一自动分期付款信息中至少一项不一致的情况下,视为所述第一数据与所述预热消息体的信息不一致。
3.根据权利要求1所述的方法,其特征在于,所述第一最新目标数据包括:筛选时段内的用户状态为非注销状态、非冻结状态且经风控校验为非高风险类型的自动分期规则记录数据;其中,以所述定期对应的筛选时机作为时间终点,从所述时间终点回溯预设时长作为所述筛选时段;
其中,所述筛选时段包括:
第一筛选时段,所述第一筛选时段用于筛选增量数据;或者,
第二筛选时段,所述第二筛选时段用于筛选增量数据和存量数据。
4.根据权利要求1所述的方法,其特征在于,还包括:
监听并获取所述消息队列中的补偿消息体;所述补偿消息体是在所述定期的间隔时段内由从所述数据库中获取的第二最新目标数据生成的;
确定所述缓存中是否存在与所述补偿消息体对应的第二数据;
在存在所述第二数据的情况下,确定所述第二数据和所述补偿消息体的信息是否一致;
在所述第二数据与所述补偿消息体的信息不一致的情况下,将所述补偿消息体的信息设置为所述第二数据的替换值;
在不存在所述第二数据的情况下,将所述补偿消息体的信息存储至所述缓存中。
5.根据权利要求4所述的方法,其特征在于,
确定所述缓存中是否存在与所述补偿消息体对应的第二数据,包括:将所述补偿消息体转换为第二数据实体;所述第二数据实体携带有以下信息:第二用户标识、第二用户状态和第二自动分期付款信息;在所述缓存中查询是否存在以所述第二用户标识作为键的第二数据;
确定所述第二数据和所述补偿消息体的信息是否一致,包括:确定所述第二数据与所述第二用户状态和所述第二自动分期付款信息是否一致;在所述第二数据与所述第二用户状态和所述第二自动分期付款信息中至少一项不一致的情况下,视为所述第二数据与所述补偿消息体的信息不一致。
6.根据权利要求4所述的方法,其特征在于,所述第二最新目标数据包括:所述间隔时段内的用户状态为非注销状态、非冻结状态且经风控校验为非高风险类型的自动分期规则记录数据。
7.根据权利要求1所述的方法,其特征在于,还包括:
在不存在所述第一数据的情况下,将所述预热消息体的信息存储至所述缓存中。
8.根据权利要求1-7中任一项所述的方法,其特征在于,还包括:
检测针对所述消息队列是否发生数据消费异常;
在检测到所述数据消费异常的情况下,识别消费异常类型;
在所述消费异常类型为网络异常的情况下,监测网络状态并在网络状态恢复正常的情况下进行第一消费重试操作,在所述第一消费重试操作中,从重试队列和所述消息队列同步进行数据消费;其中所述重试队列中的数据是从所述消息队列转移的由于网络异常导致消费失败的待消费目标数据;
在所述消费异常类型为模块异常的情况下,监测发生异常的第一模块的状态并在状态恢复正常的情况下进行第二消费重试操作,在所述第二消费重试操作中,基于所述第一模块,从所述消息队列消费数据至缓存。
9.根据权利要求1-7中任一项所述的方法,其特征在于,还包括:
检测针对所述消息队列是否发生数据产生异常;
在检测到所述数据产生异常的情况下,识别产生异常类型;
在所述产生异常类型为网络异常的情况下,监测网络状态并在网络状态恢复正常的情况下进行第一产生重试操作,在所述第一产生重试操作中,将第一待同步预热消息体同步至所述消息队列中;其中所述第一待同步预热消息体是由于网络异常导致尚未在所述消息队列同步的预热消息体;
在所述产生异常类型为模块异常的情况下,监测发生异常的第二模块的状态并在状态恢复正常的情况下进行第二产生重试操作,在所述第二产生重试操作中,基于所述第二模块对待处理的第一最新目标数据进行处理,生成第二待同步预热消息体,并将所述第二待同步预热消息体同步至所述消息队列。
10.一种数据处理的方法,其特征在于,包括:
接收请求端发起的针对目标数据对象的操作指令,所述操作指令包括以下至少一种指令:新增指令、查询指令、变更指令,所述变更指令包括内容变更和状态变更至少一种;
根据所述签约指令、所述变更指令的至少一种,在数据库中对所述目标数据对象对应的目标信息对应进行存储、变更的至少一种;
根据所述查询指令,从缓存中查询是否存在与所述目标数据对象对应的目标信息;所述缓存内的信息采用权利要求1-9中任一项所述的方法进行预热得到;
在所述缓存中存在所述目标信息的情况下,将所述目标信息发送给所述请求端。
11.根据权利要求10所述的方法,其特征在于,还包括:
在所述缓存中不存在所述目标信息的情况下,从所述数据库中查询是否存在所述目标信息;
在所述数据库中存在所述目标信息的情况下,将所述目标信息发给给所述请求端,并存储至所述缓存中;
在所述数据库中不存在所述目标信息的情况,将所述目标数据对象对应的用户标识和未签约状态下的记录信息存储至所述缓存;所述未签约状态用于表示所述用户标识对应的用户并未参与所述目标数据对象对应的业务;
其中,在下一次接收到针对所述用户标识的查询指令的情况下,根据所述缓存中存储的所述记录信息来反馈查询结果。
12.一种服务装置,其特征在于,包括:
数据监听模块,用于监听并获取消息队列中的预热消息体;所述预热消息体是由从数据库定期筛选出的第一最新目标数据生成的;
数据匹配模块,用于确定缓存中是否存在与所述预热消息体对应的第一数据;
一致性校验模块,用于在存在所述第一数据的情况下,确定所述第一数据和所述预热消息体的信息是否一致;
赋值模块,用于在所述第一数据与所述预热消息体的信息不一致的情况下,将所述预热消息体的信息设置为所述第一数据的替换值。
13.根据权利要求12所述的服务装置,其特征在于,还包括:
请求指令接收模块,用于接收请求端发起的针对目标数据对象的操作指令,所述操作指令包括以下至少一种指令:新增指令、查询指令、变更指令,所述变更指令包括内容变更和状态变更至少一种;
查询模块,用于根据所述查询指令,从所述缓存中查询是否存在与所述目标数据对象对应的目标信息;
数据发送模块,用于在所述缓存中存在所述目标信息的情况下,将所述目标信息发送给所述请求端;
数据处理模块,用于根据所述签约指令、所述变更指令的至少一种,在数据库中对所述目标数据对象对应的目标信息对应进行存储、变更的至少一种。
14.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-11中任一项所述的方法。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310628153.XA CN116628033A (zh) | 2023-05-30 | 2023-05-30 | 缓存预热和数据处理的方法、服务装置、电子设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310628153.XA CN116628033A (zh) | 2023-05-30 | 2023-05-30 | 缓存预热和数据处理的方法、服务装置、电子设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116628033A true CN116628033A (zh) | 2023-08-22 |
Family
ID=87636390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310628153.XA Pending CN116628033A (zh) | 2023-05-30 | 2023-05-30 | 缓存预热和数据处理的方法、服务装置、电子设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116628033A (zh) |
-
2023
- 2023-05-30 CN CN202310628153.XA patent/CN116628033A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2019227689A1 (zh) | 数据监控方法、装置、计算机设备及存储介质 | |
US20190042659A1 (en) | Data writing and reading and apparatus and cloud storage system | |
CN113254466B (zh) | 一种数据处理方法、装置、电子设备和存储介质 | |
CN111291000B (zh) | 基于区块链的文件获取方法、设备及存储介质 | |
CN110865997A (zh) | 一种电力系统设备隐患在线识别方法及其应用平台 | |
US20110218971A1 (en) | System, Method And Computer Program Product For Managing Caches | |
CN110019312B (zh) | 读写数据分离调度方法、装置、设备及介质 | |
US10425273B2 (en) | Data processing system and data processing method | |
CN112965879A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN112506870A (zh) | 数据仓库增量更新方法、装置及计算机设备 | |
CN113660538B (zh) | 直播推流回源方法及系统 | |
CN111782456A (zh) | 异常检测方法、装置、计算机设备和存储介质 | |
CN106815223B (zh) | 一种海量图片管理方法和装置 | |
US11030024B2 (en) | Assigning a severity level to a computing service using tenant telemetry data | |
CN115757552B (zh) | 基于分布式微服务的银行历史数据管理系统 | |
CN116628033A (zh) | 缓存预热和数据处理的方法、服务装置、电子设备及介质 | |
CN116151631A (zh) | 一种业务决策处理系统、一种业务决策处理方法和装置 | |
CN116107801A (zh) | 交易处理方法及相关产品 | |
CN110888847B (zh) | 一种回收站系统及文件回收方法 | |
CN106888244B (zh) | 一种业务处理方法及装置 | |
US7058773B1 (en) | System and method for managing data in a distributed system | |
CN114553727A (zh) | 一种基于内容分发网络的数据处理方法及装置 | |
CN114356211A (zh) | 一种存储空间的处理方法、装置、电子设备及存储介质 | |
CN116542668A (zh) | 一种基于区块链的数据处理方法、设备及可读存储介质 | |
CN112860292A (zh) | 一种基于应用的配置管理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |