CN112995301A - 应用于分布式系统的数据处理方法和装置 - Google Patents
应用于分布式系统的数据处理方法和装置 Download PDFInfo
- Publication number
- CN112995301A CN112995301A CN202110168115.1A CN202110168115A CN112995301A CN 112995301 A CN112995301 A CN 112995301A CN 202110168115 A CN202110168115 A CN 202110168115A CN 112995301 A CN112995301 A CN 112995301A
- Authority
- CN
- China
- Prior art keywords
- data
- shared
- atomic
- shared packet
- service
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供了一种应用于分布式系统的数据处理方法和装置,其中,分布式系统包括多个原子服务,该方法应用于多个原子服务中的各原子服务,包括:接收调用方发送的第一调用请求;向调用方返回处理结果数据;在响应于第一调用请求生成了共享包数据的情况下,将共享包数据写入预设内存区域中;从预设内存区域读取共享包数据,并将读取的共享包数据发送至共享数据服务器。上述方案中,在原子服务接收到调用请求时,若生成了共享包数据,则将共享包数据写入预设内存中,并在返回处理结果至调用方时触发从预设内存中读取共享包数据并发送至共享数据服务器,以便于对分布式系统中各个原子服务产生的数据进行关联处理。
Description
技术领域
本申请涉及分布式系统信息处理技术领域,特别涉及一种应用于分布式系统的数据处理方法和装置。
背景技术
在传统系统中,通常采用集中式系统处理核心业务逻辑。在集中式系统中,一笔交易链路上的应用接口程序可通过调用内存访问接口将共享包数据写入共享内存中。入口程序通过调用内存访问接口获取共享包信息,并打包下传到网关。网关将共享包一同旁路至增值服务平台,进行动账提醒、增值营销、风险监控等处理。随着业务量的增长,集中式系统的性能出现瓶颈,逐步向性价比更高、处理能力更强、可靠性更好、扩展性更好的分布式系统转型。从集中式系统的接口逐层调用关系,变为分布式系统上的服务组合调用关系,一笔交易链路经过多个原子服务最终完成处理。
然而,由于在分布式系统下交易数据不再流经网关,缺少了网关截留旁路技术,造成增值服务平台交易数据的缺失。而且,在分布式系统下,各原子服务相互独立,数据无法共享,缺少了集中式系统的内存共享技术,造成一笔交易链路上的各个原子服务产生的数据无法进行关联处理。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种应用于分布式系统的数据处理方法和装置,以解决现有技术中分布式系统中各个原子服务产生的数据无法进行关联处理的问题。
本申请实施例提供了一种应用于分布式系统的数据处理方法,分布式系统包括多个原子服务,该方法应用于多个原子服务中的各原子服务,该方法包括:接收调用方发送的第一调用请求;向调用方返回处理结果数据;在响应于第一调用请求生成了共享包数据的情况下,将共享包数据写入预设内存区域中;从预设内存区域读取共享包数据,并将读取的共享包数据发送至共享数据服务器。
在一个实施例中,第一调用请求包括跳转标识;相应的,在接收调用方发送的第一调用请求之后,还包括:确定跳转标识是否初始化;在确定跳转标识未初始化的情况下,对跳转标识进行初始化;在确定跳转标识已初始化的情况下,将跳转标识递增;相应的,在向调用方返回处理结果数据之后,还包括:将跳转标识和处理结果数据发送至共享数据服务器。
在一个实施例中,在将跳转标识和处理结果数据发送至共享数据服务器之后,还包括:共享数据服务器根据跳转标识和处理结果数据确定目标业务的执行结果。
在一个实施例中,在将跳转标识和处理结果数据发送至共享数据服务器之后,还包括:向下游原子服务发送第二调用请求,其中,第二调用请求中携带有跳转标识。
在一个实施例中,在接收调用方发送的第一调用请求之后,还包括:确定共享包计数器的值;相应的,在向调用方返回处理结果数据之后,包括:将共享包计数器的值返回至调用方;将共享包计数器的值发送至共享数据服务器。
在一个实施例中,确定共享包计数器的值,包括:根据本地是否生成共享包数据,确定初始值;根据初始值和接收到的下游原子服务返回的共享计数器的值,确定共享包计数器的值。
在一个实施例中,在将读取的共享包数据发送至共享数据服务器之后,还包括:共享数据服务器将接收到的共享包数据进行合并处理,得到共享数据;共享数据服务器对共享数据进行预设处理。
本申请实施例还提供了一种应用于分布式系统的数据处理装置,分布式系统包括多个原子服务,该装置位于多个原子服务中的各原子服务,包括:接收模块,用于接收调用方发送的第一调用请求;返回模块,用于向调用方返回处理结果数据;写入模块,用于在响应于第一调用请求生成了共享包数据的情况下,将共享包数据写入预设内存区域中;发送模块,用于从预设内存区域读取共享包数据,并将读取的共享包数据发送至共享数据服务器。
本申请实施例还提供一种计算机设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述任意实施例中所述的应用于分布式系统的数据处理方法的步骤。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现上述任意实施例中所述的应用于分布式系统的数据处理方法的步骤。
在本申请实施例中,提供了一种应用于分布式系统的数据处理方法,分布式系统用于执行目标业务,目标业务可以拆分为多个原子任务,分布式系统可以包括多个原子服务,各原子服务分别用于实现各原子任务,该方法应用于多个原子服务中的各原子服务,原子服务可以接收调用方发送的第一调用请求,向调用方返回处理结果数据,在响应于第一调用请求生成了共享包数据的情况下,可以将共享包数据写入预设内存区域中,可以从预设内存区域读取共享包数据,并将读取的共享包数据发送至共享数据服务器。上述方案中,在原子服务接收到调用请求时,若生成了共享包数据,则将共享包数据写入预设内存中,并在返回处理结果至调用方时触发从预设内存中读取共享包数据并发送至共享数据服务器,实现对原子服务无侵入性的消息截留能力,便于对分布式系统中各个原子服务产生的数据进行关联处理。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,并不构成对本申请的限定。在附图中:
图1示出了本申请一实施例中应用于分布式系统的数据处理方法的流程图;
图2示出了本申请一实施例中分布式系统的系统结构示意图;
图3示出了本申请一实施例中的应用于分布式系统的数据处理装置的示意图;
图4示出了本申请一实施例中的应用于分布式系统的数据处理方法的流程图;
图5示出了本申请一实施例中的应用于分布式系统的数据处理方法的流程图;
图6示出了本申请一实施例中的应用于分布式系统的数据处理方法的时序图;
图7示出了本申请一实施例中的应用于分布式系统的数据处理装置的示意图;
图8示出了本申请一实施例中的计算机设备的示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本申请的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本申请,而并非以任何方式限制本申请的范围。相反,提供这些实施方式是为了使本申请公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域的技术人员知道,本申请的实施方式可以实现为一种系统、装置设备、方法或计算机程序产品。因此,本申请公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
本申请实施例提供了一种应用于分布式系统的数据处理方法,分布式系统包括多个原子服务,方法应用于多个原子服务中的各原子服务。图1示出了本申请一实施例中应用于分布式系统的数据处理方法的流程图。虽然本申请提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本申请实施例描述及附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构连接进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至分布式处理环境)。
具体地,如图1所示,本申请一种实施例提供的应用于分布式系统的数据处理方法可以包括以下步骤:
步骤S101,接收调用方发送的第一调用请求。
本申请实施例中的方法应用于分布式系统。分布式系统可以用于执行目标业务。目标业务可以预先拆分为多个原子任务。分布式系统可以包括多个原子服务。各原子服务分别用于实现各原子任务。即,原子服务为分布式系统中用于实现原子任务的服务器。原子服务可以是单个服务器,也可以是服务器集群,还可以是云服务器,本申请对此不做限制。
本申请实施例中的方法可以应用于分布式系统中的各原子服务。原子服务可以接收调用方发送的第一调用请求。其中,调用方可以是分布式系统中位于该原子服务上游的原子服务。调用方也可以是渠道侧,即请求执行目标业务的客户端或者服务器。在一个实施例中,第一调用请求中可以包括目标业务的业务编号等数据。
步骤S102,向调用方返回处理结果数据。
原子服务在接收到第一调用请求之后,可以执行该原子服务对应的原子任务,生成处理结果数据。在一个实施例中,处理结果数据可以包括目标业务的业务编号、原子任务的执行结果(例如,成功或失败标识)、失败原因等数据。之后,原子服务可以向调用方返回处理结果数据。
请参考图2,示出了本申请一实施例中分布式系统的系统结构示意图。如图2所示,分布式系统可以包括原子服务A至原子服务E。渠道侧可以向原子服务A发送调用请求,原子服务A可以调用原子服务B和C,原子服务B可以调用原子服务D和E,原子服务D和E可以向原子服务B返回处理结果数据,原子服务B和C可以向原子服务A返回处理结果数据,原子服务A可以向渠道侧返回处理结果数据,从而实现目标业务。
步骤S103,在响应于第一调用请求生成了共享包数据的情况下,将共享包数据写入预设内存区域中。
原子服务在接收到第一调用请求时,可以执行该原子服务对应的原子任务,该原子任务可以生成或者不生成共享包数据。其中,共享包数据可以是需要进行关联处理的数据。在该原子服务响应于第一调用请求生成共享包数据的情况下,可以将共享包数据写入预设内存区域中。其中,预设内存区域可以是该原子服务本地的内存区域。
步骤S104,从预设内存区域读取共享包数据,并将读取的共享包数据发送至共享数据服务器。
在原子服务向调用方返回处理结果数据的情况下,可以触发从预设内存区域读取共享包数据,并将读取到的共享包数据发送至共享数据服务器,以便于共享数据服务器对分布式系统中各原子服务生成的数据进行关联处理。
上述实施例中的方法中,在原子服务接收到调用请求时,若生成了共享包数据,则将共享包数据写入预设内存中,并在返回处理结果至调用方时触发从预设内存中读取共享包数据并发送至共享数据服务器,以便于对分布式系统中各个原子服务产生的数据进行关联处理。
在本申请一些实施例中,第一调用请求可以包括跳转标识;相应的,在接收调用方发送的第一调用请求之后,还可以包括:确定跳转标识是否初始化;在确定跳转标识未初始化的情况下,对跳转标识进行初始化;在确定跳转标识已初始化的情况下,将跳转标识递增;相应的,在向调用方返回处理结果数据之后,还可以包括:将跳转标识和处理结果数据发送至共享数据服务器。
具体地,第一调用请求中可以包括跳转标识。其中,跳转标识可以用于表征原子服务所在的层级。例如,渠道侧发送至第一层级原子服务(例如,图2中的原子服务A)的第一调用请求中可以携带有未初始化的跳转标识。上游原子服务发送至下游原子服务的调用请求中可以携带有初始化后的跳转标识。在一原子服务接收到调用请求之后,可以确定该调用请求中的跳转标识是否已初始化。在确定跳转标识未初始化的情况下,可以对跳转标识进行初始化,例如可以将跳转标识初始化为0。在确定跳转标识已进行初始化的情况下,可以将跳转标识进行递增,例如加1。在原子服务向调用方返回处理结果数据的情况下,可以触发将跳转标识和处理结果数据发送至共享数据服务器。上述方式中,通过在调用请求中携带跳转标识,可以方便地了解当前原子服务的层级,此外,将跳转标识和处理结果数据发送至共享数据服务器,可以便于共享数据服务器确定各层级原子服务的任务执行结果。
在本申请一些实施例中,在将跳转标识和处理结果数据发送至共享数据服务器之后,还可以包括:共享数据服务器根据跳转标识和处理结果数据确定目标业务的执行结果。
具体地,在各原子服务将跳转标识和处理结果数据发送至共享数据服务器之后,共享数据服务器可以根据接收到的跳转标识和处理结果数据确定目标业务的执行结果。具体地,共享数据服务器可以根据作为头节点的原子服务的处理结果数据来确定目标业务的最终执行结果。共享数据服务器可以发送的跳转标识为0的原子服务发送的处理结果数据来确定目标业务的最终执行结果。通过上述方式,共享数据服务器在接收到多个处理结果数据时可以方便快捷地确定目标业务的执行结果。
在本申请一些实施例中,在将跳转标识和处理结果数据发送至共享数据服务器之后,还可以包括:向下游原子服务发送第二调用请求,其中,第二调用请求中携带有跳转标识。
请继续参考图2,上游原子服务可以向下游原子服务发送调用请求。例如,服务A可以向下游原子服务B和C发送调用请求,原子服务B可以向下游原子服务D和E发送调用请求。调用请求中可以携带有跳转标识。对于原子服务A,可以对跳转标识进行初始化,初始化为0。对于原子服务B和C,可以将接收到的跳转标识递增1,即跳转标识均为1。对于服务D和E,可以将接收到的跳转标识递增1,即跳转标识均为2。通过向下游原子服务发送调用请求,可以通过服务组合调用来实现目标业务的执行,在调用请求中携带跳转标识,可以便于表征当前原子服务的层级。
在本申请一些实施例中,在接收调用方发送的第一调用请求之后,还可以包括:确定共享包计数器的值;相应的,在向调用方返回处理结果数据之后,可以包括:将共享包计数器的值返回至调用方;将共享包计数器的值发送至共享数据服务器。
具体地,各原子服务可以统计本地以及下游原子服务生成的共享包数据的数目。各原子服务可以确定共享包计数器的值,并将共享包计数器的至返回给调用方,并发送至共享数据服务器。通过上述方式,可以便于调用方统计本地以及下游原子服务生成的共享包数据的数目,便于共享包数据确定接收到的共享包数据的数目,并可以根据共享包计数器的值对接收到的共享包数据进行处理。
在本申请一些实施例中,确定共享包计数器的值,可以包括:根据本地是否生成共享包数据,确定初始值;根据初始值和接收到的下游原子服务返回的共享包计数器的值,确定共享包计数器的值。
具体地,各原子服务可以根据本地是否生成共享包数据来确定初始值。例如,若本地生成了共享包数据,则可以确定初始值为1,若本地未生成共享包数据,则可以确定初始值为0。各原子服务可以接收下游原子服务返回的共享包计数器的值。例如,请继续参考图2,原子服务D生成了共享包数据且不存在下游原子服务,则原子服务D的共享包计数器的值为1。原子服务E未生成共享包数据并且不存在下游原子服务,则原子服务E的共享包计数器的值为0。原子服务D和E分别将各自的共享包计数器返回给原子服务B。原子服务B生成了共享包数据并且接收到了下游原子服务D和E返回的共享包计数器,因此原子服务B的共享包计数器为1+0+1=2。通过上述方式,可以方便地统计统计本地以及下游原子服务生成的共享包数据的数目。
在本申请一些实施例中,在将读取的共享包数据发送至共享数据服务器之后,还可以包括:共享数据服务器将接收到的共享包数据进行合并处理,得到共享数据;共享数据服务器对共享数据进行预设处理。
具体地,在各原子服务将本地生成的贡献报数据发送至共享数据服务器之后,共享数据服务器可以将接收到的共享包数据进行合并处理,得到执行目标业务过程中生成的共享数据。之后,恭喜数据服务器可以对共享数据进行预设处理。其中,共享数据服务器可以是增值服务平台。预设处理可以包括各种增值业务,例如,动账提醒、增值营销和风险监控等。通过上述方式,共享数据服务器可以基于接收到的共享包数据进行预设处理,实现增值业务。
请参考图3至图6,下面结合一个具体实施例对上述方法进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。
在本具体实施例中,将应用于分布式系统的数据处理方法看作成由提供者拦截器和消费者拦截器执行。原子服务上部署有提供者拦截器和消费者拦截器。其中,提供者拦截器在接收到调用请求时以及向调用方返回处理结果数据时被触发,消费者拦截器在发送调用请求以及接收到下游原子服务返回的处理结果数据时被触发。
请参考图3,原子服务上可以部署有提供者拦截器和消费者拦截器,本具体实施例中的数据处理方法可以应用于提供者拦截器和消费者拦截器。
在整个交易调用链路之内,会在传输过程中附加两个控制字段:跳转标识start和共享包计数器count。跳转标识start可以用于判断交易的主事务服务。共享包计数器count可以表示交易链路上所产生的共享包数量。最终每个服务的共享数据将汇总至增值服务平台,以将整笔交易的共享包数据进行合并。
在上行数据流中,提供者拦截器在原子服务接收调用请求时被触发,可以从本地内存RpcContext中获取跳转标识start,并给跳转标识start赋值。跳转标识start用于判断交易的主事务服务。原子服务在交易处理过程中触发了共享包写入操作,则会将共享包数据写入本服务的一块内存区域ThreadContext中。在下行数据流中,提供者拦截器在服务返回处理结果时被触发,提供者拦截器从本地内存ThreadContext中获取共享包数据,计算出本地共享包数量计数器的值,并获取到部署于服务上的消费者拦截器获取到的来自下游服务计数器的值,计算出计数器总和count,放入本地内存RpcResult中,并将共享包数据、计数器总和全部发送至增值服务平台。
在上行数据流中,消费者拦截器在原子服务发送调用请求时被触发,消费者拦截器负责将跳转标识start放入本地内存RpcContext中,随着调用发生传送至被调用原子服务处,并会触发部署于被调用原子服务上的提供者拦截器。在下行数据流中,消费者拦截器在原子服务接收返回结果时被触发,从RpcResult中获取各个下游服务的共享包计数器count。
请参考图4,示出了本申请一实施例中的应用于分布式系统的数据处理方法的流程图。具体地,图4示出了应用于提供者拦截器的数据处理方法的流程图。如图4所示,应用于提供者拦截器的数据处理方法可以包括以下步骤。
步骤S401,在上行数据流中,提供者拦截器在接收调用请求时被触发,从本地内存RpcContext中获取跳转标识start。
步骤S402,判断跳转标识start是否初始化,若跳转标识start为空,表示未初始化,则执行步骤S403;否则执行步骤S404。
步骤S403,初始化跳转标识start的值为0。
步骤S404,将跳转标识start增1。
步骤S405,在下行数据流中,提供者拦截器在返回服务结果时被触发,从本地内存ThreadContext中获取共享包数据,计算出本地原子服务的共享包计数器与下游服务的共享包计数器的计数器总和count,放入本地内存RpcResult中。
步骤S106:将共享包数据、跳转标识start和计数器总和count发送至增值服务平台。
请参考图5,示出了本申请一实施例中的应用于分布式系统的数据处理方法的流程图。具体地,图5示出了应用于消费者拦截器的数据处理方法的流程图。如图5所示,应用于消费者拦截器的数据处理方法可以包括以下步骤。
步骤S501,在上行数据流中,消费者拦截器在服务发送调用请求时被触发,消费者拦截器负责将跳转标识start放入本地内存RpcContext中,随着调用发生传送至被调用原子服务处,并会触发部署于被调用原子服务上的提供者拦截器。
步骤S502,在下行数据流中,消费者拦截器在原子服务接收返回结果时被触发,从本地内存RpcResult中获取各个下游原子服务的计数器count。
请参考图6,示出了本申请一实施例中的应用于分布式系统的数据处理方法的时序图。具体地,在图6中,按照一笔交易的实施例进行详细说明。如图6所示,在上行数据流中,可以包括以下步骤。
(1)渠道侧发起交易初次调用主事务服务(即原子服务A)时,部署于原子服务A的提供者拦截器被触发,此时其将负责初始化跳转标识start的值为0。
(2)原子服务A在调用原子服务B时,会触发部署于原子服务A上的消费者拦截器,此时消费者拦截器会负责将跳转标识start放入RpcContext中,随着调用发生传送至原子服务B处,并会触发部署于原子服务B上的提供者拦截器。原子服务B的提供者拦截器将从RpcContext中获取到跳转标识start,并将其递增加1。
(3)原子服务B在调用原子服务D时,会触发部署于原子服务B上的消费者拦截器,此时消费者拦截器会负责将值已经更新为1的跳转标识start放入RpcContext中,随着调用发送传送至原子服务D处,并会触发部署于原子服务D上的提供者拦截器。原子服务D的提供者拦截器将从RpcContext中获取到跳转标识start,并将其递增加1。
(4)以此类推,在上行数据流中,每个服务都将拥有属于自身的一个跳转标识,原子服务A为0,代表整个数据链路的开始,原子服务B和C为1,原子服务D和E为2。
如图6所示,在下行数据流中,可以包括以下步骤。
(1)原子服务D、原子服务E在交易处理过程中触发了共享包写入操作,此时会将共享包数据写入本服务的一块内存区域ThreadContext中。在原子服务D将处理结果返回至原子服务B时,会触发部署于原子服务D上的提供者拦截器。原子服务D的提供者拦截器将从ThreadContext中获取到共享包数据,在RpcResult中置计数器count=1,并将共享包数据、计数器与处理结果全部发送至增值服务平台。处理结果可以包含交易编号、交易的成功失败标志、失败原因等数据。
(2)原子服务B在接收到来自原子服务D、原子服务E返回的结果数据时,将触发部署于原子服务B上的消费者拦截器,并从RpcResult中各自获取到来自原子服务D和原子服务E的计数器count皆为1。
(3)原子服务B在交易处理过程中也触发了共享包写入操作,在原子服务B将处理结果返回至原子服务A时,会触发部署于原子服务B上的提供者拦截器。原子服务B的提供者拦截器将获取到共享包数据,并获取到部署于原子服务B上的消费者拦截器获取到的来自原子服务D和原子服务E的两个共享包计数器,进行累加运算得出新的计数器总和count=countD+countE+countB=1+1+1=3,在RpcResult中置计数器count=3,并将共享包数据、计数器与处理结果全部至增值服务平台。
(4)以此类推,在下行数据流中,最终交易处理完毕后,由主事务服务(即原子服务A)在返回交易发起方(即渠道侧)交易结果时,将会触发部署于原子服务A上的提供者拦截器,并将计数器count、跳转标识start、处理结果全部至增值服务平台。增值服务平台将根据计数器count对整笔交易链路上各个原子服务产生的共享包进行合并组装,根据跳转标识start判断主事务服务并根据主事务服务的处理结果判断交易的最终执行结果。
上述实施例中的方法,在各原子服务上部署提供者拦截器和消费者拦截器,提供者拦截器在原子服务接收调用请求时被触发,可以获取跳转标识并进行赋值,若原子服务在交易处理过程中触发了共享包写入操作,则会将共享包数据写入本服务的一块内存区域中,在下行数据流中,提供者拦截器在服务返回处理结果时被触发,提供者拦截器计算出共享包计数器总和,并将共享包数据、跳转标识、共享包计数器总和发送至增值服务平台。通过上述方案,在从集中式系统向分布式系统转型的过程中,通过在各原子服务部署提供者拦截器和消费者拦截器,实现对原子服务无侵入性的消息截留能力,将共享数据纳入增值服务平台,便于在一笔交易链路上的各个原子服务产生的数据进行关联处理。
基于同一发明构思,本申请实施例中还提供了一种应用于分布式系统的数据处理装置,如下面的实施例所述。由于应用于分布式系统的数据处理装置解决问题的原理与应用于分布式系统的数据处理方法相似,因此应用于分布式系统的数据处理装置的实施可以参见应用于分布式系统的数据处理方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图7是本申请实施例的应用于分布式系统的数据处理装置的一种结构框图,如图7所示,包括:接收模块701、返回模块702、写入模块703和发送模块704,下面对该结构进行说明。
接收模块701用于接收调用方发送的第一调用请求。
返回模块702用于向调用方返回处理结果数据。
写入模块703用于在响应于第一调用请求生成了共享包数据的情况下,将共享包数据写入预设内存区域中。
发送模块704用于从预设内存区域读取共享包数据,并将读取的共享包数据发送至共享数据服务器。
在本申请一些实施例中,第一调用请求可以包括跳转标识;相应的,该装置还可以包括第一确定模块,第一确定模块可以用于:在接收调用方发送的第一调用请求之后,确定跳转标识是否初始化;在确定跳转标识未初始化的情况下,对跳转标识进行初始化;在确定跳转标识已初始化的情况下,将跳转标识递增;在向调用方返回处理结果数据之后,将跳转标识和处理结果数据发送至共享数据服务器。
在本申请一些实施例中,在第一确定模块将跳转标识和处理结果数据发送至共享数据服务器之后,共享数据服务器可以根据跳转标识和处理结果数据确定目标业务的执行结果。
在本申请一些实施例中,该装置还包括调用模块,调用模块可以用于:在将跳转标识和处理结果数据发送至共享数据服务器之后,向下游原子服务发送第二调用请求,其中,第二调用请求中携带有跳转标识。
在本申请一些实施例中,该装置还可以包括第二确定模块,第二确定模块可以用于:在接收调用方发送的第一调用请求之后,确定共享包计数器的值;在向调用方返回处理结果数据之后,将共享包计数器的值返回至调用方;将共享包计数器的值发送至共享数据服务器。
在本申请一些实施例中,确定共享包计数器的值,可以包括:根据本地是否生成共享包数据,确定初始值;根据初始值和接收到的下游原子服务返回的共享计数器的值,确定共享包计数器的值。
在本申请一些实施例中,在发送模块将读取的共享包数据发送至共享数据服务器之后,共享数据服务器可以将接收到的共享包数据进行合并处理,得到共享数据;共享数据服务器可以对共享数据进行预设处理。
从以上的描述中,可以看出,本申请实施例实现了如下技术效果:提供了一种应用于分布式系统的数据处理方法和装置,分布式系统用于执行目标业务,目标业务可以拆分为多个原子任务,分布式系统可以包括多个原子服务,各原子服务分别用于实现各原子任务,各原子服务可以接收调用方发送的第一调用请求,向调用方返回处理结果数据,在响应于第一调用请求生成了共享包数据的情况下,可以将共享包数据写入预设内存区域中,可以从预设内存区域读取共享包数据,并将读取的共享包数据发送至共享数据服务器。上述方案中,在原子服务接收到调用请求时,若生成了共享包数据,则将共享包数据写入预设内存中,并在返回处理结果至调用方时触发从预设内存中读取共享包数据并发送至共享数据服务器,实现对原子服务无侵入性的消息截留能力,便于对分布式系统中各个原子服务产生的数据进行关联处理。
本申请实施方式还提供了一种计算机设备,具体可以参阅图8所示的基于本申请实施例提供的应用于分布式系统的数据处理方法的计算机设备组成结构示意图,所述计算机设备具体可以包括输入设备81、处理器82、存储器83。其中,所述存储器83用于存储处理器可执行指令。所述处理器82执行所述指令时实现上述任意实施例中所述的应用于分布式系统的数据处理方法的步骤。
在本实施方式中,所述输入设备具体可以是用户和计算机系统之间进行信息交换的主要装置之一。所述输入设备可以包括键盘、鼠标、摄像头、扫描仪、光笔、手写输入板、语音输入装置等;输入设备用于把原始数据和处理这些数的程序输入到计算机中。所述输入设备还可以获取接收其他模块、单元、设备传输过来的数据。所述处理器可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。所述存储器具体可以是现代信息技术中用于保存信息的记忆设备。所述存储器可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。
在本实施方式中,该计算机设备具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
本申请实施方式中还提供了一种基于应用于分布式系统的数据处理方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现上述任意实施例中所述应用于分布式系统的数据处理方法的步骤。
在本实施方式中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
在本实施方式中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
应该理解,以上描述是为了进行图示说明而不是为了进行限制。通过阅读上述描述,在所提供的示例之外的许多实施方式和许多应用对本领域技术人员来说都将是显而易见的。因此,本申请的范围不应该参照上述描述来确定,而是应该参照前述权利要求以及这些权利要求所拥有的等价物的全部范围来确定。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请实施例可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种应用于分布式系统的数据处理方法,其特征在于,所述分布式系统包括多个原子服务,所述方法应用于所述多个原子服务中的各原子服务,包括:
接收调用方发送的第一调用请求;
向所述调用方返回处理结果数据;
在响应于所述第一调用请求生成了共享包数据的情况下,将所述共享包数据写入预设内存区域中;
从所述预设内存区域读取所述共享包数据,并将读取的所述共享包数据发送至共享数据服务器。
2.根据权利要求1所述的方法,其特征在于,所述第一调用请求包括跳转标识;
相应的,在接收调用方发送的第一调用请求之后,还包括:
确定所述跳转标识是否初始化;
在确定所述跳转标识未初始化的情况下,对所述跳转标识进行初始化;
在确定所述跳转标识已初始化的情况下,将所述跳转标识递增;
相应的,在向所述调用方返回处理结果数据之后,还包括:
将所述跳转标识和所述处理结果数据发送至所述共享数据服务器。
3.根据权利要求2所述的方法,其特征在于,在将所述跳转标识和所述处理结果数据发送至所述共享数据服务器之后,还包括:
所述共享数据服务器根据所述跳转标识和所述处理结果数据确定目标业务的执行结果。
4.根据权利要求2所述的方法,其特征在于,在将所述跳转标识和所述处理结果数据发送至所述共享数据服务器之后,还包括:
向下游原子服务发送第二调用请求,其中,所述第二调用请求中携带有所述跳转标识。
5.根据权利要求1所述的方法,其特征在于,在接收调用方发送的第一调用请求之后,还包括:
确定共享包计数器的值;
相应的,在向所述调用方返回处理结果数据之后,包括:
将所述共享包计数器的值返回至所述调用方;
将所述共享包计数器的值发送至所述共享数据服务器。
6.根据权利要求5所述的方法,其特征在于,确定共享包计数器的值,包括:
根据本地是否生成共享包数据,确定初始值;
根据所述初始值和接收到的下游原子服务返回的共享包计数器的值,确定共享包计数器的值。
7.根据权利要求1所述的方法,其特征在于,在将读取的所述共享包数据发送至共享数据服务器之后,还包括:
所述共享数据服务器将接收到的共享包数据进行合并处理,得到共享数据;
所述共享数据服务器对所述共享数据进行预设处理。
8.一种应用于分布式系统的数据处理装置,其特征在于,所述分布式系统包括多个原子服务,所述装置位于所述多个原子服务中的各原子服务,包括:
接收模块,用于接收调用方发送的第一调用请求;
返回模块,用于向所述调用方返回处理结果数据;
写入模块,用于在响应于所述第一调用请求生成了共享包数据的情况下,将所述共享包数据写入预设内存区域中;
发送模块,用于从所述预设内存区域读取所述共享包数据,并将读取的所述共享包数据发送至共享数据服务器。
9.一种计算机设备,其特征在于,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述指令被执行时实现权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110168115.1A CN112995301B (zh) | 2021-02-07 | 2021-02-07 | 应用于分布式系统的数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110168115.1A CN112995301B (zh) | 2021-02-07 | 2021-02-07 | 应用于分布式系统的数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112995301A true CN112995301A (zh) | 2021-06-18 |
CN112995301B CN112995301B (zh) | 2023-03-10 |
Family
ID=76348851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110168115.1A Active CN112995301B (zh) | 2021-02-07 | 2021-02-07 | 应用于分布式系统的数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112995301B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110246726A1 (en) * | 2010-04-06 | 2011-10-06 | Joerg Kessler | Processing data in shared memory |
US20150169455A1 (en) * | 2013-12-12 | 2015-06-18 | International Business Machines Corporation | Efficient Distributed Cache Consistency |
CN107992270A (zh) * | 2017-12-15 | 2018-05-04 | 杭州宏杉科技股份有限公司 | 一种多控存储系统全局共享缓存的方法及装置 |
CN110287252A (zh) * | 2019-06-27 | 2019-09-27 | 南方电网科学研究院有限责任公司 | 一种数据安全防护系统 |
CN110417899A (zh) * | 2019-07-31 | 2019-11-05 | 中国工商银行股份有限公司 | 主机与平台服务器的通讯方法及系统 |
CN111401752A (zh) * | 2020-03-18 | 2020-07-10 | 北京泓慧国际能源技术发展有限公司 | 一种飞轮储能调频共享处理方法、装置、系统及电子设备 |
CN111709731A (zh) * | 2020-06-18 | 2020-09-25 | 深圳前海微众银行股份有限公司 | 一种交易处理方法及装置 |
CN112199048A (zh) * | 2020-10-20 | 2021-01-08 | 重庆紫光华山智安科技有限公司 | 数据读取方法、系统、设备及介质 |
-
2021
- 2021-02-07 CN CN202110168115.1A patent/CN112995301B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110246726A1 (en) * | 2010-04-06 | 2011-10-06 | Joerg Kessler | Processing data in shared memory |
US20150169455A1 (en) * | 2013-12-12 | 2015-06-18 | International Business Machines Corporation | Efficient Distributed Cache Consistency |
CN107992270A (zh) * | 2017-12-15 | 2018-05-04 | 杭州宏杉科技股份有限公司 | 一种多控存储系统全局共享缓存的方法及装置 |
CN110287252A (zh) * | 2019-06-27 | 2019-09-27 | 南方电网科学研究院有限责任公司 | 一种数据安全防护系统 |
CN110417899A (zh) * | 2019-07-31 | 2019-11-05 | 中国工商银行股份有限公司 | 主机与平台服务器的通讯方法及系统 |
CN111401752A (zh) * | 2020-03-18 | 2020-07-10 | 北京泓慧国际能源技术发展有限公司 | 一种飞轮储能调频共享处理方法、装置、系统及电子设备 |
CN111709731A (zh) * | 2020-06-18 | 2020-09-25 | 深圳前海微众银行股份有限公司 | 一种交易处理方法及装置 |
CN112199048A (zh) * | 2020-10-20 | 2021-01-08 | 重庆紫光华山智安科技有限公司 | 数据读取方法、系统、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112995301B (zh) | 2023-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3637733B1 (en) | Load balancing engine, client, distributed computing system, and load balancing method | |
US5883939A (en) | Distributed architecture for an intelligent networking coprocessor | |
AU711393B2 (en) | A method and apparatus for client managed flow control on a limited memory computer system | |
CN111901249B (zh) | 业务限流方法、装置、设备及存储介质 | |
JP2021521544A (ja) | 取引処理 | |
US7894347B1 (en) | Method and apparatus for packet scheduling | |
CN111149325A (zh) | 用于选择区块链事务的事务选择设备 | |
US10027559B1 (en) | Customer defined bandwidth limitations in distributed systems | |
CN104866339A (zh) | Fota数据的分布式持久化管理方法、系统和装置 | |
CN108111333A (zh) | 一种基于web的流量限制方法及系统 | |
CN108304272B (zh) | 一种数据io请求的处理方法及装置 | |
CN111260475A (zh) | 一种数据处理方法、区块链节点设备及存储介质 | |
CN107155403B (zh) | 一种生命周期事件的处理方法及vnfm | |
CN111311254A (zh) | 一种基于区块链的业务处理方法、装置和系统 | |
CN108259595A (zh) | 一种服务间异步调用的方法及系统 | |
US20180115498A1 (en) | Systems and methods for adaptive credit-based flow | |
CN113055493B (zh) | 数据包处理方法、装置、系统、调度设备和存储介质 | |
CN112260962B (zh) | 一种带宽控制方法及装置 | |
CN107426012B (zh) | 一种基于超融合架构的故障恢复方法及其装置 | |
CN112995301B (zh) | 应用于分布式系统的数据处理方法和装置 | |
US6510214B1 (en) | System and method of detecting overload in a service control point of a telecommunications network | |
CN116250223A (zh) | 使用两层强化学习模型的边缘集群的过载保护 | |
CN110162415B (zh) | 用于处理数据请求的方法、服务器、装置及存储介质 | |
CN113886082A (zh) | 请求处理方法、装置、计算设备及介质 | |
CN103703744A (zh) | 用于传送属于多个sip会话的状态信息的方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |