基于微服务的分布式批量处理方法、系统及注册中心
文献发布时间:2023-06-19 18:25:54
技术领域
本发明涉及分布式技术领域,尤其涉及基于微服务的分布式批量处理方法、系统及注册中心。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
目前,由于传统批量加工程序一般由若干业务动作按顺序依次执行,如:数据抽取、清洗、转换、加载等业务步骤,通常都是在单机运行,当遇到数据量大时,单机受cpu、内存、磁盘等硬件资源限制存在运行时间长、计算能力扩展困难,一批量下划款业务,批量程序循环读取下划款文件的每条记录,对每条记录进行清洗、转换,提取为业务数据,调用划款处理逻辑,完成一笔划款业务,当下划款文件有上百万、上千万记录时,即使使用多线程机制单机处理时间往往需要几个小时,甚至十几个小时。
发明内容
本发明实施例提供一种基于微服务的分布式批量处理方法,用以解决批量加工程序在单机运行时间长、无法扩展的问题,该方法包括:
服务消费者在检测到满足预设批处理任务触发条件时,发起批处理请求至服务注册中心;所述批处理请求中包括处理当前批处理任务的批处理服务的标识;
服务注册中心根据当前批处理服务的标识,以及预先存储的多个批处理服务的标识与多个指令的关系,确定当前批处理服务的标识对应的当前多个指令;根据当前每一指令的服务标识,确定处理当前批处理任务的多个微服务;根据当前每一指令的标识和数据区,反序列化出微服务实例;调用微服务,将服务分布到多台机器上执行;所述每一指令中包括服务标识和数据区,每一批处理服务的标识对应的多个指令根据对应类型的批处理服务加工程序预先处理生成;
服务消费者根据多个微服务分布的标识生成调用指令,将调用指令发送至多个微服务分布的机器;
服务提供者中的接收到调用指令的多个微服务分布的机器处理所述批处理任务。
本发明实施例还提供一种基于微服务的分布式批量处理方法,该方法应用于服务注册中心,用以解决批量加工程序在单机运行时间长、无法扩展的问题,该方法包括:
根据当前批处理服务的标识,以及预先存储的多个批处理服务的标识与多个指令的关系,确定当前批处理服务的标识对应的当前多个指令;所述每一指令中包括服务标识和数据区,每一批处理服务的标识对应的多个指令根据对应类型的批处理服务加工程序预先处理生成;
根据当前每一指令的服务标识,确定处理当前批处理任务的多个微服务;
根据当前每一指令的数据区,反序列化出微服务实例;
本发明实施例还提供一种基于微服务的分布式批量处理系统,用以解决批量加工程序在单机运行时间长、无法扩展的问题,该系统包括:
服务消费者,用于在检测到满足预设批处理任务触发条件时,发起批处理请求至服务注册中心;通过数据区反序列化微服务实例,从而将调用指令发送至多个微服务分布的机器;所述批处理请求中包括处理当前批处理任务的批处理服务的标识;
服务注册中心,用于根据当前批处理服务的标识,以及预先存储的多个批处理服务的标识与多个指令的关系,确定当前批处理服务的标识对应的当前多个指令;根据当前每一指令的服务标识,确定处理当前批处理任务的多个微服务;根据当前每一指令的数据区,确定多微服务;所述每一指令中包括服务标识和数据区,每一批处理服务的标识对应的多个指令根据对应类型的批处理服务加工程序预先处理生成;
服务提供者中的接收到调用指令的多个微服务分布的机器,用于处理所述批处理任务。
本发明实施例还提供一种基于微服务的分布式批量处理服务注册中心,包括:
指令确定单元,用于根据当前批处理服务的标识,以及预先存储的多个批处理服务的标识与多个指令的关系,确定当前批处理服务的标识对应的当前多个指令;所述每一指令中包括服务标识和数据区,每一批处理服务的标识对应的多个指令根据对应类型的批处理服务加工程序预先处理生成;
注册单元,多个服务提供者可以将服务注册到注册单元
存储单元,服务注册中心带有数据区;
微服务确定单元,用于根据当前每一指令的服务标识,确定处理当前批处理任务的多个微服务;
发送单元,用于将多个微服务分布的机器标识发送至服务消费者;
调度单元,用于定时任务调度,作为服务消费者发起指令调用,以及处理指令状态流转和以失败、异常处理;
加密解密单元,用于对数据区的敏感数据进行加密、解密。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于微服务的分布式批量处理方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于微服务的分布式批量处理方法。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述基于微服务的分布式批量处理方法。
本发明实施例中,基于微服务的分布式批量处理方案,通过:服务消费者在检测到满足预设批处理任务触发条件时,发起批处理请求至服务注册中心;所述批处理请求中包括处理当前批处理任务的批处理服务的标识;服务注册中心根据当前批处理服务的标识,以及预先存储的多个批处理服务的标识与多个指令的关系,确定当前批处理服务的标识对应的当前多个指令;根据当前每一指令的服务标识,确定处理当前批处理任务的多个微服务;根据当前每一指令的数据区,反序列化微服务实例;通过发送单元,调用微服务实例;所述每一指令中包括服务标识和数据区,每一批处理服务的标识对应的多个指令根据对应类型的批处理服务加工程序预先处理生成服务消费者根据多个微服务分布的机器标识生成调用指令,将调用指令发送至多个微服务分布的机器;服务提供者中的接收到调用指令的多个微服务分布的机器处理所述批处理任务。在上述过程中,本发明实施例通过服务消费者在检测到满足预设批处理任务触发条件时,发起批处理请求至服务注册中心,服务注册中心根据当前批处理服务的标识,以及预先存储的多个批处理服务的标识与多个指令的关系,确定当前批处理服务的标识对应的当前多个指令;根据当前每一指令的服务标识,确定处理当前批处理任务的多个微服务,从而提高了批处理任务处理的效率、改善了无法扩展的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中基于微服务的分布式批量处理方法、系统及注册中心的结构图;
图2为本发明实施例中基于微服务的分布式批量处理方法、系统及注册中心的原理图;
图3为本发明实施例中基于微服务的分布式批量处理方法的流程图;
图4为本发明实施例中基于微服务的分布式批量处理方法、系统及注册中心的服务调用的流程图;
图5为本发明实施例中应用于服务注册中心的基于微服务的分布式批量处理方法的流程图;
图6为本发明实施例中基于微服务的分布式批量处理系统的示意图;
图7为本发明实施例中基于微服务的分布式批量处理服务注册中心的示意图;
图8为本发明实施例中基于微服务的分布式批量处理方法的示意图;
图9为本发明实施例中计算机设备的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
在介绍本发明实施例之前,首先对本发明实施例涉及的术语进行介绍。
1.ETL:是英文Extract-Transform-Load的缩写,用来描述将数据从来源抽取(Extract)、转换(Transform)、加载(Load)到目标系统过程。
2.单机程序:只能在单个计算机上运行的程序。
3.批处理:也称为批量加工、批量作业、批量程序;批处理顾名思义就是对某对象进行一组操作,例如:对一个数据文件进行数据抽取、转换、加载、计算、输出等一系列操作。
4.任务:由计算机来完成的基本工作单元,是由控制程序处理的一个或多个指令序列。
5.指令:指挥计算机工作的指示和命令,程序就是一系列按一定顺序排列的指令,指令可以对输入数据进行处理,返回运行结果。
6.分布式系统:建立在计算机网络之上,由多台独立运行的计算机组成,展现给用户一个统一的整体。
7.分布式计算:利用分布式系统来解决计算问题,一个问题被分为若干任务,每个任务可以被一个或者多个计算机来完成。
8.微服务:一种面向服务的分布式架构风格实现,提倡将大的应用分割成一系列小的服务,每个服务专注于各自单一的业务功能,每个服务运行在独立的进程中,有清晰的服务边界;采用轻量级的通讯机制(http/rpc)来实现互通、协作。
9.微服务框架:为微服务运行提供基础设施功能,如服务发现、服务注册、服务调用、服务通信、服务运行,同时微服务框架提供服务负载均衡将一个服务在多台机器部署多个实例,微服务框架可以方便开发人员开发和部署微服务程序;常用的微服务框架有spring cloud,dubbo。
10.主控服务:根据参数配置控制主服务的执行。
11.主服务:一个具体的批量处理任务,主服务由一个或者多个指令服务组成。
12.指令服务:执行指令的服务,它是分布式计算中的最小执行单元,可以在一台或者多台机器上执行。
13.多线程:线程是一程序中可以独立运行的程序片段,多线程是指从软件或硬件上实现多个线程并发执行;操作系统将处理器运行时间划分成若干时间段,再将时间段分配给各线程执行,但是在任意一个时刻点上只有一个程序在处理器运行。
14.并发处理:是指在一个时间段中有多个程序都处于已启动运行到运行完毕之间,操作系统将处理器运行时间划分成若干时间段,再将时间段分配给各程序执行,但是在任意一个时刻点上只有一个程序在处理器运行,其他程序处于挂起状态。
15.序列化:把对象转为字节或者字符串的过程称为对象的序列化。
16.反序列化:把字节或字符串恢复为对象的过程称为对象的反序列化。
图1为本发明实施例中基于微服务的分布式批量处理方法、系统及注册中心的结构图,图2为本发明实施例中基于微服务的分布式批量处理方法、系统及注册中心的原理图,可以看出本发明实施例通过服务消费者在检测到满足预设批处理任务触发条件时,发起批处理请求至服务注册中心,服务注册中心根据当前批处理服务的标识,以及预先存储的多个批处理服务的标识与多个指令的关系,确定当前批处理服务的标识对应的当前多个指令;根据当前每一指令的服务标识,确定处理当前批处理任务的多个微服务,从而提高了批量加工程序在单机运行的工作效率、改善了无法扩展的问题。
图3为本发明实施例中基于微服务的分布式批量处理方法的流程图,包括:
步骤301,服务消费者在检测到满足预设批处理任务触发条件时,发起批处理请求至服务注册中心;所述批处理请求中包括处理当前批处理任务的批处理服务的标识;
步骤302,服务注册中心根据当前批处理服务的标识,以及预先存储的多个批处理服务的标识与多个指令的关系,确定当前批处理服务的标识对应的当前多个指令;根据当前每一指令的服务标识,确定处理当前批处理任务的多个微服务;根据当前每一指令的数据区,反序列化机制微服务实例;所述每一指令中包括服务标识和数据区,每一批处理服务的标识对应的多个指令根据对应类型的批处理服务加工程序预先处理生成;
步骤303,服务消费者调用微服务实例,将指令分布在多台微服务机器上执行;
步骤304,服务提供者接收到调用指令的微服务,处理所述批处理任务。
本发明实施例提供的基于微服务的分布式批量处理方法,工作时:服务消费者(图1中提到的应用层)在检测到满足预设批处理任务触发条件时,发起批处理请求至服务注册中心;所述批处理请求中包括处理当前批处理任务的批处理服务的标识;服务注册中心根据当前批处理服务的标识,以及预先存储的多个批处理服务的标识与多个指令的关系,确定当前批处理服务的标识对应的当前多个指令(该步骤即为下文提到的主控服务执行的内容,确定调起主服务,例如批量下划款主服务);根据当前每一指令的服务标识,确定处理当前批处理任务的多个微服务;根据当前每一指令的数据区,确定多个微服务分布的机器标识(该步骤即为下文提到的指令服务执行的内容);将多个微服务分布的机器标识发送至服务消费者;所述每一指令中包括服务标识和数据区,每一批处理服务的标识对应的多个指令根据对应类型的批处理服务加工程序预先处理生成;服务消费者(对应图1中的服务层)根据多个微服务分布的机器标识生成调用指令,将调用指令发送至多个微服务分布的机器;服务提供者中的接收到调用指令的多个微服务分布的机器处理所述批处理任务。在上述过程中,本发明实施例通过服务消费者在检测到满足预设批处理任务触发条件时,发起批处理请求至服务注册中心,服务注册中心根据当前批处理服务的标识,以及预先存储的多个批处理服务的标识与多个指令的关系,确定当前批处理服务的标识对应的当前多个指令;根据当前每一指令的服务标识,确定处理当前批处理任务的多个微服务,从而提高了批量加工程序在单机运行的工作效率、改善了无法扩展的问题。
本发明实施例使用微服务分布式计算技术,首先将一个批量加工问题抽取为若干服务和指令,由服务完成业务动作,并将动作的结果保存为指令(指令由数据区+服务标识组成),指令可以被批量调度模块中的指令服务解析,根据服务标识在服务注册中心找到服务的实例,通过序列化、反序列化将数据区转变为程序的数据结构当做参数传递给服务,从而完成指令的执行
下面对每一步进行详细阐述:
在步骤301中,服务消费者在检测到满足预设批处理任务触发条件时,发起批处理请求至服务注册中心;所述批处理请求中包括处理当前批处理任务的批处理服务的标识。
在一实施例中,如图2中前两个箭头的内容所示,上述基于微服务的分布式批量处理方法还可以包括:按照如下方法将每一类型的批处理服务加工程序预先处理生成每一批处理服务的标识及其对应的多个指令:
获取每一类型的批处理服务加工程序;
将每一类型的批处理服务加工程序转换为每一批处理服务;每一批处理服务对应多个指令;
将每一批处理服务拆分成多个微服务;多个微服务被分布式地部署在服务提供者处的多台机器上,每一微服务对应一个指令;
将每一批处理服务的标识及其对应的多个指令存储在所述服务注册中心。
在一实施例中,服务注册中心带有数据区,用于存储指令数据,包括指令的标识和指令的数据(包括状态、业务数据、时间戳等);服务注册中心可以拥有一个数据区或多个数据区,可以将数据分布在不同分区或者机器上存储,同时,为了保护数据安全,可以通过加密解密单元对数据区内的敏感数据进行加密解密,如:服务注册中心敏感数据(指令标识、微服务名、ip地址、系统用户名称、密码等),数据区敏感数据(用户名称、家庭住址、电话、银行卡号)等敏感数据。
在步骤302中,服务注册中心根据当前批处理服务的标识,以及预先存储的多个批处理服务的标识与多个指令的关系,确定当前批处理服务的标识对应的当前多个指令;根据当前每一指令的服务标识,确定处理当前批处理任务的多个微服务;根据当前每一指令的数据区,反序列化微服务实例;所述每一指令中包括服务标识和数据区,每一批处理服务的标识对应的多个指令根据对应类型的批处理服务加工程序预先处理生成。
在一实施例中,根据当前每一指令的数据区,通过序列化、反序列化将数据区转变为程序的数据结构反序列化出微服务实例。
在步骤303中,服务消费者根据多个微服务分布的机器标识生成调用指令,将调用指令发送至多个微服务分布的机器。
在一实施例中,服务消费者根据多个微服务分布的机器标识生成调用指令,将调用指令发送至多个微服务分布的机器,包括:服务消费者根据多个微服务的数量,以及服务消费者中各个机器的当前运行状态,确定是否将调用指令发送至多个微服务分布的机器。
在步骤304中,服务提供者中的接收到调用指令的多个微服务分布的机器处理所述批处理任务。
具体实施例中,在微服务架构中服务和指令由集群中的一台计算机执行,所有服务和指令分布在集群所有机器上执行,从而解决单机批量处理时间长、单点宕机问题;例如:一个批量下划款业务,首先抽取为下划款数据加工服务、划款指令、划款服务;下划款数据加工服务循环读取下划款文件的每条记录,对每条记录进行清洗、转换,将数据转换为划款指令保存(由数据区+划款服务标识组成),批量调度模块中的指令服务根据指令的服务标识,找到划款服务,将数据区转换为程序数据结构作为参数调用划款服务,完成一笔下划款业务。
图4为本发明实施例中基于微服务的分布式批量处理方法、系统及注册中心的服务调用的流程图,具体实施例中,基于微服务的分布式批量调度方法包括:
批量调度模块抽取为:主控服务、主服务、指令服务,通过微服务框架的服务注册中心,主控服务、主服务、指令服务都注册多个实例,进行分布式处理:
1.任务调度模块,是批量调度模块的触发调用机制,以时间调度为例:每分钟执行一次定时触发调起主控服务。
2.批量调度模块:主控服务,主控服务读取参数,根据参数设置和当前服务运行状态决定执行哪些主服务,将符合条件的主服务并发调起。
3.主服务执行,读取参数,根据参数设置和当前服务运行状态决定是否执行指令服务,并根据并发参数,使用异步方式并发调起指令服务。
4.指令服务执行,读取并解析指令,根据服务标识在服务注册中心找到服务的实例,通过反序列化将数据区转变为微服务实例,通过调用微服务完成指令的执行。
图5为本发明实施例中应用于服务注册中心的基于微服务的分布式批量处理方法的流程图,如图5所示,该方法包括如下步骤:
步骤501,根据当前批处理服务的标识,以及预先存储的多个批处理服务的标识与多个指令的关系,确定当前批处理服务的标识对应的当前多个指令;所述每一指令中包括服务标识和数据区,每一批处理服务的标识对应的多个指令根据对应类型的批处理服务加工程序预先处理生成;
步骤502,根据当前每一指令的服务标识,确定处理当前批处理任务的多个微服务;
步骤503,根据当前每一指令的数据区数据,反序列化微服务实例;
步骤504,调用微服务实例,将指令发送到不同的服务提供者机上执行。
具体实施例中,对传统的批量程序抽象、提取,得到服务和指令,其中:
1.服务:一个单一的业务功能,在微服务架构中,将大的应用分割成一系列小的服务。
2.批量服务:一个单一的批量业务功能,通过抽取、清洗、转换、加载等步骤将数据加工为指令并进行保存;批量服务可以被批量服务调度模块中的指令服务调起执行。
3.指令:是由服务标识+数据区组成:
a)数据区:可以是一段xml或者一段json,用来描述数据,通过编程语言的序列化和反序列化机制,可以将这个xml、json转换为编程语言的实现类,调用执行;
b)服务标识:一个字符串能在系统中唯一标识出一个服务;在微服务框架中,通过服务注册中心将服务的标识和服务的实例注册到注册中心,一个服务标识可以对应多个实例,分布在不同机器上,其他微服务可以通过服务标识在注册中心找到该服务的一个实现,并进行调用,从而完成分布式服务调用;
指令可以被批量调度模块中的指令服务解析,根据服务标识在服务注册中心找到服务的实例,通过序列化、反序列化将数据区转变为微服务实例,调用实例完成指令的执行。
本发明实施例通过抽取服务和指令,进而对传统的批量加工程序进行解耦,通过在微服务注册中心注册服务的多个实例,进而将单机运行程序转变为分布式计算(将一个服务部署在多台机器,通过服务标识在注册中心找到一个实例,进行服务调用)
4.指令的并发执行:本发明使用微服务异步回调机制进行并发执行,主服务读取并发个数的参数,进行并发数控制,使用异步方式调起指令服务。
5.指令的保存:使用数据库的分区技术,将一张指令表分为若干分区,保证指令的读取速度,例如:一个数量一千万条记录的指令表,分区一百个分区,每个区分只有十万条记录,访问速度大大提升;也可以通过分库技术,指令表保存在多个数据库中;或使用内存技术,直接将指令包存在分布式内存集群中。
同时本发明也使用数据库的分区作为并发,首先按指令表的分区数配置主服务,批量调度模块中的主控服务根据并发参数调起主服务。
本发明实施例还提出一种基于微服务的分布式批量处理系统,其原理与基于微服务的分布式批量处理方法类似,这里不再赘述。图6为本发明实施例中基于微服务的分布式批量处理系统的示意图,该系统包括:
服务消费者601,用于在检测到满足预设批处理任务触发条件时,发起批处理请求至服务注册中心;根据多个微服务分布的机器标识生成调用指令,将调用指令发送至多个微服务分布的机器;所述批处理请求中包括处理当前批处理任务的批处理服务的标识;
服务注册中心602,用于根据当前批处理服务的标识,以及预先存储的多个批处理服务的标识与多个指令的关系,确定当前批处理服务的标识对应的当前多个指令;根据当前每一指令的服务标识,确定处理当前批处理任务的多个微服务;根据当前每一指令的数据区,反序列化微服务实例;所述每一指令中包括服务标识和数据区,每一批处理服务的标识对应的多个指令根据对应类型的批处理服务加工程序预先处理生成;
服务提供者603中的接收到调用指令,处理所述批处理任务。
在一实施例中,还包括预处理装置,用于按照如下方法将每一类型的批处理服务加工程序预先处理生成每一批处理服务的标识及其对应的多个指令:
获取每一类型的批处理服务加工程序;
将每一类型的批处理服务加工程序转换为每一批处理服务;每一批处理服务对应多个指令;
将每一批处理服务拆分成多个微服务;多个微服务被分布式地部署在服务提供者处的多台机器上,每一微服务对应一个指令;
将每一批处理服务的标识及其对应的多个指令存储在所述服务注册中心。
在一实施例中,服务注册中心602具体用于:根据当前批处理服务的标识,以及预先存储的多个批处理服务的标识与多个指令的关系,确定当前批处理服务的标识对应的当前多个指令;根据当前每一指令的服务标识,确定处理当前批处理任务的多个微服务;根据当前每一指令的数据区,反序列化微服务实例;调用微服务实例可以将指令分布到多台机器执行。
在一实施例中,服务消费者601具体用于:根据多个微服务的数量,以及服务消费者中各个机器的当前运行状态,确定是否将调用指令发送至多个微服务分布的机器。
本发明实施例还提出一种基于微服务的分布式批量处理服务注册中心,其原理与基于微服务的分布式批量处理方法类似,这里不再赘述。图7为本发明实施例中基于微服务的分布式批量处理服务注册中心的示意图,该注册中心包括:
指令确定单元701,用于根据当前批处理服务的标识,以及预先存储的多个批处理服务的标识与多个指令的关系,确定当前批处理服务的标识对应的当前多个指令;所述每一指令中包括服务标识和数据区,每一批处理服务的标识对应的多个指令根据对应类型的批处理服务加工程序预先处理生成;
注册单元702,多个服务提供者可以将服务注册到注册单元
存储单元703,服务注册中心带有数据区;
微服务确定单元704,用于根据当前每一指令的服务标识,确定处理当前批处理任务的多个微服务;
发送单元705,用于将多个微服务分布的机器标识发送至服务消费者;
调度单元706,用于定时任务调度,作为服务消费者发起指令调用,以及处理指令状态流转和以失败、异常处理;
加密解密单元707,用于对数据区的敏感数据进行加密、解密。
在一实施例中,微服务确定单元702具体用于:通过序列化、反序列化将数据区转变微服务实例。
具体实施例中,如图8所示,基于微服务的分布式批量处理方法,包括以下模块:
1.任务调度模块801,用于按照一定逻辑触发主动调起分布式批量调度模块中的主控服务,即满足预设批处理任务触发条件时发起批处理请求,例如:基于时间表达式,每隔一段时间定时调起分布式批量调度模块中的主控服务;基于消息触发,监听程序收到消息调起主控服务;基于手工触发,业务人员在界面上点击,调起主控服务。该任务调度模块实现了上述步骤301。
2.批量服务调度模块802:用于提供主控服务、主服务、指令服务。
a)主控服务:读取配置参数、当前运行状态、并发数参数,决定是否调起主服务,如果条件不满足则主控服务直接退出,等待下次调用,如果条件满足,主控服务调起主服务,并根据并发数参数决定同时运行多少个主服务;
b)主服务:读取配置参数、当前运行状态、并发数参数,决定是否调起指令服务,并根据并发数参数控制决定同时运行多少个指令服务;
c)指令服务:解析指令,根据服务标识在服务注册中心找到服务的实例,通过序列化、反序列化将数据区转变为程序的数据结构当做参数调起服务的实例,完成指令的执行。
上述批量服务调度模块实现了上述步骤302-步骤304。
3.批量模块803:用于执行批量业务步骤,并将结果保存为指令,每一个批量加工程序都被提取为一个服务,基于微服务框架进行多实例部署。该任务调度模块实现了上述将每一类型的批处理服务加工程序预先处理生成每一批处理服务的标识及其对应的多个指令的步骤。
具体实施例时,基于微服务的分布式批量处理方法包括:
通过将一个批量加工程序进行抽象提取为批量服务和指令,将一个单机顺序执行的批量程序,转为可以分布式处理的微服务。
1.批量服务:一个单一的批量业务功能,通过一系列抽取、转换、加载等步骤将数据加工为指令并进行保存。
2.指令:是一个可执行的程序单元,由数据区+服务标识组成;指令可以被指令服务解析后执行:
a)数据区:可以是一段xml或者一段json,用来描述数据,通过编程语言的序列化和反序列化机制,可以将这个xml、json转换为编程语言的实现类,执行业务逻辑处理;
b)服务标识:一个字符串能在系统中唯一标识出一个服务;在微服务框架中,通过服务注册中心将服务的标识和服务的实例注册到注册中心,一个服务标识可以对应多个实例,分布在不同机器上,其他微服务可以通过服务标识在注册中心找到该服务的一个实现,并进行调用,从而完成分布式服务调用。
本发明实施例采用的是基于微服务的分布式解决方案,通过微服务的服务注册中心机制,自动完成进行服务的订阅发布、服务路由、集群容错、多实例部署和服务调用,而现有技术中存在以下缺点:
1.基于socket通讯,将指令发送到不同机器进行分布式执行;这种方法服务器间的通讯和应答处理复杂,同时socket通讯需要通讯双方约定每个交易的报文格式,双方按约定报文格式各自进行解析,这样的开发效率低,系统维护困难;通讯双方需要维护通讯地址和端口,配置管理维护困难。
2.基于编程语言提供的远程访问技术:如:rpc调用、rmi调用等;这种方式屏蔽了socket底层通讯格式,提供更高级的对象序列化和反序列化,无需约定报文格式,解析报文;但通讯双方仍需要维护通讯地址和端口,配置管理维护困难;随着机器越来越多,没有自动的服务订阅、发布机制,服务的可靠性差。
3.基于多线程的解决方案,传统的批量加工程序往往使用多线程来并行处理加工任务,而多线程受机器cpu、内存、磁盘I/O等资源限制,到达机器资源瓶颈就无法扩展,性能受到限制。
4.传统的批量调度框架,如:sping task,quartz也可以进行集群调度,集群内一个节点宕机,可以将任务转移到其他机器,但是不支持分布式作业,批量作业只能在单机内处理,受到单机资源限制,存在性能瓶颈。
综上所述,在本发明实施例提出的方法中,通过服务消费者在检测到满足预设批处理任务触发条件时,发起批处理请求至服务注册中心;所述批处理请求中包括处理当前批处理任务的批处理服务的标识;服务注册中心根据当前批处理服务的标识,以及预先存储的多个批处理服务的标识与多个指令的关系,确定当前批处理服务的标识对应的当前多个指令;根据当前每一指令的服务标识,确定处理当前批处理任务的多个微服务;根据当前每一指令的数据区,确定多个微服务分布的机器标识;将多个微服务分布的机器标识发送至服务消费者;所述每一指令中包括服务标识和数据区,每一批处理服务的标识对应的多个指令根据对应类型的批处理服务加工程序预先处理生成服务消费者根据多个微服务分布的机器标识生成调用指令,将调用指令发送至多个微服务分布的机器;服务提供者中的接收到调用指令的多个微服务分布的机器处理所述批处理任务。在上述过程中,本发明实施例通过服务消费者在检测到满足预设批处理任务触发条件时,发起批处理请求至服务注册中心,服务注册中心根据当前批处理服务的标识,以及预先存储的多个批处理服务的标识与多个指令的关系,确定当前批处理服务的标识对应的当前多个指令;根据当前每一指令的服务标识,确定处理当前批处理任务的多个微服务,从而解决批量加工程序在单机运行时间长、无法扩展的问题。
本发明实施例还提供一种计算机设备,图9为本发明实施例中计算机设备的示意图,所述计算机设备900包括存储器910、处理器920及存储在存储器910上并可在处理器920上运行的计算机程序930,所述处理器920执行所述计算机程序930时实现上述基于微服务的分布式批量处理方法。本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于微服务的分布式批量处理方法。
本发明实施例的有益效果为:
1.高性能,基于微服务的分布式批量处理,将批量加工任务分配在分布式集群中的每个点上并行处理,在高并发上突破单机资源限制,拥有更好的并行处理能力;
2.高可靠性,基于微服务的分布式批量处理,将批量加工任务分配在分布式集群中的每个点上,避免单点失效,一台批量服务器宕机,其他机器可以自动接替其任务,继续完成批量调度任务;
3.高性价比,基于微服务的分布式批量处理,分布式集群使用pc服务器,机器价格远低于主机、小型机;
4.高扩展性,分布式集群,通过增加pc服务器来增加计算能力,成本低扩展能力强,而主机或者小型机到达单机资源瓶颈无法扩展计算能力。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于微服务的分布式批量处理方法。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述基于微服务的分布式批量处理方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 基于统一访问规则的多注册中心微服务发现方法和系统
- 一种微服务注册中心集群及其信息处理方法