数据处理方法、装置、服务器以及存储介质与流程

文档序号:27911939发布日期:2021-12-11 09:53阅读:73来源:国知局
数据处理方法、装置、服务器以及存储介质与流程

1.本发明涉及互联网技术领域,尤其涉及一种数据处理方法、装置、服务器以及存储介质。


背景技术:

2.近年来,随着互联网技术的发展,互联网用户的不断增多对每一家互联网公司即是机遇也是挑战,只有性能够强的应用程序才能迎接挑战,在高并发场景下进行事务处理是应用程序最重要的一部分。
3.目前,为了保证高并发场景下事务的一致性有以下几种方式:单机情况下可以用锁实现,通过数据库的事务实现,通过使用乐观锁的方式实现。
4.然而,在请求量不高的情况下,事务是很容易满足的,但是随着请求的增多,事务的一致性和性能的要求也越来越高,加锁或者数据库事务虽然可以满足一致性需求,但是对事务处理的性能影响较大。综上,目前还没有一种既能保证高并发场景下的事务一致性且性能较高的技术方案。


技术实现要素:

5.本发明实施例提供一种数据处理方法、装置、服务器以及存储介质,提供一种既能保证高并发场景下的事务一致性且性能较高的技术方案。
6.第一方面,本发明实施例提供一种数据处理方法,包括:
7.接收多个客户端发送的多个写数据请求,每个写数据请求中包括操作信息;
8.根据操作信息确定每个写数据请求所属的技术领域;
9.根据每个写数据请求所属的技术领域,对属于同一个技术领域的至少一个写数据请求进行聚合,并生成数据快照,所述数据快照用于记录所述技术领域在当前时刻的数据信息。
10.在一种具体实施方式中,所述方法还包括:
11.将每个技术领域对应的数据快照发送至数据库进行存储。
12.在一种具体实施方式中,所述根据每个写数据请求所属的技术领域,对属于同一个技术领域的至少一个写数据请求进行聚合,并生成数据快照,包括:
13.根据每个写数据请求所属的技术领域,获取每个技术领域的至少一个写数据请求;
14.针对每个技术领域,在所述技术领域对应的至少一个写数据请求执行完成后生成所述数据快照,所述数据快照用于记录所述技术领域的所述至少一个写数据请求执行完成后的数据信息。
15.在一种具体实施方式中,所述方法还包括:
16.接收任一客户端发送的读数据请求;
17.根据所述读数据请求确定需要读取数据的技术领域;
18.从所述技术领域在当前时刻的数据快照中获取数据信息,并将所述数据信息返回所述客户端。
19.在一种具体实施方式中,所述从所述技术领域在当前时刻的数据快照中获取数据信息,包括:
20.根据所述技术领域,从数据库中获取与所述技术领域对应的当前时刻的数据快照;
21.从所述数据快照中获取所述数据信息。
22.在第二方面,本发明实施例提供一种数据处理装置,包括:
23.接收模块,用于接收多个客户端发送的多个写数据请求,每个写数据请求中包括操作信息;
24.处理模块,用于根据操作信息确定每个写数据请求所属的技术领域;
25.所述处理模块还用于根据每个写数据请求所属的技术领域,对属于同一个技术领域的至少一个写数据请求进行聚合,并生成数据快照,所述数据快照用于记录所述技术领域在当前时刻的数据信息。
26.在一种具体实施方式中,所述装置还包括:
27.发送模块,用于将每个技术领域对应的数据快照发送至数据库进行存储。
28.在一种具体实施方式中,所述处理模块具体用于:
29.根据每个写数据请求所属的技术领域,获取每个技术领域的至少一个秀写数据请求;
30.针对每个技术领域,在所述技术领域对应的至少一个写数据请求执行完成后生成所述数据快照,所述数据快照用于记录所述技术领域的所述至少一个写数据请求执行完成后的数据信息。
31.在一种具体实施方式中,所述接收模块还用于接收任一客户端发送的读数据请求;
32.所述处理模块还用于:
33.根据所述读数据请求确定需要读取数据的技术领域;
34.从所述技术领域在当前时刻的数据快照中获取数据信息,并将所述数据信息返回所述客户端。
35.在一种具体实施方式中,所述处理模块具体用于:
36.根据所述技术领域,从数据库中获取与所述技术领域对应的当前时刻的数据快照;
37.从所述数据快照中获取所述数据信息。
38.第三方面,本发明实施例提供一种服务器,包括:
39.接收器、处理器,发送器;以及,
40.存储器,用于存储所述处理器的可执行指令;
41.其中,所述处理器配置为经由执行所述可执行指令来执行第一方面任一项所述的数据处理方法。
42.第四方面,本发明实施例提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一项所述的数据的处理方法。
43.第五方面,本发明实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于实现第一方面任一项所述的数据处理方法。
44.本发明实施例提供的数据处理方法、装置、服务器以及存储介质,该方案中,在响应数据读写操作请求的服务器中,当服务器接收到多个客户端发送的多个写数据请求,每个写数据请求中包括操作信息,根据操作信息确定每个写数据请求所属的技术领域,根据每个写数据请求所属的技术领域,对属于同一个技术领域的至少一个写数据请求进行聚合,并生成数据快照。该数据快照中记录了该技术领域在当前时刻的数据信息,对于同一个领域的多个操作可以累计起来得到当前的数据信息,并不用一个个记录每一个操作事件,能够保证高并发性场景下的数据一致,并且处理性能较好。
附图说明
45.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
46.图1是本发明提供的数据处理方法的应用场景示意图;
47.图2是本发明提供的一种数据处理方法实施例一的流程示意图;
48.图3是本发明提供的一种数据处理方法实施例二的流程示意图;
49.图4是本发明提供的一种数据处理方法实施例三的流程示意图;
50.图5为本发明提供的数据处理方法的一种示意图;
51.图6是本发明提供的一种数据处理方法的构思示意图;
52.图7是本发明提供的一种数据处理装置实施例的结构示意图;
53.图8为本发明提供的一种服务器实施例的结构示意图。
具体实施方式
54.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在根据本实施例的启示下作出的所有其他实施例,都属于本发明保护的范围。
55.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
56.在现有技术中,请求量不高的情况下,事务是很容易满足的,但是随着请求的增多,事务的一致性和性能的要求也越来越高,加锁或者数据库事务虽然可以满足一致性需求,但是对事务处理的性能影响较大。基于以上需要,现有技术存在的问题主要包括:
57.1、加锁防止并发修改:通过程序加锁的方式可以一定程度上防止并发事务的影响,但是这种方式只适合在单机情况下使用,在集群环境下并不能保证事务的一致性,虽然随着计算机性能的不断提升,获取锁的时间和代价也不断减少,但是锁的存在就表示同一时间只能有一个线程可以操作,这使得程序的并发性能大大的降低。
58.2、通过数据库事务实现:数据库的事务是数据库保证事务一致性的前提,当操作运行在事务环境下时,数据库会保证同一条记录只能有一个修改进行,但是如果修改记录较多,数据库无法评估影响时可能会导致数据库全表的锁定,使得所有操作都不可用,数据库事务的实现对开发人员的要求较高。
59.3、使用乐观锁的方式实现事务:除开数据库事务在大部分情况下还可以使用乐观锁保证事务的一致性,乐观锁情况下可以保证同时进行的修改请求只有一个可以修改成功,后续的因为不满足情况会导致修改失败,但是一些情况下其实我们会期望并发的请求都能操作成功,譬如库存足够情况下的出库。
60.4、只关注数据,不能反映操作行为:传统实现是失血模型,数据和行为是分离的,数据存储在数据库中,使用时加载到应用服务器,然后处理之后再存入数据库。
61.针对上述问题,本发明实施例提供一种数据处理方法,用于实现集群环境下的数据操作,减少操作失败,提高操作性能,并保证数据和行为一体,保证数据和操作行为一体。
62.图1是本发明提供的数据处理方法的应用场景示意图;如图1所示,该场景中包括多个运行在设备上的客户端,该设备可以是电脑,个人计算机,智能手机等能够通过应用程序或者浏览器等客户端向服务器发送数据读写请求的设备,该服务器用于对客户端发送的写数据请求和读数据请求进行处理响应,数据库用于存储数据。
63.针对上述技术问题和场景,本发明提供的数据处理方法的核心思路为:针对并发场景,当服务器接收到很多个写数据请求时,按照现有的方式需要一个个处理,导致处理较少,并且每个请求处理完之后均需要记录数据的变化,然而有时候多个数据请求的操作会互相干扰,在同一个时刻进行了不同的操作导致记录的数据结果不一致,有可能导致在数据查询的时候查询结果不准确,因此发明人在实现事件溯源的过程中发现,基于领域驱动的思想,可以将同一个领域类型的写数据操作完成之后进行记录,也就是说多个写数据操作无事务依赖,在并发的多个写数据操作执行完成之后生成一个数据快照,将操作后的时刻的数据信息记录下来,也就是说通过记录行为事件反正数据的变更记录,在特定事件生成快照,保证数据一致性和查询效率。
64.图2是本发明提供的一种数据处理方法实施例一的流程示意图;如图2所示,在上述场景下,该数据处理方法主要应用在服务器侧,具体包括以下步骤:
65.s101:接收多个客户端发送的多个写数据请求,每个写数据请求中包括操作信息。
66.在本步骤中,对于服务器来说,服务器可能会同时接到多个客户端发送的多个写数据请求,每个写数据请求中包括具体的操作信息,该操作信息可以为具体执行的操作以及操作的数据等,举例来说,服务器接收到对某用户的账户数据的多个写数据请求包括该用户被几个人同时转账,或者转进的同时间还向其他人进行了转出操作的操作信息,那么不同的写数据请求中包括的操作信息中可以包括转入操作,以及转入金额,或者包括转出操作以及转出金额等,又或者,接收到的写数据请求是网络购物下单后的操作,则该写数据请求中可以包括下单操作,下单商品信息以及下单的商品数量等。
67.在该方案中,应理解,接收到的多个客户端发送的多个写数据请求,可以是同时接收到的,也可以是在一段时间内接收到的,时间段的长短可以根据实际方案实现进行设置。
68.s102:根据操作信息确定每个写数据请求所属的技术领域。
69.在本步骤中,服务器根据每个写数据请求中的操作信息确定出该写数据请求的技术领域,这里的技术领域用于指示写数据请求的类型,例如:转账,购买商品等。
70.s103:根据每个写数据请求所属的技术领域,对属于同一个技术领域的至少一个写数据请求进行聚合,并生成数据快照,数据快照用于记录技术领域在当前时刻的数据信息。
71.该步骤的一种具体实现方式为:服务器根据每个写数据请求所属的技术领域,获取每个技术领域的至少一个写数据请求(可以是两个或者多个写数据),针对每个技术领域,在所述技术领域对应的至少一个写数据请求执行完成后生成所述数据快照,所述数据快照用于记录所述技术领域的所述至少一个写数据请求执行完成后的数据信息。
72.在本步骤中,服务器可将属于同一个技术领域的多个写数据请求进行聚合处理,举例来说,若都是对某个账号或者某个用户的转账操作,则可以将这些转账操作聚合执行之后,得到最红的该账号或者用户的账目数据,从而生成这个技术领域在此刻的数据快照。也就是说对于并行的多个同一领域的写数据请求执行后只生成一个数据快照,该数据快照中记录了此刻的数据信息。
73.若同时接收到了多个领域的多个写数据请求,那么则可以针对每个领域的请求分别进行聚合,得到每个领域此刻对应的数据快照。
74.本实施例提供的数据处理方法,在响应数据读写操作请求的服务器中,当服务器接收到多个客户端发送的多个写数据请求,每个写数据请求中包括操作信息,根据操作信息确定每个写数据请求所属的技术领域,根据每个写数据请求所属的技术领域,对属于同一个技术领域的至少一个写数据请求进行聚合,并生成数据快照。该数据快照中记录了该技术领域在当前时刻的数据信息,对于同一个领域的多个操作可以累计起来得到当前的数据信息,并不用一个个记录每一个操作事件,能够保证高并发性场景下的数据一致,并且处理性能较好。
75.图3是本发明提供的一种数据处理方法实施例二的流程示意图;如图3所示,在上述实施例的基础上,该数据处理方法还包括:
76.s104:将每个技术领域对应的数据快照发送至数据库进行存储。
77.在本步骤中,服务器在根据前述实施例的方案得到每个技术领域在当前时刻的数据快照,并将当前时刻的数据快照发送至数据库进行存储,以便后续在进行读数据的时候能够基于该数据快照进行查询。
78.图4是本发明提供的一种数据处理方法实施例三的流程示意图;如图4所示,在上述任一实施例的基础上,该数据处理方法还包括:
79.s201:接收任一客户端发送的读数据请求。
80.在本步骤中,当用户需要查询数据时候,可通过客户端发送读数据请求,同样的该读数据请求中的信息可以确定具体的技术领域,例如:该读数据请求可以是查询账户金额,也可以是查询库存,或者订单信息等,对此本方案不做限制。
81.s202:根据读数据请求确定需要读取数据的技术领域。
82.s203:从技术领域在当前时刻的数据快照中获取数据信息,并将数据信息返回客户端。
83.在上述步骤中,服务器在接收到读数据请求之后,基于读数据请求中携带的信息确定出需要读取数据的技术领域,然后根据技术领域,从数据库中获取与所述技术领域对应的当前时刻的数据快照。具体的,服务器可以基于该技术领域向数据库发送快照获取请求,数据库基于技术领域将数据快照返回给服务器。服务器继续从所述数据快照中获取所述数据信息。
84.服务器在获取到数据信息之后将数据信息返回给客户端,完成读数据的过程。
85.基于上述任一实施例,下面对本发明的数据处理方法进行举例说明。
86.图5为本发明提供的数据处理方法的一种示意图,图6是本发明提供的一种数据处理方法的构思示意图,如图5和6所示,当服务器接收到多个写数据请求,其中一个写数据请求对某数据add(500),另一个写数据请求对该数据add(100),另一个写数据请求对该数据sub(100),那么这三个写数据请求都是针对同一领域的数据的修改,在具体操作过程中,则属于输入500,输入100,输出100,在生成数据快照时候,分别将这几个数据操作的具体过程进行记录并得到此时的最终执行结果,也就是图中的total(500),在执行完前述三个写数据请求对应的操作之后,将最终的数据信息在快照中进行记录。
87.下一次接收到两个写数据请求sub(200),add(100)这两个请求对应的操作为输出200,输入100,在生成数据快照时候,分别将这几个数据操作的具体过程进行记录并得到此时的最终执行结果,也就是图中的total(400),在执行完前述二个写数据请求对应的操作之后,将最终的数据信息在快照中进行记录。
88.本发明提供的数据处理方法的核心是基于领域驱动设计事件溯源的系统。核心内容是事件,事件溯源一般情况下会和命令查询责任隔离模式(cqrs)一起使用,事件溯源模式不是通过记录数据的当前状态而是通过数据发生的事件累加来计算数据的当前状态(例如图5所示的示例),事件溯源相对于数据的操作能够体现数据的变更记录,更多的数据和操作对于只有的数据挖掘也提供了相当的便利,事件溯源记录了一个个的事件,不需要锁定数据进行修改,服务的整体对写数据请求处理能力和吞吐量更高。cqrs模式从业务上分离修改(command,增,删,改,会对系统状态进行修改)和查询(query,查,不会对系统状态进行修改)的行为。从而使得逻辑更加清晰,便于对不同部分进行针对性的优化。
89.应理解,事件溯源采用基于领域事件的概念来实现聚合的持久化,将每个聚合持久化为数据库中的一系列事件。应用程序从事件存储中检索并重放事件来加载聚合。事件溯源的核心是记录每一次操作的事件,事件发生前后数据的变更情况,甚至可以只记录事件的发生,和事件发生的影响,多个事件的发生并不会对彼此造成影响,只需要确保每一次事件操作准确无误的记录下来,就可以确保事务的一致性,而事务的一致性又是重中之重。在该方案中,事务是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。
90.事件溯源和cqrs是密切相关且相辅相成的,通过事件的记录,可以确保数据的c(command)记录互不干扰,而通过领域模型的聚合可以生成数据的快照,确保数据的查询(query)性能,将数据的读写分离,读和写都处在最适合的模型。
91.本方案是在领域驱动设计思想下,结合模型本身特点,分别根据读取和修改设计数据的读模型和写模型,写模型通过记录事件确保对数据的操作不会丢失并且多次操作无事务依赖和先后顺序保证写入性能,对于读取根据领域模型生产多个事件的快照保证查询效率。
92.而真正面向对象的设计中,数据和行为是在一起的(比如actor模型(一个actor指的是一个最基本的计算单元。它能接收一个消息并且基于其执行计算。这个理念很像面向对象语言,一个对象接收一条消息(方法调用),然后根据接收的消息进行操作(调用了哪个方法))),即服务层即执行逻辑也持有数据。每一次对数据的操作请求也即是一次次事件,通过记录行为事件反映数据的变更记录,在特定时间生成快照,保证查询效率。
93.图7是本发明提供的一种数据处理装置实施例的结构示意图;如图7所示,该数据处理装置10包括:
94.接收模块11,用于接收多个客户端发送的多个写数据请求,每个写数据请求中包括操作信息;
95.处理模块12,用于根据操作信息确定每个写数据请求所属的技术领域;
96.所述处理模块12还用于根据每个写数据请求所属的技术领域,对属于同一个技术领域的至少一个写数据请求进行聚合,并生成数据快照,所述数据快照用于记录所述技术领域在当前时刻的数据信息。
97.在一种具体的实施方式中,所述数据处理装置10还包括:
98.发送模块13,用于将每个技术领域对应的数据快照发送至数据库进行存储。
99.在一种具体的实施方式中,所述处理模块12具体用于:
100.根据每个写数据请求所属的技术领域,获取每个技术领域的至少一个写数据请求;
101.针对每个技术领域,在所述技术领域对应的至少一个写数据请求执行完成后生成所述数据快照,所述数据快照用于记录所述技术领域的所述至少一个写数据请求执行完成后的数据信息。
102.在一种具体的实施方式中,所述接收模块11还用于接收任一客户端发送的读数据请求;
103.所述处理模块12还用于:
104.根据所述读数据请求确定需要读取数据的技术领域;
105.从所述技术领域在当前时刻的数据快照中获取数据信息,并将所述数据信息返回所述客户端。
106.可选的,所述处理模块12具体用于:
107.根据所述技术领域,从数据库中获取与所述技术领域对应的当前时刻的数据快照;
108.从所述数据快照中获取所述数据信息。
109.上述任一实施例提供的数据处理装置,用于执行前述任一方法实施例中的技术方案,其实现原理和技术效果类似,在此不再赘述。
110.图8为本发明提供的一种服务器实施例的结构示意图。如图8所示,该服务器20包括:
111.接收器21、处理器22,发送器23;以及,
112.存储器24,用于存储所述处理器的可执行指令;
113.其中,所述处理器22配置为经由执行所述可执行指令来执行前述任一方法实施例提供的数据处理方法。
114.可选地,存储器24既可以是独立的,也可以跟处理器22集成在一起。
115.当所述存储器24是独立于处理器22之外的器件时,所述服务器还可以包括:
116.总线25,用于将上述器件连接起来。
117.该服务器用于执行前述任一方法实施例提供的数据处理方法,其实现原理和技术效果类似,在此不再赘述。
118.本发明实施例还提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述任一方法实施例提供的数据的处理方法。
119.本发明实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于实现前述任一方法实施例提供的数据处理方法。
120.本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
121.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或对其中部分或全部技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1