掌桥专利:专业的专利平台
掌桥专利
首页

一种分布式计算框架及分布式计算处理方法

文献发布时间:2023-06-19 18:37:28


一种分布式计算框架及分布式计算处理方法

技术领域

本申请涉及计算机技术领域,更具体地说,涉及一种分布式计算框架及分布式计算处理方法。

背景技术

目前,在企业的数据规模庞大且业务的逻辑也极为复杂的情况下,为保证数据计算的时效性,一般会基于分布式计算框架来进行大规模数据的处理及对繁杂的业务逻辑进行合理设计。

其中,目前,为了实现企业级的大规模数据处理和复杂的业务逻辑,一般需要开发人员采用原生Java编程的方式,基于Java语言编写复杂的业务代码开发分布式计算框架,但是,上述方式存在开发难度大,开发效率低的问题。

发明内容

为解决上述问题,本申请提供以下技术方案:

本申请一方面提供一种分布式计算框架,包括:分布式计算引擎Spark驱动端、多个Spark从节点和Spring Boot模块;

所述Spring Boot模块包括Spring Boot框架中容器管理的第一对象和至少一个第二对象,各所述第二对象各自对应一个分布式计算业务逻辑,且,各所述第二对象对应的分布式计算业务逻辑相互具有差异,所述第一对象为将所述Spark驱动端中的SparkSession注入到所述容器中得到的;

所述第二对象,用于基于其对应的分布式计算业务逻辑,获得分布式计算信息,调用所述第一对象,以使得所述第一对象使用所述Spark驱动端的驱动功能,将所述分布式计算信息发送给各所述Spark从节点。

可选的,所述第二对象基于其对应的分布式计算业务逻辑,获得分布式计算信息的过程,具体包括:

所述第二对象基于其对应的分布式计算业务逻辑和JPA框架获得待广播数据;

所述第二对象基于其对应的分布式计算业务逻辑生成任务。

可选的,所述第二对象调用所述第一对象,以使得所述第一对象使用所述Spark驱动端的驱动功能,将所述分布式计算信息发送给各所述Spark从节点的过程,具体包括:

所述第二对象若从责任链上获得到与其具有依赖关系的其它第二对象发送的第一信息,则调用所述第一对象,以使得所述第一对象使用所述Spark驱动端的驱动功能,将所述任务发送给各所述Spark从节点,所述第一信息表征其它第二对象的任务已经执行完成,所述责任链为多个所述第二对象进行串联连接得到的。

可选的,所述Spark从节点,用于执行所述任务,得到执行结果,并将所述执行结果持久化存储到所述Spark从节点所在服务器的内存或硬件存储设备中。

可选的,各所述第二对象各自对应的分布式计算业务逻辑的至少一部分为基于面向切面编程AOP处理得到的。

本申请另一方面提供一种分布式计算处理方法,基于分布式计算框架,所述分布式计算框架包括:分布式计算引擎Spark驱动端、多个Spark从节点和Spring Boot模块,所述Spring Boot模块包括Spring Boot框架中容器管理的第一对象和至少一个第二对象,各所述第二对象各自对应一个分布式计算业务逻辑,且,各所述第二对象对应的分布式计算业务逻辑相互具有差异,所述第一对象为将所述Spark驱动端中的SparkSession注入到所述容器中得到的;

所述第二对象基于其对应的分布式计算业务逻辑,获得分布式计算信息;

所述第二对象调用所述第一对象,以使得所述第一对象使用所述Spark驱动端的驱动功能,将所述分布式计算信息发送给各所述Spark从节点。

可选的,所述第二对象基于其对应的分布式计算业务逻辑,获得分布式计算信息,包括:

所述第二对象基于其对应的分布式计算业务逻辑和JPA框架获得待广播数据;

所述第二对象基于其对应的分布式计算业务逻辑生成任务。

可选的,所述第二对象调用所述第一对象,以使得所述第一对象使用所述Spark驱动端的驱动功能,将所述分布式计算信息发送给各所述Spark从节点,包括:

所述第二对象若从责任链上获得到与其具有依赖关系的其它第二对象发送的第一信息,则调用所述第一对象,以使得所述第一对象使用所述Spark驱动端的驱动功能,将所述任务发送给各所述Spark从节点,所述第一信息表征其它第二对象的任务已经执行完成,所述责任链为多个所述第二对象进行串联连接得到的。

