CN109597699A - 数据处理方法、装置、电子设备及计算机可读介质 - Google Patents
数据处理方法、装置、电子设备及计算机可读介质 Download PDFInfo
- Publication number
- CN109597699A CN109597699A CN201811434997.6A CN201811434997A CN109597699A CN 109597699 A CN109597699 A CN 109597699A CN 201811434997 A CN201811434997 A CN 201811434997A CN 109597699 A CN109597699 A CN 109597699A
- Authority
- CN
- China
- Prior art keywords
- distributed
- processing
- offset data
- processing unit
- data
- 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
Classifications
-
- 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/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本公开涉及一种分布式系统的任务处理方法、装置、电子设备及计算机可读介质。所述分布式系统包括多个分布式处理单元,其特征在于,包括:分布式处理系统将任务请求分配给对应的分布式处理单元进行处理;在分布式处理单元处理异常时,获取所述分布式处理单元的补偿数据;基于所述补偿数据通过异步调用的方式对所述分布式处理单元进行补偿处理,并获取处理结果;以及分布式处理系统根据所述处理结果继续执行所述任务请求。本公开涉及的分布式系统的任务处理方法、装置、电子设备及计算机可读介质,能够提高分布式系统中,批处理程序的执行效率,提高整个分布式系统的处理效率。
Description
技术领域
本公开涉及计算机信息处理领域,具体而言,涉及一种分布式系统的任务处理方法、装置、电子设备及计算机可读介质。
背景技术
分布式系统(distributed system)是建立在网络之上的软件系统。分布式操作系统是以全局方式管理系统资源的,它可以为用户任意调度网络资源,并且调度过程是“透明”的。当用户提交一个作业时,分布式操作系统能够根据需要在系统中选择最合适的处理器,将用户的作业提交到该处理程序,在处理器完成作业后,将结果传给用户。在这个过程中,用户并不会意识到有多个处理器的存在,这个系统就像是一个处理器一样。
用户可以通过分布式系统,将一个复杂的任务拆解为多个子任务分别执行。传统单机应用一般都会使用一个关系型数据库,好处是应用调用的数据可以一直保持一致性。在单机应用中为保证一致性只需要:开始一个事务,改变(插入,删除,更新)很多行,然后提交事务(如果有异常时回滚事务)。更进一步,借助开发平台中的数据访问技术和框架,我们需要做的事情更少,只需要关注数据本身的改变。分布式业务由于涉及不同的子任务分别处理数据,单机应用和数据库已经不足以支持庞大的业务量和数据量,这个时候需要对应用和数据库进行拆分,就出现了一个应用需要同时访问两个或两个以上的数据库情况。当多个子任务重的某一个子任务出现事务故障时,整个分布式系统如何处理,才能保证在分布式系统中的数据一致性是目前急需解决的问题。
因此,需要一种新的分布式系统的任务处理方法、装置、电子设备及计算机可读介质。
在所述背景技术部分公开的上述信息仅用于加强对本公开的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
有鉴于此,本公开提供一种分布式系统的任务处理方法、装置、电子设备及计算机可读介质,能够提高分布式系统中,批处理程序的执行效率,提高整个分布式系统的处理效率。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一方面,提出一种分布式系统的任务处理方法,所述分布式系统包括多个分布式处理单元,该方法包括:分布式处理系统将任务请求分配给对应的分布式处理单元进行处理;在分布式处理单元处理异常时,获取所述分布式处理单元的补偿数据;基于所述补偿数据通过异步调用的方式对所述分布式处理单元进行补偿处理,并获取处理结果;以及分布式处理系统根据所述处理结果继续执行所述任务请求。
在本公开的一种示例性实施例中,在分布式处理单元处理异常时,获取所述分布式处理单元的补偿数据包括:
在分布式处理单元中执行方法函数异常时,根据方法名称与补偿表获取所述分布式处理单元的所述补偿数据。
在本公开的一种示例性实施例中,根据方法名称与补偿表获取所述分布式处理单元的所述补偿数据包括:通过批处理方式轮询所述补偿表,以根据方法名称与补偿表获取所述补偿数据。
在本公开的一种示例性实施例中,基于所述补偿数据通过异步调用的方式对所述分布式处理单元进行补偿处理包括:通过配置文件获取异常的方法名称;将所述方法名称与所述补偿数据进行封装,生成封装数据;以及基于所述封装数据通过异步调用的方式对所述分布式处理单元进行补偿处理。
在本公开的一种示例性实施例中,基于所述封装数据通过异步调用的方式对所述分布式处理单元进行补偿处理包括:将所述封装数据通过异步调用的方式发送给补偿接口;以及所述补偿接口通过观察者模式对异常的方法函数进行重新调用。
在本公开的一种示例性实施例中,所述补偿接口通过观察者模式对异常的方法函数进行重新调用包括:补偿接口将所述封装数据赋值给异常的方法函数;以及异常的方法函数根据所述封装数据重新执行。
在本公开的一种示例性实施例中,基于所述补偿数据通过异步调用的方式对所述分布式处理单元进行补偿处理,并获取处理结果包括:基于所述补偿数据通过异步调用的方式对所述分布式处理单元进行补偿处理,生成补偿结果和\或补偿状态;以及通过所有需进行补偿处理的分布式处理单元的补偿结果和\或补偿状态生成处理结果。
在本公开的一种示例性实施例中,获取所述分布式处理单元的补偿数据后还包括:判断所述补偿数据是否被锁定;在所述补偿数据被锁定时,跳过所述补偿数据;以及在所述补偿数据未被锁定时,锁定所述补偿数据。
在本公开的一种示例性实施例中,分布式处理系统根据所述处理结果继续执行所述任务请求包括:根据补偿状态确定补偿处理是否成功;以及在补偿处理成功时,解锁所述补偿数据。
在本公开的一种示例性实施例中,分布式处理系统根据所述处理结果继续执行所述任务请求还包括:在补偿处理不成功时,判断所述补偿数据被调用次数是否大于阈值;在被调用次数大于阈值时,将所述补偿数据状态设置为失败;以及在被调用次数小于等于阈值时,解锁所述补偿数据。
根据本公开的一方面,提出一种分布式系统的任务处理装置,所述分布式系统包括多个分布式处理单元,该方法包括:应用模块,用于将任务请求分配给对应的分布式处理单元进行处理;数据模块,用于在分布式处理单元处理异常时,获取所述分布式处理单元的补偿数据;补偿模块,用于基于所述补偿数据通过异步调用的方式对所述分布式处理单元进行补偿处理,并获取处理结果;以及执行模块,用于根据所述处理结果继续执行所述任务请求。
根据本公开的一方面,提出一种电子设备,该电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上文的方法。
根据本公开的一方面,提出一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上文中的方法。
根据本公开的分布式系统的任务处理方法、装置、电子设备及计算机可读介质,能够提高分布式系统中,批处理程序的执行效率,提高整个分布式系统的处理效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
通过参照附图详细描述其示例实施例,本公开的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本公开的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中分布式系统的任务处理方法的流程图。
图2是根据一示例性实施例示出的一种分布式系统的任务处理方法及装置的系统框图。
图3是根据一示例性实施例示出的一种分布式系统的任务处理方法的流程图。
图4是根据另一示例性实施例示出的一种分布式系统的任务处理方法的示意图。
图5是根据另一示例性实施例示出的一种分布式系统的任务处理方法的流程图。
图6是根据一示例性实施例示出的一种分布式系统的任务处理装置的框图。
图7是根据一示例性实施例示出的一种电子设备的框图。
图8是根据一示例性实施例示出一种计算机可读存储介质示意图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本公开概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本公开所必须的,因此不能用于限制本公开的保护范围。
微服务是分布式系统中的一种,微服务架构是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。在本公开中,以微服务为例,详细描述一种分布式系统的任务处理方法及装置的具体实现过程。
目前,在处理微服务分布式事务问题时,一般有两个解决思路,一种是事务回滚,一种是补偿。事务回滚即当系统出现异常时,将前面所有操作回滚掉到初始状态,下次操作再重头开始执行;补偿机制即不回滚前面的操作,而是记录操作轨迹,通过重推或补偿的方式断续执行,对于微服务架构来说,一个微服务的子模块回滚前面的操作可能会带来整个微服务系统的时间的冗余浪费,所以目前通常采取补偿的方式来处理事务问题。
补偿模式使用一个额外的协调服务来协调各个需要保证一致性的微服务,协调服务按顺序调用各个微服务,如果某个微服务调用异常(包括业务异常和技术异常)就取消之前所有已经调用成功的微服务。
现有的微服务的补偿技术方案,如图1所示:
(1)当某一方法发生异常时记录补偿表;
(2)补偿批处理根据方法名和状态轮询补偿表获取待补偿数据;
(3)通过redis数据库判断每一条数据的uid的锁状态,如果被锁,则直接跳过,如果未被锁则先加redis锁(加锁目的是防止该数据被重复使用);
(4)通过入参直接调用待补偿方法进行补偿,并等待返回结果;
(5)判断返回结果成功或失败,如果成功则将该条数据状态置为成功,并通过redis解锁该条数据;如果失败则将该条数据的调用次数字段加1,并判断如果大于或等于5,则将该条数据状态置为失败(防止重复处理失败数据),解锁redis;如果次数小于5,则不修改该条数据状态,同时解锁redis,等待下次补偿。
其中,redis是一个key-value存储系统。它支持存储的键值的类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set有序集合)和hash(哈希类型)。Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
现有的微服务系统的补偿机制的缺点如下:
(1)不同的方法函数重复定义补偿流程,造成代码冗余,和很大的开发工作量;
(2)批处理直接调待补偿的方法,并等待返回结果,使批处理的压力增大,且补偿效率低。
有鉴于以上的技术缺陷,本公开提出了一种分布式系统的任务处理方法及装置,能够解决以上技术问题,提高批处理服务程序的执行效率,提高了整体微服务系统的处理效率。
下面结合具体的实施例对本申请的内容进行详细描述:
图2是根据一示例性实施例示出的一种分布式系统的任务处理方法及装置的系统框图。
如图2所示,系统架构200可以包括微服务单元201、202、203,网络204和调度服务器205。网络204用以在微服务单元201、202、203和服务器205之间提供通信链路的介质。网络204可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
微服务单元201、202、203通过网络204与调度服务器205交互,以接收或发送消息等。微服务单元201、202、203上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
微服务单元201、202、203可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。微服务单元201、202、203可以是不具备实体形式的虚拟计算单元,可运行在一个或多个电子设备中。
调度服务器205可以是提供各种服务的服务器,例如通过调度微服务单元201、202、203以进行任务处理。服务器205可以对接收到的任务请求进行处理,分解为多个子任务,然后将子任务分配给微服务单元201、202、203处理,调度服务器205还能够收集任务处理结果,并将处理结果反馈给用户。
微服务系统通过调度服务器205将任务请求分配给对应的微服务单元201、202、203进行处理;在微服务单元201和\或微服务单元202和\或微服务单元203处理异常时,调度服务器205获取所述分布式处理单元的补偿数据;调度服务器205基于所述补偿数据通过异步调用的方式对微服务单元201和\或微服务单元202和\或微服务单元203进行补偿处理,并获取处理结果;以及微服务系统根据所述处理结果继续执行所述任务请求。
微服务系统可以是一个实体的服务器,还可例如为多个服务器组成,调度服务器205可以是一个实体的服务器,还可例如为多个服务器组成,需要说明的是,本公开实施例所提供的分布式系统的任务处理方法可以由调度服务器205和/或微服务单元201、202、203执行,相应地,分布式系统的任务处理装置可以设置于调度服务器105和/或微服务单元201、202、203中。
图3是根据一示例性实施例示出的一种分布式系统的任务处理方法的流程图。如图3所示,分布式系统的任务处理方法30至少包括步骤S302至S308。
如图3所示,在S302中,分布式处理系统将任务请求分配给对应的分布式处理单元进行处理。其中,所述分布式系统包括多个分布式处理单元,如上文所述,本实施例中,以微服务系统为例,进行示例性的说明,微服务系统中包括多个微服务单元。
其中,每个微服务单元可独立运行在自己的进程里;多个独立运行的微服务单元共同构建起了整个系统;每个微服务单元为独立的业务开发,一个微服务单元一般完成某个特定的功能,比如:订单管理,用户管理等;微服务单元之间可通过一些轻量级的通信机制进行通信,例如通过REST API或者RPC的方式进行调用。
如上文所述,微服务系统可对接收到的任务请求进行处理,并将任务请求分解为多个子任务,微服务系统还可通过调用服务器(以下简称调用服务)将子任务分配给微服务单元进行处理。
在S304中,在分布式处理单元处理异常时,获取所述分布式处理单元的补偿数据。可在分布式处理单元中执行方法函数异常时,根据方法名称与补偿表获取所述分布式处理单元的所述补偿数据。
图4是根据另一示例性实施例示出的一种分布式系统的任务处理方法的示意图。如图4所示,当微服务单元中的某一方法函数出现异常时,将方法名和入参数据保存至补偿表中,状态为有效状态。然后可例如通过批处理方式轮询所述补偿表,以根据方法名称与补偿表获取所述补偿数据。
其中,批处理(Batch),也称为批处理脚本。批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言。批处理程序虽然是在命令行环境中运行,但不仅仅能使用命令行软件,任何当前系统下可运行的程序都可以放在批处理文件中运行。
可例如,在微服务单元处理过程中,存在两个可能出现异常的方法,方法1(method1),入参为param1,方法2(method2),入参为param2,当出现异常时在补偿表中储存两条对应的待补偿数据。
在一个实施例中,可通过批处理程序同时轮询补偿表,同时根据方法名称获取多个微服务单元的补偿数据。批处理通过轮询补偿表,查出这两个待补偿数据,数据标识可例如分别为uid1,uid2。
在S306中,基于所述补偿数据通过异步调用的方式对所述分布式处理单元进行补偿处理,并获取处理结果。可例如,基于所述补偿数据通过异步调用的方式对所述分布式处理单元进行补偿处理,生成补偿结果和\或补偿状态;以及通过所有需进行补偿处理的分布式处理单元的补偿结果和\或补偿状态生成处理结果。
在一个实施例中,基于所述补偿数据通过异步调用的方式对所述分布式处理单元进行补偿处理包括:通过配置文件获取异常的方法名称;将所述方法名称与所述补偿数据进行封装,生成封装数据;以及基于所述封装数据通过异步调用的方式对所述分布式处理单元进行补偿处理。
在一个实施例中,基于所述封装数据通过异步调用的方式对所述分布式处理单元进行补偿处理包括:将所述封装数据通过异步调用的方式发送给补偿接口;以及所述补偿接口通过观察者模式对异常的方法函数进行重新调用。
在一个实施例中,所述补偿接口通过观察者模式对异常的方法函数进行重新调用包括:补偿接口将所述封装数据赋值给异常的方法函数;以及异常的方法函数根据所述封装数据重新执行。
接续上文中的示例,从配置文件中获取可进行补偿的方法名(method1,method2),将方法名与补偿表中查出的方法名进行匹配,并封装入参,入参包括uid,method以及param;
补偿接口(观察者)接收到请求,将method1和method2赋值给补偿对象,补偿对象属性值发生变化后触发该method对应的待补偿方法,通过入参中param1,重新调待补偿的method1;通过入参中param2,重新调待补偿的method2;
在S308中,分布式处理系统根据所述处理结果继续执行所述任务请求。在分布式系统中,在更新数据之前会监视要操作的键,如果提交数据前检测到目标键已经被更新过,那么会放弃更新数据,并且重新尝试重新执行上述的操作。如果在并发量大的情况下,系统完成一次更新操作尝试的数目会非常多,用户等待的时间也会变长,所以通过给数据加锁锁来解决这一问题。
在一个实施例中,获取所述分布式处理单元的补偿数据后还包括:判断所述补偿数据是否被锁定;在所述补偿数据被锁定时,跳过所述补偿数据;以及在所述补偿数据未被锁定时,锁定所述补偿数据。
在一个实施例中,分布式处理系统根据所述处理结果继续执行所述任务请求包括:根据补偿状态确定补偿处理是否成功;以及在补偿处理成功时,解锁所述补偿数据。
在不同进程需要互斥地访问共享资源时,Redis事务锁是一种非常有用的技术手段。Redis能用的加锁命令分表是INCR、SETNX、SET其中,INCR加锁的思路是,key不存在,key的值会先被初始化为0,然后再执行INCR操作进行加一。然后其它用户在执行INCR操作进行加一时,如果返回的数大于1,说明这个锁正在被使用当中。SETNX加锁的思路是,如果key不存在,将key设置为value;如果key已存在,则SETNX不做任何动作SET需要设置key过期时间以防止缓存数据无法得到更新。
在本实施例中,可通过以上的各种方式进行redis事务加锁,本申请不以此为限。
在一个实施例中,分布式处理系统根据所述处理结果继续执行所述任务请求还包括:在补偿处理不成功时,判断所述补偿数据被调用次数是否大于阈值;在被调用次数大于阈值时,将所述补偿数据状态设置为失败;以及在被调用次数小于等于阈值时,解锁所述补偿数据。
接续上文中的示例,假设method1返回结果为成功,method2返回结果为失败,观察者拿到返回结果后回调批处理方法,并将uid和返回状态传给批处理程序;批处理程序获得观察者返回的结果(uid1,S),(uid2,F),将uid1的补偿表状态改为S,并解锁uid1的redis,获取uid2的次数(times),判断times+1是否大于等于5?,不大于5,则不改变状态直接解锁redis,如果大于等于5,则将状态置为F,解锁redis。
根据本公开的分布式系统的任务处理方法,在分布式处理单元处理异常时,基于所述补偿数据通过异步调用的方式对所述分布式处理单元进行补偿处理的方式,能够提高分布式系统中,批处理程序的执行效率,提高整个分布式系统的处理效率。
应清楚地理解,本公开描述了如何形成和使用特定示例,但本公开的原理不限于这些示例的任何细节。相反,基于本公开公开的内容的教导,这些原理能够应用于许多其它实施例。
图5是根据另一示例性实施例示出的一种分布式系统的任务处理方法的流程图。图5所示的分布式系统的任务处理方法50是以微服务系统为例,对微服务系统任务处理过程的描述。
如图5所示,在S501中,批处理服务轮询补偿表。
在S502中,根据待补偿的方法获取补偿数据。
在S503中,判断该条数据是否被锁。
在S504中,跳过。
在S505中,加Redis锁。
在S506中,封装入参,异步调用补偿接口。
在S507中,通过配置文件获取方法名称。
在S508中,观察者模型实现方法重新调用。
在S509中,回调批处理服务。
在S510中,是否处理成功。
在S511中,修改状态为成功。
在S512中,次数加1,总次数是否大于5。
在S513中,修改状态为失败。
在S514中,不修改状态。
在S515中,解锁。
批处理轮询补偿表,根据待补偿状态获取待补偿数据;通过redis数据库判断每一条数据的uid的锁状态,如果被锁,则直接跳过,如果未被锁则先加redis锁(加锁目的是防止该数据被重复使用);
通过配置文件获取方法名,将数据(不包含跳过的数据)封装入参,异步调补偿接口,为提高效率,不等待返回结果;
补偿接口通过观察者模式实现方法的重新调用,即补偿接口接收到补偿请求后,将入参报文赋值给补偿对象,使补偿对象属性值发生变化,从而触发该对象对应的方法;
各方法进行业务处理;补偿接口等待每个方法的返回值,拿到返回值后触发批处理的回调方法将uid及成功或失败状态回传给批处理;
批处理判断成功或失败状态,如果成功则将该条数据状态置为成功,并通过redis解锁该条数据;如果失败则将该条数据的调用次数字段加1,并判断如果大于或等于5,则将该条数据状态置为失败(防止重复处理失败数据),解锁redis;如果次数小于5,则不修改该条数据状态,同时解锁redis,等待下次补偿。
根据本公开的分布式系统的任务处理方法,只需增加异常流程,在观察者中增加该方法的调用,并在批处理文件中配置该方法名,即可快速将该方法纳入补偿流程中。
根据本公开的分布式系统的任务处理方法,批处理服务只需组织数据,交给观察者统一调用待补偿方法,增加了批处理的执行效率。
本领域技术人员可以理解实现上述实施例的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本公开提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
此外,需要注意的是,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
图6是根据一示例性实施例示出的一种分布式系统的任务处理装置的框图。分布式系统的任务处理装置60包括:应用模块602,数据模块604,补偿模块606,以及执行模块608。
应用模块602用于将任务请求分配给对应的分布式处理单元进行处理;微服务系统可对接收到的任务请求进行处理,并将任务请求分解为多个子任务,微服务系统还可通过调用服务器(以下简称调用服务)将子任务分配给微服务单元进行处理。
数据模块604用于在分布式处理单元处理异常时,获取所述分布式处理单元的补偿数据;可在分布式处理单元中执行方法函数异常时,根据方法名称与补偿表获取所述分布式处理单元的所述补偿数据。
补偿模块606用于基于所述补偿数据通过异步调用的方式对所述分布式处理单元进行补偿处理,并获取处理结果;可例如,基于所述补偿数据通过异步调用的方式对所述分布式处理单元进行补偿处理,生成补偿结果和\或补偿状态;以及通过所有需进行补偿处理的分布式处理单元的补偿结果和\或补偿状态生成处理结果。
执行模块608用于根据所述处理结果继续执行所述任务请求。包括:根据补偿状态确定补偿处理是否成功;以及在补偿处理成功时,解锁所述补偿数据。
根据本公开的分布式系统的任务处理装置,在分布式处理单元处理异常时,基于所述补偿数据通过异步调用的方式对所述分布式处理单元进行补偿处理的方式,能够提高分布式系统中,批处理程序的执行效率,提高整个分布式系统的处理效率。
图7是根据一示例性实施例示出的一种电子设备的框图。
下面参照图7来描述根据本公开的这种实施方式的电子设备200。图7显示的电子设备200仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图7所示,电子设备200以通用计算设备的形式表现。电子设备200的组件可以包括但不限于:至少一个处理单元210、至少一个存储单元220、连接不同系统组件(包括存储单元220和处理单元210)的总线230、显示单元240等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元210执行,使得所述处理单元210执行本说明书上述电子处方流转处理方法部分中描述的根据本公开各种示例性实施方式的步骤。例如,所述处理单元210可以执行如图3,图5中所示的步骤。
所述存储单元220可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)2201和/或高速缓存存储单元2202,还可以进一步包括只读存储单元(ROM)2203。
所述存储单元220还可以包括具有一组(至少一个)程序模块2205的程序/实用工具2204,这样的程序模块2205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线230可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备200也可以与一个或多个外部设备300(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备200交互的设备通信,和/或与使得该电子设备200能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口250进行。并且,电子设备200还可以通过网络适配器260与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器260可以通过总线230与电子设备200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本公开实施方式的上述方法。
图8示意性示出本公开示例性实施例中一种计算机可读存储介质示意图。
参考图8所示,描述了根据本公开的实施方式的用于实现上述方法的程序产品400,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该计算机可读介质实现如下功能:分布式处理系统将任务请求分配给对应的分布式处理单元进行处理;在分布式处理单元处理异常时,获取所述分布式处理单元的补偿数据;基于所述补偿数据通过异步调用的方式对所述分布式处理单元进行补偿处理,并获取处理结果;以及分布式处理系统根据所述处理结果继续执行所述任务请求。
本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施例的方法。
以上具体地示出和描述了本公开的示例性实施例。应可理解的是,本公开不限于这里描述的详细结构、设置方式或实现方法;相反,本公开意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。
Claims (13)
1.一种分布式系统的任务处理方法,所述分布式系统包括多个分布式处理单元,其特征在于,包括:
分布式处理系统将任务请求分配给对应的分布式处理单元进行处理;
在分布式处理单元处理异常时,获取所述分布式处理单元的补偿数据;
基于所述补偿数据通过异步调用的方式对所述分布式处理单元进行补偿处理,并获取处理结果;以及
分布式处理系统根据所述处理结果继续执行所述任务请求。
2.如权利要求1所述的方法,其特征在于,在分布式处理单元处理异常时,获取所述分布式处理单元的补偿数据包括:
在分布式处理单元中执行方法函数异常时,根据方法名称与补偿表获取所述分布式处理单元的所述补偿数据。
3.如权利要求2所述的方法,其特征在于,根据方法名称与补偿表获取所述分布式处理单元的所述补偿数据包括:
通过批处理方式轮询所述补偿表,以根据方法名称与补偿表获取所述补偿数据。
4.如权利要求1所述的方法,其特征在于,基于所述补偿数据通过异步调用的方式对所述分布式处理单元进行补偿处理包括:
通过配置文件获取异常的方法名称;
将所述方法名称与所述补偿数据进行封装,生成封装数据;以及
基于所述封装数据通过异步调用的方式对所述分布式处理单元进行补偿处理。
5.如权利要求4所述的方法,其特征在于,基于所述封装数据通过异步调用的方式对所述分布式处理单元进行补偿处理包括:
将所述封装数据通过异步调用的方式发送给补偿接口;以及
所述补偿接口通过观察者模式对异常的方法函数进行重新调用。
6.如权利要求5所述的方法,其特征在于,所述补偿接口通过观察者模式对异常的方法函数进行重新调用包括:
补偿接口将所述封装数据赋值给异常的方法函数;以及
异常的方法函数根据所述封装数据重新执行。
7.如权利要求1所述的方法,其特征在于,基于所述补偿数据通过异步调用的方式对所述分布式处理单元进行补偿处理,并获取处理结果包括:
基于所述补偿数据通过异步调用的方式对所述分布式处理单元进行补偿处理,生成补偿结果和\或补偿状态;以及
通过所有需进行补偿处理的分布式处理单元的补偿结果和\或补偿状态生成处理结果。
8.如权利要求1所述的方法,其特征在于,获取所述分布式处理单元的补偿数据后还包括:
判断所述补偿数据是否被锁定;
在所述补偿数据被锁定时,跳过所述补偿数据;以及
在所述补偿数据未被锁定时,锁定所述补偿数据。
9.如权利要求8所述的方法,其特征在于,分布式处理系统根据所述处理结果继续执行所述任务请求包括:
根据补偿状态确定补偿处理是否成功;以及
在补偿处理成功时,解锁所述补偿数据。
10.如权利要求9所述的方法,其特征在于,分布式处理系统根据所述处理结果继续执行所述任务请求还包括:
在补偿处理不成功时,判断所述补偿数据被调用次数是否大于阈值;
在被调用次数大于阈值时,将所述补偿数据状态设置为失败;以及
在被调用次数小于等于阈值时,解锁所述补偿数据。
11.一种分布式系统的任务处理装置,所述分布式系统包括多个分布式处理单元,其特征在于,包括:
应用模块,用于将任务请求分配给对应的分布式处理单元进行处理;
数据模块,用于在分布式处理单元处理异常时,获取所述分布式处理单元的补偿数据;
补偿模块,用于基于所述补偿数据通过异步调用的方式对所述分布式处理单元进行补偿处理,并获取处理结果;以及
执行模块,用于根据所述处理结果继续执行所述任务请求。
12.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-10中任一所述的方法。
13.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-10中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811434997.6A CN109597699A (zh) | 2018-11-28 | 2018-11-28 | 数据处理方法、装置、电子设备及计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811434997.6A CN109597699A (zh) | 2018-11-28 | 2018-11-28 | 数据处理方法、装置、电子设备及计算机可读介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109597699A true CN109597699A (zh) | 2019-04-09 |
Family
ID=65959034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811434997.6A Pending CN109597699A (zh) | 2018-11-28 | 2018-11-28 | 数据处理方法、装置、电子设备及计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109597699A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110505541A (zh) * | 2019-07-18 | 2019-11-26 | 烽火通信科技股份有限公司 | 一种无源光网络多cpu的分布式实现方法和系统 |
CN110765144A (zh) * | 2019-10-11 | 2020-02-07 | 口碑(上海)信息技术有限公司 | 分布式异构数据库数据处理方法及装置 |
CN111367628A (zh) * | 2020-03-05 | 2020-07-03 | 中国银行股份有限公司 | 分布式事务的处理方法、装置及消息生产方、消费方系统 |
CN111880864A (zh) * | 2020-07-30 | 2020-11-03 | 平安国际智慧城市科技股份有限公司 | 基于http的模型调用方法、系统、计算机设备和存储介质 |
CN112445860A (zh) * | 2019-09-02 | 2021-03-05 | 北京京东振世信息技术有限公司 | 一种处理分布式事务的方法和装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103793273A (zh) * | 2014-01-24 | 2014-05-14 | 北京京东尚科信息技术有限公司 | 一种基于Redis的分布式队列调度方法及装置 |
CN104486328A (zh) * | 2014-12-10 | 2015-04-01 | 小米科技有限责任公司 | 访问控制方法和装置 |
CN106708975A (zh) * | 2016-12-06 | 2017-05-24 | 上海艾融软件股份有限公司 | 商品库存信息的处理方法及系统 |
CN107145547A (zh) * | 2017-04-26 | 2017-09-08 | 努比亚技术有限公司 | 一种异常数据的获取方法、设备及计算机可读存储介质 |
CN107368359A (zh) * | 2017-05-31 | 2017-11-21 | 杭州大搜车汽车服务有限公司 | 一种异步任务执行方法及其存储介质、装置 |
CN107748694A (zh) * | 2017-10-20 | 2018-03-02 | 武汉佰钧成技术有限责任公司 | 一种太极分布式事务处理框架 |
CN108304271A (zh) * | 2018-01-16 | 2018-07-20 | 深圳市康拓普信息技术有限公司 | 一种微服务架构下的分布式事务管理器以及管理方法 |
CN108874513A (zh) * | 2017-05-11 | 2018-11-23 | 北京京东尚科信息技术有限公司 | 处理定时任务的方法、系统、电子设备和计算机可读介质 |
-
2018
- 2018-11-28 CN CN201811434997.6A patent/CN109597699A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103793273A (zh) * | 2014-01-24 | 2014-05-14 | 北京京东尚科信息技术有限公司 | 一种基于Redis的分布式队列调度方法及装置 |
CN104486328A (zh) * | 2014-12-10 | 2015-04-01 | 小米科技有限责任公司 | 访问控制方法和装置 |
CN106708975A (zh) * | 2016-12-06 | 2017-05-24 | 上海艾融软件股份有限公司 | 商品库存信息的处理方法及系统 |
CN107145547A (zh) * | 2017-04-26 | 2017-09-08 | 努比亚技术有限公司 | 一种异常数据的获取方法、设备及计算机可读存储介质 |
CN108874513A (zh) * | 2017-05-11 | 2018-11-23 | 北京京东尚科信息技术有限公司 | 处理定时任务的方法、系统、电子设备和计算机可读介质 |
CN107368359A (zh) * | 2017-05-31 | 2017-11-21 | 杭州大搜车汽车服务有限公司 | 一种异步任务执行方法及其存储介质、装置 |
CN107748694A (zh) * | 2017-10-20 | 2018-03-02 | 武汉佰钧成技术有限责任公司 | 一种太极分布式事务处理框架 |
CN108304271A (zh) * | 2018-01-16 | 2018-07-20 | 深圳市康拓普信息技术有限公司 | 一种微服务架构下的分布式事务管理器以及管理方法 |
Non-Patent Citations (1)
Title |
---|
学无止境: "【转】微服务架构下的数据一致性保证(三):补偿模式", 《博客园》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110505541A (zh) * | 2019-07-18 | 2019-11-26 | 烽火通信科技股份有限公司 | 一种无源光网络多cpu的分布式实现方法和系统 |
CN112445860A (zh) * | 2019-09-02 | 2021-03-05 | 北京京东振世信息技术有限公司 | 一种处理分布式事务的方法和装置 |
CN112445860B (zh) * | 2019-09-02 | 2023-11-03 | 北京京东振世信息技术有限公司 | 一种处理分布式事务的方法和装置 |
CN110765144A (zh) * | 2019-10-11 | 2020-02-07 | 口碑(上海)信息技术有限公司 | 分布式异构数据库数据处理方法及装置 |
CN110765144B (zh) * | 2019-10-11 | 2022-02-18 | 口碑(上海)信息技术有限公司 | 分布式异构数据库数据处理方法及装置 |
CN111367628A (zh) * | 2020-03-05 | 2020-07-03 | 中国银行股份有限公司 | 分布式事务的处理方法、装置及消息生产方、消费方系统 |
CN111367628B (zh) * | 2020-03-05 | 2023-05-23 | 中国银行股份有限公司 | 分布式事务的处理方法、装置及消息生产方、消费方系统 |
CN111880864A (zh) * | 2020-07-30 | 2020-11-03 | 平安国际智慧城市科技股份有限公司 | 基于http的模型调用方法、系统、计算机设备和存储介质 |
CN111880864B (zh) * | 2020-07-30 | 2023-12-26 | 平安国际智慧城市科技股份有限公司 | 基于http的模型调用方法、系统、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109597699A (zh) | 数据处理方法、装置、电子设备及计算机可读介质 | |
KR102121159B1 (ko) | 이벤트-구동 블록체인 워크플로우 프로세싱 | |
Cao et al. | A scalable multicloud storage architecture for cloud-supported medical internet of things | |
CN109086409B (zh) | 微服务数据处理方法、装置、电子设备及计算机可读介质 | |
CN109274731A (zh) | 基于多租户技术的web服务的部署、调用方法和装置 | |
CN109074265A (zh) | 移动云服务的预先形成的指令 | |
US11100125B2 (en) | Migrating data between partitioned databases | |
CN111144926B (zh) | 业务请求处理方法、装置、系统、电子设备及可读介质 | |
US10970141B2 (en) | Integrating transaction processing system interfaces with event-driven polyglot runtime modules | |
CN111126948A (zh) | 用于审批流程的处理方法和装置 | |
CN112445860B (zh) | 一种处理分布式事务的方法和装置 | |
Calleja et al. | Collaborative grid infrastructure for molecular simulations: The e Minerals minigrid as a prototype integrated compute and data grid | |
US10452675B1 (en) | Source detection and indexing for managed search | |
CN110020360A (zh) | 用户行为特征提取的方法,系统及服务器 | |
CN108833147B (zh) | 一种配置信息的更新方法和装置 | |
US20100333115A1 (en) | System and method for a source-independent server interface accepting origin specific commands | |
CN107016297B (zh) | 一种数据对象的封装方法以及设备 | |
Brown et al. | Middleware for reliable mobile medical workflow support in disaster settings | |
US10728323B2 (en) | Method and apparatus for operating infrastructure layer in cloud computing architecture | |
US10489213B2 (en) | Execution of a method at a cluster of nodes | |
CN110909269B (zh) | 一种日志上报的方法和装置 | |
Gillies et al. | TMT common software update | |
CN110609734A (zh) | 定时任务调度的方法和装置 | |
US12003590B2 (en) | Performance-enhancing cross-system request handling via shared memory cache | |
US20230185853A1 (en) | Identity Graph Data Structure System and Method with Entity-Level Opt-Outs |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190409 |