一种通用的分布式系统设计及其C++实现的制作方法

文档序号:20009196发布日期:2020-02-22 03:54阅读:426来源:国知局
一种通用的分布式系统设计及其C++实现的制作方法

本发明涉及通信技术领域,尤其涉及一种通用的分布式系统设计及其c++实现。



背景技术:

现在分布式系统的应用范围越来越广,越来越多的企业开始使用分布式系统。

但是由于不同企业中对于分布式系统的应用场景不同,所以目前分布式系统多为针对某个应用场景单独开发的。也即针对不同企业的应用场景,单独开发一套分布式系统,导致分布式系统通用性较差。



技术实现要素:

鉴于此,本发明提供一种通用的分布式系统设计及其c++实现,可以适用于不同应用场景,提高分布式系统的通用性。

为了实现上述目的,本申请提供了下述技术特征:

一种通用性分布式系统,包括:

前端设备,用于构建任务并发送所述任务;

与所述前端设备相连的数据库服务器,用于存储所述任务;

与所述数据库服务器相连的计算服务器集群,所述计算服务器集群包括用于从所述数据库服务器提取任务并分发任务的管控服务器,和,与所述管控服务器相连的、用于执行任务的多台计算服务器;

其中每个计算服务器集成有:多个应用场景共有的多个系统服务进程,多个应用场景共有的多个通用服务进程,以及,适用于多个应用场景的多个定制服务进程。

可选的,所述数据库服务器包括:

与所述多个系统服务进程对应的系统数据表;

与所述多个通用服务进程对应的系统数据表;

与所述多个定制服务进程一一对应的多个定制数据表。

可选的,所述管控服务器用于从所述数据库服务器提取任务并分发任务,包括:

从所述数据库服务器中按任务执行顺序依次提取任务;

拆分所述任务为多个子任务;

按负载均衡策略分发所述多个子任务,至所述计算服务器集群中处于正常状态的计算服务器,以供处于正常状态的计算服务器执行子任务。

可选的,所述管控服务器,还用于接收处于正常状态的计算服务器发送的子任务执行状态和进度,并发送所述任务中多个子任务执行状态和进度至前端设备;

所述前端设备,还用于显示所述任务中多个子任务执行状态和进度。

可选的,所述前端设备,还用于提供任务交互界面,通过所述任务交互界面接收新任务制定指令、原任务调整指令和/或任务顺序调整指令;

在接收新任务制定指令后,将新任务发送至所述数据库服务器,以供所述数据库服务器存储所述新任务;

在接收原任务调整指令后,发送调整后任务至所述数据库服务器,以供所述数据库服务器利用所述调整后任务覆盖所述原任务;

在接收任务顺序调整指令后,发送新任务执行顺序至所述数据库服务器,以供所述数据库服务器保存所述新任务执行顺序。

可选的,每个计算服务器,还用于从多个系统服务进程中选择一个系统服务进程,判断系统服务进程是否正常,若正常则继续选择下一系统服务进程,若不正常则读取系统服务进程的异常信息,并存储异常信息至所述数据库服务器的系统数据表;

每个计算服务器,还用于从多个通用服务进程中选择一个通用服务进程,判断通用服务进程是否正常,若正常则继续选择下一通用服务进程,若不正常则读取通用服务进程的异常信息,并存储异常信息至所述数据库服务器的系统数据表;

每个计算服务器,还用于从多个定制服务进程中选择一个定制服务进程,判断定制服务进程是否正常,若正常则继续选择下一定制服务进程,若不正常则读取定制服务进程的异常信息,并存储异常信息至所述数据库服务器的定制数据表。

可选的,所述系统服务进程包括:

消息创建进程、消息路由进程、服务调度进程、处理监视进程、内部出错报警进程、消息监视进程、处理错误报警进程处理错误处理进程、进程监视进程、系统错误处理进程;

所述通用服务进程包括:

批量读入数据文件进程、复制当前的数据文件进程、拼接当前读入的数据文件进程、继续等待进程、向文件服务器上传数据文件进程、将数据处理结果发送至文件服务器进程、将处理结果传送到客户端进程。

一种通用性分布式方法,包括:

构建多个应用场景共有的多个系统服务进程,多个应用场景共有的多个通用服务进程,以及,适用于多个应用场景的多个定制服务进程;

部署所述多个系统服务进程、所述多个通用服务进程和所述多个定制服务进程至分布式系统的计算服务器。

可选的,还包括:

构建与所述多个系统服务进程对应的系统数据表,与所述多个通用服务进程对应的系统数据表,以及,与所述多个定制服务进程一一对应的多个定制数据表;