可选的,所述方法还包括:

所述Spark从节点执行所述任务,得到执行结果,并将所述执行结果持久化存储到所述Spark从节点所在服务器的内存或硬件存储设备中。

可选的,各所述第二对象各自对应的分布式计算业务逻辑的至少一部分为基于面向切面编程AOP处理得到的。

在本申请中,开发人员可以基于Spring Boot框架开发分布式计算业务逻辑,得到Spring Boot框架中容器管理的至少一个第二对象且各第二对象各自对应一个分布式计算业务逻辑,并可以将Spark驱动端中的SparkSession注入到所述容器中得到第一对象,使得Spark驱动端中的SparkSession可以由Spring Boot框架中容器进行管理,保证第二对象可以通过调用第一对象,使用Spark驱动端的驱动功能,以开发得到分布式计算框架。由于,Spring Boot框架可以简化开发人员对分布式计算业务逻辑的开发过程,因此可以简化分布式计算框架的开发过程,提高分布式计算框架的开发效率。

附图说明

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

图1为本申请提供的一种分布式计算框架的结构示意图;

图2为本申请提供的另一种分布式计算框架的结构示意图;

图3为本申请提供的一种分布式计算框架的实施场景示意图;

图4为本申请提供的再一种分布式计算框架的结构示意图;

图5为本申请提供的一种分布式计算处理方法的流程示意图;

图6为本申请提供的另一种分布式计算处理方法的流程示意图。

具体实施方式

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

为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。

参照图1,为本申请实施例1提供的一种分布式计算框架的结构示意图,如图1所示,分布式计算框架可以包括但并不局限于:

Spark(分布式计算引擎)驱动端、多个Spark从节点和Spring Boot模块。其中,多个Spark从节点表示为Spark从节点1、Spark从节点2、…、Spark从节点n。

分布式计算引擎,可以理解为:专为大规模数据处理而设计的快速通用的计算引擎。

Spark驱动端,至少可以用于进行任务的分发。

Spark从节点可以用于接收Spark驱动端发送来的任务,并执行任务。

Spring Boot模块包括Spring Boot框架中容器管理的第一对象和至少一个第二对象,各所述第二对象各自对应一个分布式计算业务逻辑,且,各所述第二对象对应的分布式计算业务逻辑相互具有差异,所述第一对象为将Spark驱动端中的SparkSession注入到所述容器中得到的。其中,至少一个第二对象表示为Bean 1、Bean 2、…、Bean m。

Spring Boot框架,可以理解为Java平台上的应用框架,可解决企业级编程开发中的复杂性。

本实施例中,可以基于Spring Boot框架中IoC(Inversion of Control,控制反转)技术将Spark驱动端中的SparkSession注入到所述容器。其中,IoC可以降低Java编程中对象之间的耦合关系。

Spark驱动端中的SparkSession可以为用户提供一个统一的切入点来使用Spark驱动端的各项功能。

所述第二对象,用于基于其对应的分布式计算业务逻辑,获得分布式计算信息,调用所述第一对象,以使得所述第一对象使用所述Spark驱动端的驱动功能,将所述分布式计算信息发送给各所述Spark从节点。

第一对象和第二对象可以理解为:构成应用程序主干并由Spring Boot框架中容器管理的对象。第一对象和第二对象是由Spring Boot框架中容器实例化、组装和管理的对象。

如图2所示,第二对象基于其对应的分布式计算业务逻辑,获得分布式计算信息的过程,具体可以包括:

所述第二对象基于其对应的分布式计算业务逻辑和JPA(Java Persistence API)框架获得待广播数据;

所述第二对象基于其对应的分布式计算业务逻辑生成任务。

相应地,第二对象调用所述第一对象,以使得所述第一对象使用所述Spark驱动端的驱动功能,将所述分布式计算信息发送给各所述Spark从节点的过程,具体可以包括:

第二对象调用所述第一对象,以使得所述第一对象使用所述Spark驱动端的广播功能,将待广播数据广播给各所述Spark从节点,并使用所述Spark驱动端的任务分发功能,将任务发送给各所述Spark从节点。各所述Spark从节点各自可以至少基于待广播数据执行任务。所述Spark驱动端可以对各所述Spark从节点的任务执行结果进行回收与处理。

