用户积分处理方法、装置、设备、介质和程序产品与流程

文档序号:29418819发布日期:2022-03-26 13:49阅读:134来源:国知局
用户积分处理方法、装置、设备、介质和程序产品与流程

1.本公开涉及数据处理领域,更具体地,涉及一种用户积分处理方法、装置、设备、介质和程序产品。


背景技术:

2.一些公司可以根据用户行为进行积分累计,令用户可以通过累计积分作为兑换载体进行权益兑换,从而达到回馈用户和增强用户粘性的目的。
3.在进行用户积分计算的过程中,由于用户行为场景较为复杂,且积分是由基于不同的用户行为衍生出来的。因此,积分处理端可能会处于该公司数据链末端,例如将积分计算过程交由数据链前端处理,仅根据计算好的积分结果对用户积分进行更新,其中,积分处理端还可能接收多个渠道的积分结果,数据格式多种多样。
4.因此,相关技术中由于数据链前后端的衔接,导致积分处理过程中数据格式多样、作业任务相互依赖、共性逻辑成本较高,因此,如何提高积分处理过程中的灵活性、可扩展性以及积分处理速度是当前亟待解决的问题。


技术实现要素:

5.鉴于上述问题,本公开提供了一种可以提高积分处理过程中的灵活性、可扩展性以及积分处理速度的用户积分处理方法、装置、设备、介质和程序产品。
6.本公开实施例的一个方面,提供了一种用户积分处理方法,包括:基于静态数据计算获得第一积分结果,其中,所述静态数据包括根据用户的第一行为产生的第一用户数据,所述第一行为用于间接获得用户积分;基于实时数据计算获得第二积分结果,其中,所述实时数据包括根据所述用户的第二行为产生的第二用户数据,所述第二行为用于直接获得用户积分;分别处理所述第一积分结果和所述第二积分结果来获得n条积分消息,并将所述n条积分消息写入消息队列,其中,n为大于或等于2的整数;从所述消息队列中消费所述n条积分消息来计算获得所述用户积分。
7.根据本公开的实施例,所述静态数据包括来自s个渠道的积分文件,所述基于静态数据计算获得第一积分结果包括:获取所述s个渠道的积分文件,其中,所述s个渠道包括响应于所述第一行为和/或所述第二行为,向用户提供服务的渠道,所述积分文件中包括所述第一用户数据,其中,s为大于或等于1的整数;基于所述s个渠道中每个渠道关联的预处理规则,对所述每个渠道的积分文件进行预处理。
8.根据本公开的实施例,在所述对所述每个渠道的积分文件进行预处理之后,获得所述每个渠道的目标表,所述目标表包括m条流水记录,所述方法还包括:对所述m条流水记录中每条流水记录匹配对应的积分计算规则,所述m条流水记录包括所述第一用户数据,其中,m为大于或等于1的整数;基于所述积分计算规则对所述每条流水记录中的第一用户数据进行计算,来获得所述第一积分结果。
9.根据本公开的实施例,所述实时数据包括来自s个渠道的实时请求报文,所述基于
实时数据计算获得第二积分结果包括:根据所述实时请求报文所属的渠道,调用对应的第一联机服务,其中,所述实时请求报文包括所述第二用户数据;基于所述第一联机服务对所述第二用户数据进行积分计算,来获得所述第二积分结果。
10.根据本公开的实施例,所述从所述消息队列中消费所述n条积分消息来计算获得所述用户积分包括:基于所述n条积分消息中每条积分消息调用第二联机服务;根据所述积分消息,利用所述第二联机服务来更新用户积分账户的所述用户积分。
11.根据本公开的实施例,所述基于所述n条积分消息中每条积分消息调用第二联机服务包括:将所述每条积分消息转换为对应的联机请求;基于所述联机请求调用所述第二联机服务,以使得所述第二联机服务解析所述联机请求来更新所述用户积分账户。
12.根据本公开的实施例,所述方法还包括:在索引库中写入处理记录,其中,所述处理记录包括从所述消息队列中消费积分消息的记录;在将所述每条积分消息转换为对应的联机请求之前,所述方法还包括:通过所述索引库查询所述每条积分消息的处理记录。
13.根据本公开的实施例,所述处理记录包括处理状态,在所述第二联机服务解析所述联机请求更新所述用户积分账户出现异常的情况下,所述方法还包括:在所述索引库中修改所述联机请求对应的积分消息的处理状态,其中,包括:将所述处理状态修改为异常状态。
14.本公开实施例的另一方面提供了一种用户积分处理装置,包括:静态数据计算模块、实时数据计算模块、积分结果转换模块和积分消息消费模块。静态数据计算模块用于基于静态数据计算获得第一积分结果,其中,所述静态数据包括根据用户的第一行为产生的第一用户数据,所述第一行为用于间接获得用户积分;实时数据计算模块用于基于实时数据计算获得第二积分结果,其中,所述实时数据包括根据所述用户的第二行为产生的第二用户数据,所述第二行为用于直接获得用户积分;积分结果转换模块用于分别处理所述第一积分结果和所述第二积分结果来获得n条积分消息,并将所述n条积分消息写入消息队列,其中,n为大于或等于2的整数;积分消息消费模块用于从所述消息队列中消费所述n条积分消息来计算获得所述用户积分。
15.本公开实施例的另一方面提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行如上所述的方法。
16.本公开实施例的另一方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行如上所述的方法。
17.本公开实施例的另一方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上所述的方法。
18.上述一个或多个实施例具有如下有益效果:相对于相关技术中,数据链前后端衔接进行积分处理的流程,通过直接对静态数据和实时数据进行分别计算,并引入消息队列实现对静态数据和实时数据的兼容处理,能够将第一积分结果和第二积分结果转化为积分消息,通过消费积分消息实现用户积分的处理。从而对于静态数据或者实时数据皆可针对性的进行灵活处理,并对数据链的前后端进行解耦,降低了共性逻辑成本,提高了积分处理速度。
附图说明
19.通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
20.图1示意性示出了根据本公开实施例的用户积分处理系统的架构图;
21.图2示意性示出了根据本公开实施例的用户积分处理方法的流程图;
22.图3示意性示出了根据本公开实施例的操作s210中获得第一积分结果的流程图;
23.图4示意性示出了根据本公开实施例的静态数据源、第一集群和第二集群的交互示意图;
24.图5示意性示出了根据本公开实施例的第二集群、第三集群和规则引擎的交互示意图;
25.图6示意性示出了根据本公开实施例的获得第二积分结果的流程图;
26.图7示意性示出了根据本公开实施例的实时数据源、第四集群和消息中间件的交互示意图;
27.图8示意性示出了根据本公开实施例的获得用户积分的流程图;
28.图9示意性示出了根据本公开实施例的调用第二联机服务的流程图;
29.图10示意性示出了根据本公开实施例的消息中间件、第五集群和第六集群之间的交互示意图;
30.图11示意性示出了根据本公开实施例的用户积分处理装置的结构框图;
31.图12示意性示出了根据本公开实施例的适于实现用户积分处理方法的电子设备的方框图。
具体实施方式
32.以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
33.在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
34.在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
35.在使用类似于“a、b和c等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有a、b和c中至少一个的系统”应包括但不限于单独具有a、单独具有b、单独具有c、具有a和b、具有a和c、具有b和c、和/或具有a、b、c的系统等)。
36.在本公开的技术方案中,对数据的获取、收集、存储、使用、加工、传输、提供、公开和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
37.以某公司利用互联网技术提供业务为例,用户可以登录该公司客户端,进行消费、签到、抽奖等操作。该客户端可以记录用户的各种操作产生的数据,并传送到客户端服务器。积分处理系统可以从客户端服务器获得数据,对该用户积分进行处理。其中,用户操作产生的数据从客户端流转至后端服务器,再由后端服务器流转至积分处理系统的链路可称为一条数据链。由于客户端直接面向用户,所以客户端位于数据链前端,而积分处理系统位于数据链后端。
38.相关技术中,可以由客户端服务器对用户操作的数据进行处理获得积分结果后,再推送给积分处理系统。由于数据链前后端的衔接,导致积分处理过程中数据格式多样(对接不同的客户端服务器)、作业任务相互依赖(例如客户端服务器中的作业任务依赖,或客户端服务器与积分处理系统之间的作业任务依赖)、共性逻辑成本较高,并且客户端服务器可能会定时将批量积分结果推送给积分处理系统,而来自不同的客户端服务器的推送时间不一致,导致了积分处理系统无法及时地更新用户积分。
39.本公开实施例提供了一种用户积分处理方法、装置、设备、介质和程序产品。该方法包括:基于静态数据计算获得第一积分结果,其中,静态数据包括根据用户的第一行为产生的第一用户数据,第一行为用于间接获得用户积分。基于实时数据计算获得第二积分结果,其中,实时数据包括根据用户的第二行为产生的第二用户数据,第二行为用于直接获得用户积分。分别处理第一积分结果和第二积分结果来获得n条积分消息,并将n条积分消息写入消息队列,其中,n为大于或等于2的整数。从消息队列中消费n条积分消息来计算获得用户积分。
40.相对于相关技术中,数据链前后端衔接进行积分处理的流程,本公开实施例可以直接从数据链前端获取源数据,通过直接对静态数据和实时数据进行分别计算,并引入消息队列实现对静态数据和实时数据的兼容处理,能够将第一积分结果和第二积分结果转化为积分消息,通过消费积分消息实现用户积分的处理。从而对于静态数据或者实时数据皆可针对性的进行灵活处理,并对数据链的前后端进行解耦,降低了共性逻辑成本,提高了积分处理速度。
41.图1示意性示出了根据本公开实施例的用户积分处理系统的架构图。
42.如图1所示,根据该实施例的用户积分处理系统100可以包括数据源110、第一集群120、第二集群130、第三集群140、规则引擎150、第四集群160、消息中间件170、第五集群180和第六集群190。其中,数据源110可以包括静态数据源111和实时数据源112。其中,第一集群120、第二集群130、第三集群140、第四集群160、第五集群180和第六集群190可以分别为分布式集群。消息中间件170可以为消息集群,用以提供消息队列服务。
43.数据源110用于接收静态数据源,如根据用户的第一行为产生的第一用户数据,也可用于接收实时数据源,如根据第二行为产生的第二用户数据。
44.第一集群120可以包括多个服务器集群,其中,每个服务器集群可以包括若干台服务器。第一集群120可以用于对静态数据进行预处理。
45.第二集群130可以包括hadoop集群,用于接收来自第一集群120的预处理数据,对预处理处理进一步加工计算。其中,hadoop集群是一个适合海量数据的分布式存储和分布式计算的平台,其可以包括分布式存储框架hdfs组件、分布式计算框架mapreduce组件和资源调度平台yarn组件。
46.第三集群140可以包括spark集群,用于读取第二集群130处理后的文件,进行并发式逐条处理。具体地,可以逐条进行规则匹配,按照匹配到的规则进行积分计算。spark集群可以作为资源分配的调用器,其中,spark集群中运行的spark应用独立运行,一定程度上相互隔离。
47.规则引擎150可以用于调用一个或多个积分规则,响应于第三集群140的调用,对积分规则进行筛选,返回匹配的积分规则。
48.第四集群160可以包括多个联机应用集群,用于提供第一联机服务。
49.消息中间件170可以包括kafka消息集群,用于提供消息队列服务。kafka消息集群在对消息保存时可以根据topic进行归类,每个topic可以分为多个partion组,每个partion是一个有序的队列。partion中每条消息都会被分配一个有序的id。
50.第五集群180可以包括流式计算storm集群,用于监听kafka消息集群中的消息,并进行流式处理。
51.第六集群190可以包括多个联机应用集群,用于提供第二联机服务。
52.用户积分处理系统100可以用于实现本公开实施例的用户积分处理方法,也可以用于部署本公开实施例的用户积分处理装置。
53.以下将基于图1描述的用户积分处理系统,以金融机构进行用户积分处理为例,通过图2~图10对本公开实施例的用户积分处理方法进行详细描述。
54.图2示意性示出了根据本公开实施例的用户积分处理方法的流程图。
55.如图2所示,该实施例的用户积分处理方法包括操作s210~操作s240。
56.在操作s210,基于静态数据计算获得第一积分结果,其中,静态数据包括根据用户的第一行为产生的第一用户数据,第一行为用于间接获得用户积分。
57.这里的间接获得例如是第一行为不是直接获得用户积分的行为,对于第一用户数据不能直接确定所能获得的积分。以金融机构是银行机构为例,第一行为可以包括但不限于利用贷记卡消费的行为,利用借记卡消费的行为,参加某活动的达标行为等行为。用户在利用贷记卡消费时所产生的第一用户数据可以包括贷记卡消费流水,在利用借记卡消费时所产生的第一用户数据可以包括借记卡消费流水。例如用户参加推荐活动时的推荐行为所产生的第一用户数据可以包括推荐达标记录。以推荐活动举例,若要求推荐10人则分配积分,那么在用户推荐第5人时,该推荐行为不能直接获得积分。
58.由于第一用户数据不能直接确定积分,可以获取一段时间内的一个或多个用户的第一用户数据进行批量处理,因此,可以称之为静态数据。第一积分结果例如是对第一用户数据进行计算,而确定用户可以获得的积分数量。
59.在操作s220,基于实时数据计算获得第二积分结果,其中,实时数据包括根据用户的第二行为产生的第二用户数据,第二行为用于直接获得用户积分。
60.这里的直接获得例如是第二行为直接与用户积分相关联,对于第二用户数据可以直接确定所能获得的积分。因此,第二行为包括响应于用户操作即直接产生积分的行为,第一行为包括响应于用户操作要进一步进行规则匹配再产生积分的行为。例如第二行为包括但不限于在银行客户端的签到领积分行为、绑卡送积分行为、无门槛的消费领积分行为。用户在签到时所产生的第二用户数据可以包括签到记录,在绑卡时所产生的第二用户数据可以包括绑卡记录,在消费时所产生的第二用户数据可以包括消费记录。
61.由于第二行为可以直接获得用户积分,则可以实时处理第二用户数据,即随着第二用户数据的产生即可直接确定所能获得的积分,因此可以称之为实时数据。第二积分结果例如是对第二用户数据进行计算,而确定用户可以获得的积分数量。
62.在操作s230,分别处理第一积分结果和第二积分结果来获得n条积分消息,并将n条积分消息写入消息队列,其中,n为大于或等于2的整数。
63.在操作s240,从消息队列中消费n条积分消息来计算获得用户积分。
64.参见图1,可以直接获得用户数据的源文件进行积分计算。一方面,不再将计算积分的流程交由数据链前端,令作业任务不再相互依赖,数据链前端可以直接将产生源文件进行推送。另一方面,用户积分处理系统可以对于不同格式,不同来源(如不同的客户端)的源文件进行计算,用户积分处理不再取决于前端的推送时间,提高了处理速度。
65.相对于相关技术中,数据链前后端衔接进行积分处理的流程,通过直接对静态数据和实时数据进行分别计算,并引入消息队列实现对静态数据和实时数据的兼容处理,能够将第一积分结果和第二积分结果转化为积分消息,通过消费积分消息实现用户积分的处理。从而对于静态数据或者实时数据皆可针对性的进行灵活处理,并对数据链的前后端进行解耦,降低了共性逻辑成本,提高了积分处理速度。
66.图3示意性示出了根据本公开实施例的操作s210中获得第一积分结果的流程图。图4示意性示出了根据本公开实施例的静态数据源、第一集群和第二集群的交互示意图。图5示意性示出了根据本公开实施例的第二集群、第三集群和规则引擎的交互示意图。
67.如图3所示,该实施例的用户积分处理方法包括操作s310~操作s340。
68.在操作s310,获取s个渠道的积分文件,其中,s个渠道包括响应于第一行为和/或第二行为,向用户提供服务的渠道,积分文件中包括第一用户数据,其中,s为大于或等于1的整数。
69.渠道例如包括但不限于贷记卡渠道、借记卡渠道、达标活动渠道等。例如贷记卡渠道可以响应于用户的贷记卡消费行为,向用户提供贷记卡消费服务。借记卡渠道可以响应于用户的借记卡消费行为,向用户提供借记卡消费服务。达标活动渠道可以响应于用户的参加活动行为,向用户提供活动入口、活动说明等服务。
70.积分文件可以包括一段时间内一个或多个用户的第一用户数据。例如贷记卡积分文件可以包括一段时间内多个用户的贷记卡消费流水信息。借记卡积分文件可以包括一段时间内多个用户的借记卡消费流水信息。达标记录积分文件可以包括一段时间内多个用户的达标记录信息。
71.在操作s320,基于s个渠道中每个渠道关联的预处理规则,对每个渠道的积分文件进行预处理。
72.根据本公开的实施例,预处理规则可利用抽象化、集中化和配置化的方式,通过配置文件的形式实现,配置文件中可以包括预处理规则。首先针对s个渠道中各个渠道的特性,将需要处理的步骤或对象进行抽象化,形成与各个渠道适配的预处理规则。然后,以集中化的方式对s个渠道的配置文件集中管理,令每个渠道对应至少一个配置文件。通过配置文件的形式,实现适配s个渠道的预处理规则的配置化设计。从而可以通过对配置文件的操作,实现用户处理逻辑的动态变化和可扩展效果。能够针对s个渠道的积分文件,执行对应配置文件中的预处理规则,来处理积分文件中的用户数据。最终根据处理结果获得用户积
分。
73.参照图4,第一集群120可以运行批量应用1、批量应用2、批量应用3
……
批量应用n。每个批量应用可以执行预处理任务处理批量数据,例如批量应用1至批量应用n可以一一执行预处理任务1至预处理任务n。
74.第一集群120可以基于每个渠道的渠道标识,确定对应的解析配置文件;执行解析配置文件中的解析逻辑,解析每个渠道的积分文件,其中,解析逻辑用于将用户数据转换为预定格式的用户数据。
75.解析配置文件中可以包括x个解析单元,具体包括:从用户数据中确定出x个第一目标字段,其中,x为大于或等于1的整数;将x个第一目标字段的值对应映射到第一数据库表中的x列,其中,映射后的x列中包括预定格式的用户数据,x个解析单元包括对应于x列的x种解析逻辑。
76.在一些实施例中,可以预先与s个渠道约定渠道类型编号作为渠道识别标识。在将积分文件批量推入第一集群120时,文件名以渠道编号进行统一规范命名。各个渠道产生的积分文件可能具有不同的格式,例如文件格式,或者文件中的不同的字段含义。一种可选的实施方式是,每个渠道对接有固定的批量应用,该些批量应用中存储有可执行脚本,通过运行脚本针对性的对积分文件进行解析。其中,可以根据积分文件的文件名来确定推送到渠道对接的批量应用。另一种可选的实施方式是,每个渠道未对接有固定的批量应用,第一集群120在接收到积分文件后,可以基于负载均衡算法分配到各个批量应用。例如批量应用1在接收到积分文件后,基于文件名从脚本库里调用关联的可执行脚本,来针对性对积分文件进行解析。上述运行脚本解析文件的过程即为运行预处理任务的过程,可执行脚本中包括预处理规则。
77.由于不同的渠道可能采用不同的数据处理过程,导致接收到各个渠道的积分文件的内容和格式各异,无法通过统一计算规则进行积分计算。因此,采用每个渠道关联的预处理规则,可以针对性的对积分文件进行预处理,从而获得统一格式的文件,以便统一进行积分计算。
78.在操作s320中对每个渠道的积分文件进行预处理之后,获得每个渠道的目标表,目标表包括m条流水记录。
79.在操作s330,对m条流水记录中每条流水记录匹配对应的积分计算规则,m条流水记录包括第一用户数据,其中,m为大于或等于1的整数。
80.在操作s340,基于积分计算规则对每条流水记录中的第一用户数据进行计算,来获得第一积分结果。
81.参见图4和图5,图5中以hadoop集群作为第二集群130,以spark集群作为第三集群140为例。第一集群120将目标表落入数据库之后,可以进一步将目标表卸载成大文件,如大文件a、b、c和d。可以通过调度任务将大文件推入hdfs路径下,待分布式计算框架进行加工计算。
82.首先,利用hadoop集群进行文件切分。利用hadoop集群分布式文件处理计算能力,将推入的大文件进行切分为大小不超过50mb的文件并进行分布式存储。hadoop中每个bolck块可进行海量数据的存储满足了大数据量场景,并能够通过namenode进行快速访问,利用mapreduce在切分大文件数据时并进行格式的再次重写补偿默认值,同时可以对重复
数据进行避免重复性加载。最终通过任务调度将切分好的文件按照一定的命名规则输出到结果目录中。
83.其次,利用spark集群进行数据过滤。spark读取hdfs文件路径切分文件进行并发式逐条处理。按照预先设定的数据过滤规则进行数据清洗,例如进行商户过滤、黑名单过滤、金额过滤等。商户过滤例如是预定行业内的商户可以计积分。黑名单过滤例如是某个行业内的黑名单商户不可以计积分,或者用户若在黑名单内不可以计积分。金额过滤例如是在预定金额以下则不可以计积分。spark逐层调用集成规则jar包,并联机完成用户信息获取与认证,最终将符合的规则数据写入分片文件。其中,在spark集群客户端提交一个spark命令(如处理一条流水的命令)后,会启动一个drive线程。图5中drivea、driveb和drivec可以分别代表不同的线程以处理商户过滤、黑名单过滤、金额过滤,其中,drivea1、drivea2、driveb1、driveb2、drivec1、drivec2为对应进程下的子进程,用于匹配到至少一个过滤规则后,以进行数据过滤。需要说明的是,spark集群中可以匹配到的过滤规则并不仅限于图5所示的商户过滤、黑名单过滤、金额过滤。可以根据实际情况灵活选择。
84.spark集群可以基于每个渠道的渠道标识,确定对应的流程配置文件;执行流程配置文件中的流程逻辑,处理解析后的每个渠道的积分文件。
85.流程配置文件包括y个流程单元集,如商户过滤流程单元集、黑名单过滤流程单元集、金额过滤流程单元集。执行流程配置文件中的流程逻辑,处理解析后的每个渠道的积分文件包括:基于y个流程单元集的预设顺序,依次执行y个流程单元集中每个流程单元集,其中,每个流程单元集对应于获得第一积分结果的每个处理流程;其中,每个流程单元集包括z个流程单元,z个流程单元中每个流程单元对应于每个处理流程中的每个子处理流程,每个流程单元包括至少一种流程逻辑,y、z分别为大于或等于1的整数。
86.最后,利用spark集群进行积分计算。spark再次读取符合条件数据,并对流水记录通过规则引擎中匹配到的规则进行积分值计算,如用户在推荐活动中的推荐人数为10人,则按配置规则进行达标记录中的积分值进行计算。可能会有一条流水记录匹配多个积分规则的情况,会产生多笔累计积分记录(即第一积分结果)并写入kafka消息集群。
87.根据本公开的实施例,用户的第一行为可能会触发不同的积分计算规则,或者涉及一个或多个活动。通过规则引擎对流水记录进行积分匹配,提高积分计算的准确性和效率。
88.图6示意性示出了根据本公开实施例的操作s220中获得第二积分结果的流程图。图7示意性示出了根据本公开实施例的实时数据源、第四集群和消息中间件的交互示意图。
89.如图6所示,操作s220中基于实时数据计算获得第二积分结果可以包括操作s610~操作s620。
90.在操作s610,根据实时请求报文所属的渠道,调用对应的第一联机服务,其中,实时请求报文包括第二用户数据。
91.在操作s620,基于第一联机服务对第二用户数据进行积分计算,来获得第二积分结果。
92.如图7所示,第四集群160可以接收来自s个渠道的实时请求报文。第四集群160可以包括路由或网关,a联机应用1、a联机应用2、a联机应用3
……
a联机应用n,以及数据库。其中,a联机应用1至n可以提供第一联机服务,第一联机服务可以响应于接收到的实时请求报
文,进行积分的快速落库处理,实现即时响应。
93.参见图1和图7,首先,实时数据源可以包括在客户端接收到用户的操作后,调用api接口进行实时传输的数据。例如可以通过http请求将实时数据以http报文(即实时请求报文)的方式传输至第四集群160。
94.其次,第四集群160可以利用路由或网关将不同的http报文分配至不同的a联机应用。一种可选的实施方式是,每个渠道对应有固定的若干个a联机应用,该些a联机应用对应有第一联机服务。例如路由可以基于http报文中的渠道编号确定其所属的渠道,然后将其转发至对应的a联机应用。另一种可选的实施方式是,每个渠道未对应有固定的若干个a联机应用,而是对应有固定的第一联机服务。路由可以基于负载均衡算法将http报文分配至某个a联机应用,由该a联机应用根据http报文中的渠道编号确定其所属的渠道,调用对应的第一联机服务。
95.最后,利用第一联机服务解析http报文获得第二用户数据,进行积分计算。以用户在银行客户端参加抽奖活动为例,在用户进行抽奖操作后,可以获得抽奖结果。银行客户端可以将抽奖结果以http报文的形式实时传输至第四集群160。第四集群160中路由将http报文转发至a联机应用1。a联机应用1通过报文中的抽奖渠道编号调用第一联机服务,以令第一联机服务获得抽奖结果。例如抽奖结果为三等奖,第一联机服务可以获得三等奖所能获得的积分作为第二积分结果。
96.在一些实施例中,参见图7,可以将第二积分结果写入数据库中。并通过quartz自动任务机制,以异步的方式将数据库中的第二积分结果转换为积分消息,写入消息中间件中170。
97.图8示意性示出了根据本公开实施例的操作s230中获得用户积分的流程图。图10示意性示出了根据本公开实施例的消息中间件、第五集群和第六集群之间的交互示意图。
98.如图8所示,操作s230中从消息队列中消费n条积分消息来计算获得用户积分可以包括操作s810~操作s820。
99.在操作s810,基于n条积分消息中每条积分消息调用第二联机服务。
100.如图10所示,可以将storm集群作为第五集群180。第六集群190可以接收来自storm集群的请求。第六集群190可以包括路由或网关,b联机应用1、b联机应用2、b联机应用3
……
b联机应用n,以及数据库。其中,b联机应用1至n可以提供第二联机服务,第二联机服务可以来自storm集群的请求,以用户积分账户为单位进行用户积分的更新。
101.参照图1和图10,经过第三集群和第四集群的加工后,将第一积分结果和第二积分结果转化为积分消息数据流,通过消息中间件(如kafka集群)桥接流式计算框架(storm集群)进行数据处理。换言之,storm集群可以作为消费端,从消息中间件170中的消息队列中消费积分消息,来调用第二联机服务。
102.在操作s820,根据积分消息,利用第二联机服务来更新用户积分账户的用户积分。
103.在执行操作s820之前,可以基于第三数据库表中至少一个参数标识,确定出目标参数标识;从第四数据库表中确定出目标参数标识对应的至少一个场景字段;将第二目标字段与至少一个场景字段进行匹配,来获得匹配结果;基于匹配结果确定对应的配置条件。
104.第三数据库表可以作为参数标识集合定义表,用于定义参数标识(如名称、编号等)、类型。第四数据库表可以作为参数标识具体值表,用于定义参数标识的枚举值,即场景
字段。参数标识可以指将积分计算规则通过参数化的方式进行配置。每个积分计算规则可以分配有对应的参数标识。场景字段可以指用户数据具体涉及的详情场景信息,如若干个积分活动、积分星级、消费金额、商户名称等信息对应的字段。需要说明的是,上述积分计算规则与规则引擎所调用的规则配置形式不同,所处理的用户数据的内容也不同。
105.参照图10,路由或网关可以对接收到的请求进行负载均衡,例如将一条积分消息对应的请求发送到b联机应用1。该条积分消息可以包括用户信息、累计积分数值等,b联机应用1可以调用第二联机服务获得用户积分账户,并在数据库中查询用户积分账户中的积分余额(即用户积分)。一种可选的实施方式是,第二联机服务可以将累计积分数值与积分余额进行累加,然后判断是否已超过用户积分账户的最大允许积分额度,若已超过,则将积分余额更新为最大额度。若未超过,则直接更新为累加结果。最后,将更新后的用户积分账户,以及积分余额写入数据库中。在一些实施例中,积分消息可以包括用户信息、削减积分数值等。
106.一方面,在基于静态数据获得第一积分结果后,通过第二联机服务解析第一积分结果对应的消息来更新积分到用户积分账户,能够避免更新逻辑分布在联机和批量两处,增加后续维护复杂度。另一方面,在基于实时数据获得第二积分结果的过程中,调用第一联机服务,并在更新时调用第二联机服务,通过第一联机服务和第二联机服务的结合,实现了对实时数据的即时处理,并实现了对实时数据和静态数据的兼容处理。另外,在第二联机服务端增加积分账户更新的调度控制逻辑,能够完成异常重试、大额积分统一管理等特殊业务处理。
107.图9示意性示出了根据本公开实施例的操作s810中调用第二联机服务的流程图。
108.如图9所示,操作s810中基于n条积分消息中每条积分消息调用第二联机服务可以包括操作s910~操作s920。
109.在操作s910,将每条积分消息转换为对应的联机请求。
110.转换的过程可以是数据格式转换,也可以从每条积分消息中取出有效数据再加工得到联机请求。
111.在操作s920,基于联机请求调用第二联机服务,以使得第二联机服务解析联机请求来更新用户积分账户。
112.参照图10,可以通过storm集群的spout进程进行监听消费队列中的消息变动情况,消费积分消息并流转到bolt线程组动态均衡消费,编写bolt处理逻辑将积分消息转成http联机请求,调用联机服务完成积分账户的调整。具体地,可以响应于消息中间件中的topic分类,在storm集群中按照topic消费积分消息,例如消费topic1、消费topic2等。其中,消费topic1即用于处理来自贷记卡渠道的积分消息。消费topic2即用于处理来自借记卡渠道的积分消息。需要说明的是,本公开实施例的用户积分处理方法可以按需设置若干个渠道,相应的,可以在storm集群中对应设置若干个topic。
113.根据本公开的实施例,可以在索引库中写入处理记录,其中,处理记录包括从消息队列中消费积分消息的记录。在执行操作s910来将每条积分消息转换为对应的联机请求之前,还包括:通过索引库查询每条积分消息的处理记录。
114.如图10所示,可以设置索引库1010与storm集群进行对接。索引库1010中可以保存有storm集群历史上处理过的积分消息记录。在一条积分消息流转到bolt线程组动态均衡
消费之前,可以先查询索引库1010中是否有该条积分消息的处理记录,若有则不再继续处理。其作用在于可以防止消费积分消息之前的任一环节重复发送处理过的数据,从而避免处理重复数据导致的计算资源的浪费,甚至用户积分的重复累计。
115.根据本公开的实施例,处理记录包括处理状态,在第二联机服务解析联机请求更新用户积分账户出现异常的情况下,还包括:在索引库中修改联机请求对应的积分消息的处理状态,其中,包括:将处理状态修改为异常状态。
116.参照图10,在第六集群190接收到联机请求后,可能会出现解析失败的情况,则可将该联机请求对应的积分消息回退给sorm集群,并将索引库中该条积分消息的处理状态修改为异常状态。还可能会出现更新用户积分失败的情况,也可将该联机请求对应的积分消息回退给sorm集群,并修改状态。在一些实施例中,可以为第六集群190配置异常数据库,用于存储出现异常的联机请求。然后,可以定时在异常数据库与索引库之间进行数据同步,以更新相应积分消息的状态。
117.通过修改积分消息的处理状态,可以起到防重处理,以及异常数据补偿的作用。例如在执行操作s910之前,可以查询索引库中是否有当前积分消息的处理记录,若没有记录则可以继续处理。若有记录且处理状态为成功状态,则不再继续处理。若有记录且处理状态为异常状态,则可以继续处理。从而在第二联机服务产生异常数据后进行补偿机制来提高用户积分处理的正确性。
118.基于上述用户积分处理方法,本公开还提供了一种用户积分处理装置。以下将结合图11对该装置进行详细描述。
119.图11示意性示出了根据本公开实施例的用户积分处理装置1100的结构框图。
120.如图11所示,该实施例的用户积分处理装置1100包括静态数据计算模块1110、实时数据计算模块1120、积分结果转换模块1130和积分消息消费模块1140。
121.静态数据计算模块1110例如可以执行操作s210,用于基于静态数据计算获得第一积分结果,其中,静态数据包括根据用户的第一行为产生的第一用户数据,第一行为用于间接获得用户积分。
122.在一些实施例中,静态数据计算模块1110例如还可以执行操作操作s310~操作s320,在此不做赘述。
123.实时数据计算模块1120例如可以执行操作s220,用于基于实时数据计算获得第二积分结果,其中,实时数据包括根据用户的第二行为产生的第二用户数据,第二行为用于直接获得用户积分。
124.在一些实施例中,实时数据计算模块1120例如还可以执行操作操作s610~操作s620,在此不做赘述。
125.积分结果转换模块1130例如可以执行操作s230,用于分别处理第一积分结果和第二积分结果来获得n条积分消息,并将n条积分消息写入消息队列,其中,n为大于或等于2的整数。
126.在一些实施例中,积分结果转换模块1130例如还可以执行操作操作s810~操作s820,操作s910~操作s920在此不做赘述。
127.积分消息消费模块1140例如可以执行操作s240,用于从消息队列中消费n条积分消息来计算获得用户积分。
128.根据本公开的实施例,静态数据计算模块1110、实时数据计算模块1120、积分结果转换模块1130和积分消息消费模块1140中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,静态数据计算模块1110、实时数据计算模块1120、积分结果转换模块1130和积分消息消费模块1140中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,静态数据计算模块1110、实时数据计算模块1120、积分结果转换模块1130和积分消息消费模块1140中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
129.图12示意性示出了根据本公开实施例的适于实现用户积分处理方法的电子设备的方框图。
130.如图12所示,根据本公开实施例的电子设备1200包括处理器1201,其可以根据存储在只读存储器(rom)1202中的程序或者从存储部分1208加载到随机访问存储器(ram)1203中的程序而执行各种适当的动作和处理。处理器1201例如可以包括通用微处理器(例如cpu)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic))等等。处理器1201还可以包括用于缓存用途的板载存储器。处理器1201可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
131.在ram 1203中,存储有电子设备1200操作所需的各种程序和数据。处理器1201、rom 1202以及ram 1203通过总线1204彼此相连。处理器1201通过执行rom 1202和/或ram 1203中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,程序也可以存储在除rom 1202和ram 1203以外的一个或多个存储器中。处理器1201也可以通过执行存储在一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
132.根据本公开的实施例,电子设备1200还可以包括输入/输出(i/o)接口1205,输入/输出(i/o)接口1205也连接至总线1204。电子设备1200还可以包括连接至i/o接口1205的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1206。包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分1207。包括硬盘等的存储部分1208。以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1209。通信部分1209经由诸如因特网的网络执行通信处理。驱动器1210也根据需要连接至i/o接口1205。可拆卸介质1211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1210上,以便于从其上读出的计算机程序根据需要被安装入存储部分1208。
133.本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的。也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
134.根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器
(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的rom 1202和/或ram 1203和/或rom 1202和ram 1203以外的一个或多个存储器。
135.本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的物品推荐方法。
136.在该计算机程序被处理器1201执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
137.在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分1209被下载和安装,和/或从可拆卸介质1211被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
138.在这样的实施例中,该计算机程序可以通过通信部分1209从网络上被下载和安装,和/或从可拆卸介质1211被安装。在该计算机程序被处理器1201执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
139.根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如java,c++,python,“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
140.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
141.本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在
不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
142.以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1