部署所述系统数据表、所述通用数据表和所述多个定制数据表至分布式系统的数据库服务器中,以用于分别存储系统服务进程的数据、通用服务进程的数据和多个定制服务进程的数据。

可选的,所述分布式系统的计算服务器用于执行下述操作:

从多个系统服务进程中选择一个系统服务进程,判断系统服务进程是否正常,若正常则继续选择下一系统服务进程,若不正常则读取系统服务进程的异常信息,并存储异常信息至所述数据库服务器的系统数据表;

从多个通用服务进程中选择一个通用服务进程,判断通用服务进程是否正常,若正常则继续选择下一通用服务进程,若不正常则读取通用服务进程的异常信息,并存储异常信息至所述数据库服务器的系统数据表;

从多个定制服务进程中选择一个定制服务进程,判断定制服务进程是否正常,若正常则继续选择下一定制服务进程,若不正常则读取定制服务进程的异常信息,并存储异常信息至所述数据库服务器的定制数据表。

通过以上技术手段,可以实现以下有益效果:

本发明为了使得通用性分布式系统适用于不同的应用场景,预先构建多个应用场景共有的多个系统服务进程,多个应用场景共有的多个通用服务进程,以及,适用于多个应用场景的多个定制服务进程,并部署于分布式系统的每个计算服务器中。

由于系统服务进程、通用服务进程为不同应用场景所共有的,所以系统服务进程和通用服务进程可以适用于不同的应用场景。针对不同的应用场景设置不同的定制服务进程,从而可以实现每个应用场景的个性化进程,由此使得本发明提供的分布式系统具有通用性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例公开的一种通用性分布式系统的结构示意图;

图2为本发明实施例公开的一种通用性分布式方法实施例一的流程图;

图3为本发明实施例公开的一种通用性分布式方法实施例二的流程图;

图4为本发明实施例公开的一种通用性分布式方法实施例三的流程图;

图5为本发明实施例公开的一种通用性分布式方法实施例四的流程图;

图6为本发明实施例公开的一种通用性分布式方法实施例五的流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图1,本发明提供了一种通用性分布式系统,包括:

前端设备100,用于构建任务并发送所述任务。前端设备100的数量可以由一个或多个,前端设备的具体数量可以根据实际情况而定,对此不做限定。

与所述前端设备100相连的数据库服务器200,用于存储所述任务。

与所述数据库服务器200相连的计算服务器集群300,所述计算服务器集群包括用于从所述数据库服务器提取任务并分发任务的管控服务器,和,与所述管控服务器相连的、用于执行任务的多台计算服务器。

其中每个计算服务器集成有:多个应用场景共有的多个系统服务进程,多个应用场景共有的多个通用服务进程,以及,适用于多个应用场景的多个定制服务进程。

为了使得通用性分布式系统适用于不同的应用场景,预先构建多个应用场景共有的多个系统服务进程,多个应用场景共有的多个通用服务进程,以及,适用于多个应用场景的多个定制服务进程,并部署于分布式系统的每个计算服务器中。

通过以上技术手段,可以实现以下有益效果:

由于系统服务进程、通用服务进程为不同应用场景所共有的,所以系统服务进程和通用服务进程可以适用于不同的应用场景。针对不同的应用场景设置不同的定制服务进程,从而可以实现多个应用场景的个性化进程,由此使得本发明提供的分布式系统具有通用性。

可选的,为了适应于系统服务进程、通用服务进程和定制服务进程,数据库服务器包括:

与所述多个系统服务进程对应的系统数据表,用于存储多个系统服务进程的数据。

与所述多个通用服务进程对应的系统数据表,用于存储多个通用服务进程的数据。

与所述多个定制服务进程一一对应的多个定制数据表,用于存储多个定制数据表的数据。

由此可以使得数据库服务器中的数据与进程对应,后续可以简单方便的从服务进程对应的数据表中提取数据。

可选的,为了便于用户方便的使用通用性的分布式系统,所述前端设备还用于提供任务交互界面,通过所述任务交互界面接收新任务制定指令、原任务调整指令和/或任务顺序调整指令。

在接收新任务制定指令后,将新任务发送至所述数据库服务器,以供所述数据库服务器存储所述新任务。

在接收原任务调整指令后,发送调整后任务至所述数据库服务器,以供所述数据库服务器利用所述调整后任务覆盖所述原任务。

在接收任务顺序调整指令后,发送新任务执行顺序至所述数据库服务器,以供所述数据库服务器保存所述新任务执行顺序。

