具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
下面参考附图描述本申请实施例的分布式系统的服务提供方法及分布式系统。
图1是本申请一个实施例的分布式系统的服务提供方法的流程图。
如图1所示,该分布式系统的服务提供方法包括:
S101,获取待执行的任务。
其中,任务包括至少一个服务及至少一个服务的服务执行序列,且每个服务包括至少一个组件及至少一个组件的组件执行序列。
其中,组件是业务语义明确的组件,组件可以提供标准化的服务。
通常一个业务在不同场景下执行的任务不同,为了减少开发不同业务所需要的工作量,在开发一个新业务的过程中,可按照场景对新业务进行拆分,然后,对新业务在每种场景下的流程进行分析,以确定新业务在每种场景下调用组件的顺序,其中,场景和任务具有映射关系,一个场景对应一个任务。
其中,一个任务可以包括一个服务,也可以包括多个服务,如果一个任务包括多个服务,还需要根据组件的执行序列确定多个服务的服务执行序列。
其中,需要说明的是,为了提高任务执行的稳定性,每个服务及服务包括的组件运行在各自对应的业务集群中。
例如,新业务为业务C,假定业务C应用在两个场景(场景A,场景B)中,即业务C对应两个任务,假定场景A对应任务1,场景B对应任务2,其中,根据场景A中的业务功能的流程逻辑,确定场景A中调用组件的顺序为组件A、B、C、D、E,场景B中调用组件的顺序为组件D、E,出于稳定性考虑,可将组件A、B、C部署在业务系统A上,并将组件A、B、C的调用顺序固化到服务A中,系统A对外提供服务A,以及将组件D、E部署在业务系统B上,并将组件D、E的调用顺序固化到服务B中,业务系统B对外提供服务B。其中,业务系统A和业务系统B的结构示意图,如图2a和2b所示。在确定每种场景下组件的调用顺序后,通过场景1中的组件的调用顺序可以确定任务1的服务执行序列为先调用服务A,再调用服务B;通过场景2的组件的调用顺序,可确定完成任务2只需要调用一个服务,即服务B。
在本申请的一个实施例中,在分布式系统提供服务的过程中,如果接收到调用方的指令,则根据指令获取待执行的任务。
具体地,在接收到调用方的指令后,可根据指令对事件的场景进行分析,以确定每种场景对应的任务。
其中,待执行的任务可以为一个,也可以为多个。
S102,根据服务执行序列依次调用并执行至少一个服务,并接收至少一个服务的返回结果。
其中,至少一个服务在执行时根据组件的执行序列依次调用并执行至少一个组件。
具体地,在获取待执行的任务后,如果当前任务包括两个或者两个以上服务,则根据服务执行序列执行对应的服务。在按照服务执行序列执行服务的过程中,如果当前服务中包含两个或者两个组件,则根据服务中的组件执行序列执行组件,并返回当前服务的返回结果。
在本申请的一个实施例中,如果一个任务包括多个服务,为了可以为调用方提供完整的结果,如图3所示,在接收至少一个服务的返回结果之后,还可以包括步骤S103。
S103,将至少一个服务的返回结果进行合并以生成合并结果,并返回合并结果至调用方。
下面以一个具体的例子详细说明对待执行的任务进行执行,并将执行结果返回给调用方式的具体过程。
假定新业务C应用在两个场景(场景A,场景B)中,即业务C对应两个任务,假定场景A对应任务1,场景B对应任务2,假定场景A对应任务1,场景B对应任务2,其中,根据场景A中的业务功能的流程逻辑,确定场景A中调用组件的顺序为组件A、B、C、D、E,场景B中调用组件的顺序为组件D、E,出于稳定性考虑,可将组件A、B、C部署在业务系统A上,并将组件A、B、C的调用顺序固化到服务A中,业务系统A对外提供服务A,以及将组件D、E部署在业务系统B上,并将组件D、E的调用顺序固化到服务B中,业务系统B对外提供服务B。其中,业务系统A和业务系统B的结构示意图,如图2a和2b所示。
对于新业务C来说,可获得新业务C待执行的任务为任务1和任务2,且任务的执行顺序为任务1、任务2。其中,任务的执行顺序由新业务C所在的业务系统C的框架层确定。
其中,对新业务C进行分析的过程,如图4所示。
S41,业务系统C根据调用方的指令对新业务C的场景进行分析,以确定场景对应的任务。
具体地,根据新业务的场景,可确定新业务C对应的待执行的任务为任务1和任务2,任务1和任务2即为待执行的任务。
S42,业务系统C向业务系统A发送调用服务A的服务请求。
通过上述描述可以确定在执行任务1的过程中,需要调用两个服务,服务A和服务B,且服务执行序列为先服务A,后服务B。
S43,业务系统A接收到服务请求,并调用服务A,以获得服务A的结果,并将服务A对应的结果返回给业务系统C。
具体地,业务系统A在接收到服务请求后,业务系统A的服务层可根据固化在服务A的组件执行序列执行对应的组件,具体而言,先执行组件A,然后执行组件B,再执行组件C,并将执行完组件C后所获得的结果作为服务A的结果,并将服务A对应的结果返回给业务系统C。
其中,需要理解的是,各个组件的执行结果与组件的功能有关。
例如,组件为处罚组件,处罚组件的功能是定义各种处罚方式以对欺诈方进行处罚,处罚组件的执行结果是针对当前交易,需要什么样的处罚方式来处理欺诈方。对于校验用户组件,该组件的功能是提供多种校验方式对用户进行校验,校验用户组件的执行结果是输出具体的校验用户的方式,以方便后续根据校验用户组件所提供的校验方式完成对用户的校验。
进一步而言,业务系统B在接收到任务1的服务A的返回结果后,可通过步骤S44和S45进一步获得服务B的返回结果。
S44,业务系统C向业务系统B发送调用服务B的服务请求。
S45,业务系统B接收服务请求,并调用服务B,以获得服务B的结果,并将服务B对应的结果返回给业务系统C。
具体地,业务系统B在接收到调用服务B的服务请求后,业务系统B的服务层可根据固化在服务B的组件执行序列执行对应的组件,具体而言,先执行组件D,然后执行组件E,并将执行完组件E后所获得的结果作为服务B的结果,并将服务A对应的结果返回给业务系统C。
S45,业务系统C对服务A和服务B进行合并,并将合并后的结果返回给调用方。
具体地,业务系统C获得服务A和服务B的返回结果后,针对任务1可将服务A和服务B的返回结果进行合并,并将合并后的结果作为任务1的结果。
对于任务2,由于任务2对应的服务B,此时,可将服务B的返回结果作为任务2的结果。
在获得任务1和任务2的结果后,为了可以为调用方提供完整的结果,可将任务1和任务2的结果进行进一步地合并,并将合并后的结果返回给调用方,以使得调用方根据返回的结果确定后续的操作。
例如,调用方根据所获得的结果确定当前交易有风险,需要认证用户,此时,调用方可终止当前交易,并通过校验短信或者其他的认证手段对用户进行认证。
综上,可以看出,该实施例的分布式系统的服务提供方法,在执行待执行的任务的过程中,首先确定任务所包含的服务的个数,并在任务中包含多个服务时,根据服务执行序列按照顺序执行服务,并且在执行服务的过程中,根据服务中的组件执行序列对组件进行执行,以获得对应服务的返回结果。由此,实现了待执行的任务的快速布控,提高了通用逻辑的复用率,进而提高了对业务的响应能力。
本申请实施例的分布式系统的服务提供方法,获取待执行的任务,其中,任务包括至少一个服务及至少一个服务的服务执行序列,且每个服务包括至少一个组件及至少一个组件的组件执行序列;以及根据服务执行序列依次调用并执行至少一个服务,并接收至少一个服务的返回结果,其中,至少一个服务在执行时根据组件的执行序列依次调用并执行至少一个组件,由此,实现了待执行的任务的快速布控,提高了通用逻辑的复用率,进而提高了对业务的响应能力。
下面以一个具体的例子说明分布式系统对一个场景提供服务的具体过程。
假定新业务为业务H,假定新业务H对应的业务系统H的业务部署示意图如图5所示,通过图5可以看出,业务系统H包括四层,分别为框架层、任务层、服务层和组件层,其中,框架层可完成对任务的调度,具体而言,框架层可通过一个调度函数完成对任务的调度。任务层是对不同场景下的不同流程进行编排,服务层是在集群层面对组件进行编排,组件是对提供一段语义明确的组件,通过图5可以看出,该业务系统H对应一个任务,即业务系统H分析一个场景,且该场景的分析流程需要组件H、I、J、K。其中,服务层的服务A中保存了组件的调用顺序,假定服务A中保存的组件的调用顺序为:组件H→组件I→组件J→组件K。
其中,对业务系统H进行分析的过程为:
(1)、根据事件的场景找到对应的任务。
具体地,对业务系统H进行分析,可确定业务系统H对应一个场景,且该场景对应任务1。
(2)、执行本系统中的服务A的调用。
通过调用服务A可确定服务中各个组件之间的组件执行序列。
(3)、服务A根据组件执行序列调用组件H、I、J、K,并将组件K执行后的结果返回给任务1。
(4)任务层在获得任务1的返回结果后,可将返回结果提供给框架层。
(5)框架层在获得任务层提供的返回结果后,将对应的返回结果提供给调用方。
本申请实施例的分布式系统的服务提供方法,在执行任务1的过程中,根据服务中组件的组件执行序列执行对应的组件,以获得服务的返回结果,并在获得返回结果后将返回结果提供给调用方,为调用方提供了服务的返回结果,方便了调用方对任务进行快速布控,且分布式系统中的各个组件可以复用,提高了通用逻辑的复用率,提高了对业务的响应能力。
为实现上述实施例,本申请还提出了一种分布式系统。
图6是本申请一个实施例的分布式系统的结构示意图。
如图6所示,该分布式系统包括业务模块100和业务管理模块200,其中,
业务模块100用于提供服务。
其中,服务包括至少一个组件及至少一个组件的组件执行序列,服务在执行时根据组件的执行序列依次调用并执行至少一个组件。
业务管理模块200用于获取待执行的任务。
具体地,业务管理模块200接收调用方的指令,并根据指令获取待执行的任务。
其中,任务包括至少一个服务及至少一个服务的服务执行序列,并根据服务执行序列依次调用并执行至少一个服务,以及接收至少一个服务的返回结果。
其中,组件是业务语义明确的组件,组件可以提供标准化的服务。
通常一个业务在不同场景下执行的任务不同,为了减少开发不同业务所需要的工作量,在开发一个新业务的过程中,可按照场景对新业务进行拆分,然后,对新业务在每种场景下的流程进行分析,以确定新业务在每种场景下调用组件的顺序,其中,场景和任务具有映射关系,一个场景对应一个任务。
其中,一个任务可以包括一个服务,也可以包括多个服务,如果一个任务包括多个服务,还需要根据组件的执行序列确定多个服务的服务执行序列。
其中,需要说明的是,为了提高任务执行的稳定性,每个服务及服务包括的组件运行在各自对应的业务集群中。
另外,上述业务管理模块200还用于将至少一个服务的返回结果进行合并以生成合并结果,并返回合并结果至调用方。
需要说明的是,上述对分布式系统的服务提供方法实施例的解释说明也适用于该实施例的分布式系统,此处不再赘述。
本申请实施例的分布式系统,通过业务模块提供服务,其中,服务包括至少一个组件及至少一个组件的组件执行序列,服务在执行时根据组件的执行序列依次调用并执行至少一个组件,以及业务管理模块获取待执行的任务,其中,任务包括至少一个服务及至少一个服务的服务执行序列,并根据服务执行序列依次调用并执行至少一个服务,以及接收至少一个服务的返回结果。由此,实现了待执行的任务的快速布控,提高了通用逻辑的复用率,进而提高了对业务的响应能力。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。