JPA框架提供了一种企业级持久层规范,Spring Boot框架持久层由JPA框架作为支持。JPA框架可以方便Spring Boot框架持久层对数据库进行操作,以读写数据。SpringBoot框架持久层由JPA框架作为支持可以使得开发人员开发代码来简单易用。

本实施例中,Spring Boot框架中容器可以基于责任链模式对各个第二对象进行管理,使得各个所述第二对象进行串联连接得到责任链。其中,责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。

对应Spring Boot框架中容器可以基于责任链模式对各个第二对象进行管理的实施方式,所述第二对象调用所述第一对象,以使得所述第一对象使用所述Spark驱动端的驱动功能,将所述分布式计算信息发送给各所述Spark从节点的过程,具体可以包括:

所述第二对象若从责任链上获得到与其具有依赖关系的其它第二对象发送的第一信息,则调用所述第一对象,以使得所述第一对象使用所述Spark驱动端的驱动功能,将所述任务发送给各所述Spark从节点。

所述第一信息表征其它第二对象的任务已经执行完成,所述责任链为多个所述第二对象进行串联连接得到的。

例如,如图3所示,Bean 1可以产生任务A,将任务A发送给各Spark从节点,各Spark从节点各自执行任务A,得到执行结果A,第一对象可以使用所述Spark驱动端的回收功能,将各Spark从节点返回的第一信息发送给责任链上的各个第二对象,由于Bean 2产生的任务B需要依赖于结果A,因此Bean 2在接收到第一信息时,调用第一对象,将任务B发送给各Spark从节点。

对应所述第二对象若从责任链上获得到与其具有依赖关系的其它第二对象发送的第一信息,则调用所述第一对象,以使得所述第一对象使用所述Spark驱动端的驱动功能,将所述任务发送给各所述Spark从节点的实施方式,为了实现在责任链中下一个第二对象的任务可以被各所述Spark从节点执行,需要保证各所述Spark从节点每次任务执行得到的执行结果不丢失,因此各所述Spark从节点在接收到任务后,可以用于执行所述任务,得到执行结果,并将所述执行结果持久化存储到所述Spark从节点所在服务器的内存或硬件存储设备中。

如图4所示,在本实施例中,各所述第二对象各自对应的分布式计算业务逻辑的至少一部分为基于AOP(面向切面编程,Aspect Oriented Programming)处理得到的。利用AOP可以对分布式计算业务逻辑的各个部分进行隔离,从而使得分布式计算业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

下面对本申请提供的分布式计算处理方法进行描述,下文描述的分布式计算处理方法与上文描述的分布式计算框架可相互对应参照。

本实施例提供的分布式计算处理方法基于上述实施例所介绍的分布式计算框架,如图5所示,该方法可以包括但不局限于以下步骤:

步骤S101、所述第二对象基于其对应的分布式计算业务逻辑,获得分布式计算信息。

步骤S102、所述第二对象调用所述第一对象,以使得所述第一对象使用所述Spark驱动端的驱动功能,将所述分布式计算信息发送给各所述Spark从节点。

在本申请的另一个实施例中,对步骤S101进行介绍,如图6所示,步骤S101可以包括:

步骤S1011、所述第二对象基于其对应的分布式计算业务逻辑和JPA框架获得待广播数据。

步骤S1012、所述第二对象基于其对应的分布式计算业务逻辑生成任务。

对应步骤S1011-S1012,步骤S102可以包括:

S1021、第二对象调用所述第一对象,以使得所述第一对象使用所述Spark驱动端的广播功能,将待广播数据广播给各所述Spark从节点,并使用所述Spark驱动端的任务分发功能,将任务发送给各所述Spark从节点。

本实施例中,步骤S102可以包括:

S1021、所述第二对象若从责任链上获得到与其具有依赖关系的其它第二对象发送的第一信息,则调用所述第一对象,以使得所述第一对象使用所述Spark驱动端的驱动功能,将所述任务发送给各所述Spark从节点,所述第一信息表征其它第二对象的任务已经执行完成,所述责任链为多个所述第二对象进行串联连接得到的。

本实施例中,上述方法还可以包括:

所述Spark从节点执行所述任务,得到执行结果,并将所述执行结果持久化存储到所述Spark从节点所在服务器的内存或硬件存储设备中。

本实施例中,各所述第二对象各自对应的分布式计算业务逻辑的至少一部分为基于面向切面编程AOP处理得到的。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

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

技术分类

06120115630645