可选的,本申请的软件可以采用c++方式来实现,使得整体软件流程采用一种语言来实现,不同软件模块之间更加通用,交互起来更加方便。

下面介绍与分布式系统对应的通用性分布式方法的实施例一,参见图2,可以包括以下步骤:

步骤s201:前端设备构建任务并发送所述任务至数据库服务器。

前端设备可以根据应用场景构建一个或多个任务并设置任务优先级,发送任务和优先级至数据库服务器。

步骤s202:数据库服务器存储任务并对按任务优先级设置任务执行顺序。

数据库服务器接收一个或多个任务,并按任务优先级对任务排序,获得多个任务的执行顺序,多个任务的执行顺序作为任务执行顺序。可以采用一个数据表来存储任务执行顺序,具体实现可以根据实际情况来定。

步骤s203:管控服务器按照任务执行顺序从数据库服务器中提取任务。

管控服务器按照任务执行顺序选择一个或多个任务来处理,为了便于描述以一个任务为例进行后续说明。

步骤s204:管控服务器拆分所述任务为多个子任务。

若一个任务大于预设数据量,则说明该任务较大,可以对任务进行拆分,按照一定的规则对任务进行拆分,获得多个子任务。

当然,若一个任务不大于预设数据量,则说明该任务较小,可以不对任务进行拆分。针对多个较小任务,还可以组合成一个不大于预设数据量的任务。

步骤s205:按负载均衡策略分发所述多个子任务,至所述计算服务器集群中处于正常状态的计算服务器,以供处于正常状态的计算服务器执行子任务。

通用性分布式系统中具有多个计算服务器,为了实现多个计算服务器的负载均衡,按照一定的负责均衡策略来分发多个子任务至计算服务器集群中计算服务器。

可以理解的是,由于计算服务器集群中计算服务器在使用过程中可能出现异常,因此,可以根据计算服务器的状态,分发多个子任务至计算服务器集群中处于正常状态的计算服务器,以便子任务可以快捷处理。

步骤s206:处于正常状态的计算服务器执行子任务,并根据执行过程生成子任务执行状态和进度。

处于正常状态的计算服务器执行子任务,根据系统服务进程、通用服务进程和定制服务进程来执行子任务,并可以在执行过程中生成子任务执行状态和进度。

若某一计算服务器运行过程中出现异常,可以通知管控服务器,以便管控服务器得知计算服务器的状态。

步骤s207:处于正常状态的计算服务器发送子任务执行状态和进度至管控服务器。

为了便于管控服务器得知每个计算服务器的负载量,也为了便于用于用户得知任务的执行状态和进度,计算服务器发送子任务执行状态和进度至管控服务器。

步骤s208:管控服务器接收处于正常状态的计算服务器发送的子任务执行状态和进度,并发送所述任务中多个子任务执行状态和进度至前端设备。

管控服务器接收处于正常状态的计算服务器发送的子任务执行状态和进度,以便基于执行状态和进度来确定计算服务器的负载情况,以用于分发任务时执行负载均衡策略时使用。

管控服务器还可以发送任务中多个子任务执行状态和进度至前端设备,以供用户查看任务的执行状态和进度。

步骤s209:所述前端设备显示所述任务中多个子任务执行状态和进度。

通过上述技术特征可知,本实施例具有以下技术效果:

由于系统服务进程、通用服务进程为不同应用场景所共有的,所以系统服务进程和通用服务进程可以适用于不同的应用场景。针对不同的应用场景设置不同的定制服务进程,从而可以实现多个应用场景的个性化进程,由此使得本发明提供的分布式系统具有通用性。

并且,本发明可以在分布式系统中实现负载均衡、便于用户了解任务执行状态和进度,用户可以通过任务交互界面来简单方便的新建、调整和更改任务。

本申请提供一种通用性分布式方法实施例二,以介绍通用性分布式系统的预先操作流程。参见图3,包括以下步骤:

步骤s301:构建多个应用场景共有的多个系统服务进程,多个应用场景共有的多个通用服务进程,以及,适用于多个应用场景的多个定制服务进程。

获取多个应用场景的分布式系统共有的系统服务进程、多个应用场景共有的多个通用服务进程。

其中,所述系统服务进程包括:消息创建进程、消息路由进程、服务调度进程、处理监视进程、内部出错报警进程、消息监视进程、处理错误报警进程处理错误处理进程、进程监视进程、系统错误处理进程。

所述通用服务进程包括:批量读入数据文件进程、复制当前的数据文件进程、拼接当前读入的数据文件进程、继续等待进程、向文件服务器上传数据文件进程、将数据处理结果发送至文件服务器进程、将处理结果传送到客户端进程。

当然,上述系统服务进程和通用服务进程仅为列举的一些具体实例,在实际应用中还可以包括其它服务器进程。

技术人员仅针对不同的应用场景的开发定制服务进程即可,关于定制服务进程的具体实现与实际应用场景有关,在此不再赘述。

步骤s302:部署所述多个系统服务进程、所述多个通用服务进程和所述多个定制服务进程至分布式系统的计算服务器。

部署于所述多个系统服务进程、所述多个通用服务进程和所述多个定制服务进程至分布式系统的计算服务器,以便分布式系统中多个计算服务器均可以执行不同应用场景的任务。

步骤s303:构建与所述多个系统服务进程对应的系统数据表,与所述多个通用服务进程对应的系统数据表,以及,与所述多个定制服务进程一一对应的多个定制数据表。

为了便于数据分类存储,构建与所述多个系统服务进程对应的系统数据表,与所述多个通用服务进程对应的系统数据表,以及,与所述多个定制服务进程一一对应的多个定制数据表。

由于系统服务进程具有共性,所以多个系统服务进程可以采用一个系统数据表。由于通用服务进程具有共性,所以多个通用服务进程采用一个系统数据表。

由于多个定制服务进程为适用于不同应用场景的,所以分别单独的设置每个定制服务进程的定制数据表,以用于分别存储每个应用场景的数据。

步骤s304:部署所述系统数据表、所述通用数据表和所述多个定制数据表至分布式系统的数据库服务器中,以用于分别存储系统服务进程的数据、通用服务进程的数据和多个定制服务进程的数据。

为了便于系统服务进程、通用服务进程和定制服务进程可以正常工作,计算服务器可以对系统服务进程、通用服务进程和定制服务进程执行监测过程。

本申请提供一种通用性分布式方法实施例三,以介绍通用性分布式系统的中系统服务进程的监测过程。参见图4,包括以下步骤:

步骤s401:从多个系统服务进程中选择一个系统服务进程。

步骤s402:判断系统服务进程是否正常。若是则进入步骤s405,若否则进入步骤s403。

若系统服务进程正常则继续选择下一系统服务进程,重复执行监测过程。

步骤s403:若不正常则读取系统服务进程的异常信息,并存储异常信息至所述数据库服务器的系统数据表,进入步骤s404。

步骤s404:是否终止系统服务进程;若是则中止系统服务进程进入步骤s405;若否则进入步骤s405。

步骤s405:判断系统服务进程是否循环结束;若是则结束本次监测,若否则进入步骤s401。

本申请提供一种通用性分布式方法实施例四,以介绍通用性分布式通用的中通用服务进程的监测过程。参见图5,包括以下步骤:

步骤s501:从多个通用服务进程中选择一个通用服务进程。

步骤s502:判断通用服务进程是否正常。若是则进入步骤s505,若否则进入步骤s503。

若通用服务进程正常则继续选择下一通用服务进程,重复执行监测过程。

步骤s503:若不正常则读取通用服务进程的异常信息,并存储异常信息至所述数据库服务器的通用数据表,进入步骤s504。

步骤s504:是否终止通用服务进程;若是则中止通用服务进程进入步骤s505;若否则进入步骤s505。

步骤s505:判断通用服务进程是否循环结束;若是则结束本次监测,若否则进入步骤s501。

本申请提供一种定制性分布式方法实施例五,以介绍定制性分布式定制的中定制服务进程的监测过程。参见图6,包括以下步骤:

步骤s601:从多个定制服务进程中选择一个定制服务进程。

步骤s602:判断定制服务进程是否正常。若是则进入步骤s605,若否则进入步骤s603。

若定制服务进程正常则继续选择下一定制服务进程,重复执行监测过程。

步骤s603:若不正常则读取定制服务进程的异常信息,并存储异常信息至所述数据库服务器的定制数据表,进入步骤s604。

步骤s604:是否终止定制服务进程;若是则中止定制服务进程进入步骤s605;若否则进入步骤s605。

步骤s605:判断定制服务进程是否循环结束;若是则结束本次监测,若否则进入步骤s601。

通过图4、图5和图6所示的实施例,每个计算服务器可以系统服务进程、通用服务进程和定制服务进程进行监测,以便在通用性分布式系统中及时监测到出现异常的服务进程,并告知技术人员进行调整,进而提高计算服务器可靠性。

本实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本发明实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1