CN112380040A - 一种消息处理的方法、装置、电子设备及存储介质 - Google Patents
一种消息处理的方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112380040A CN112380040A CN202110059422.6A CN202110059422A CN112380040A CN 112380040 A CN112380040 A CN 112380040A CN 202110059422 A CN202110059422 A CN 202110059422A CN 112380040 A CN112380040 A CN 112380040A
- Authority
- CN
- China
- Prior art keywords
- dockers
- task
- interface
- kafka
- message
- 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.)
- Granted
Links
Images
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/546—Message passing systems or structures, e.g. queues
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/541—Client-server
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种消息处理的方法、装置、电子设备及存储介质。所述方法包括:基于go语言,分别编译接口Dockers的接口和功能Dockers的接口;所述接口Dockers 通过所述接口Dockers的接口,接收多个待处理的消息;其中,每个所述待处理的消息携带标签;所述接口Dockers将多个所述消息分配至多个不同的接口服务器;每个所述接口服务器将所述消息转换成kafka消息;每个所述接口服务器根据所述消息的标签,将所述kafka消息发送至与所述标签对应的所述功能Dockers;所述功能Dockers的接口接收所述多个不同的接口服务器各自发送的所述kafka消息,并根据所述kafka消息执行相应的操作。采用本发明的技术方案可以在提高服务器架构的接口性能的同时,实现接口服务器的高可用性。
Description
技术领域
本发明涉及信息处理技术领域,特别是涉及一种消息处理的方法、装置、电子设备及存储介质。
背景技术
在视频云剪辑软件中,传统的消息处理方法,由于采用java作为服务器端程序语言,一方面使得接口端一次只能接收一个消息(如数据请求消息或任务执行消息),存在不能同时接收和处理多个消息的消息并发情况;另一方面,使得接口端只能设置在一个接口服务器上,若该服务器出现宕机的情形,则整个视频云剪辑软件将因无法接收到请求信息而瘫痪。
因此,传统的消息处理方法,由于采用java作为服务器端程序语言,使得接口存在性能较低、较难处理消息高并发的场景,以及视频云剪辑软件因接口服务器宕机而瘫痪等问题。
发明内容
鉴于上述问题,本发明实施例提供了一种消息处理的方法、装置、电子设备及存储介质,旨在解决视频云编辑软件中的服务器端架构中存在的接口性能较低、较难处理消息高并发场景等问题。
为了解决上述技术问题,本发明采取以下方案实现:
第一方面,提供了一种消息处理的方法,应用于视频云编辑软件中的服务器端架构,所述方法包括:
基于go语言,分别编译接口Dockers的接口和功能Dockers的接口;
所述接口Dockers通过所述接口Dockers的接口,接收多个待处理的消息;其中,每个所述待处理的消息携带标签;
所述接口Dockers将多个所述消息分配至多个不同的接口服务器;
每个所述接口服务器将所述消息转换成kafka消息;
每个所述接口服务器根据所述消息的标签,将所述kafka消息发送至与所述标签对应的所述功能Dockers;
所述功能Dockers的接口接收所述多个不同的接口服务器各自发送的所述kafka消息,并根据所述kafka消息执行相应的操作。
优选地,在所述接收多个待处理的消息之前,所述方法还包括:
服务器端接收客户端发送的登录请求;
根据所述登录请求,所述服务器端基于JWT生成特定的token,并将所述token返回给所述客户端。
优选地,所述待处理的消息包括消息请求头,所述消息请求头携带token;
所述接口Dockers通过所述接口Dockers的接收接口,接收待处理的消息,包括:
所述客户端将接收的所述token添加至待处理的消息的请求头中,并将携带有所述token的待处理的消息发送给所述接口Dockers;
所述接口Dockers根据所述token,验证所述客户端是否为发送登录请求的客户端;
若是,所述接口Dockers通过所述接口Dockers的接收接口,接收所述待处理的消息。
优选地,所述接口Dockers包括多个接口服务器,并且每个接口服务器设有kafka,所述接口Dockers将多个所述消息分配至多个不同的接口服务器,包括:
基于k8s,所述接口Dockers根据每个所述待处理的消息携带的标签,将多个所述消息发送至与所述标签对应的接口服务器的kafka中。
优选地,所述功能Dockers为任务Dockers,所述任务Dockers中设有多个任务服务器,并且每个任务服务器设有kafka,所述功能Dockers的接口接收所述多个不同的接口服务器各自发送的所述kafka消息,并根据所述kafka消息执行相应的操作,包括:
所述任务Dockers的接口,接收所述多个不同的接口服务器各自发送的所述kafka消息;
所述任务Dockers根据kafka的处理规则,将接收的多个所述kafka消息,一一发送至每个所述任务服务器中;
每个所述任务服务器根据各自接收的kafka消息,执行与所述kafka消息对应的任务工程。
优选地,所述任务Dockers包括任务队列,所述任务队列用于存储未处理的kafka消息,所述任务Dockers根据kafka的处理规则,将接收的多个所述kafka消息,一一发送至每个所述任务服务器中,包括:
检测任务Dockers中是否有空闲的任务服务器;
若有空闲的任务服务器,则任务Dockers将接收的多个所述kafka消息发送至空闲的任务服务器;
若无空闲的任务服务器,则任务Dockers将接收的多个所述kafka消息发送至任务队列中。
优选地,所述任务Dockers包括任务队列,所述任务队列用于存储未处理的kafka消息,在每个所述目标任务服务器根据该目标任务服务器的kafka各自接收的kafka消息,执行与所述kafka消息对应的任务工程之后,所述方法还包括:
所述执行任务工程的任务服务器向所述任务Dockers发送消息处理结束信息;
所述任务Dockers接收到所述消息处理结束信息后,查询所述任务队列中是否存储有未处理的kafka消息;
若有未处理的kafka消息,则所述任务Dockers将所述未处理的kafka消息,分配至所述执行任务工程的任务服务器;
所述执行任务工程的任务服务器执行与所述未处理的kafka消息对应的任务工程。
优选地,所述功能Dockers为数据库Dockers,所述数据库Dockers包括redisDockers和mysql Dockers;
所述功能Dockers的接口接收所述多个不同的接口服务器各自发送的所述kafka消息,并根据所述kafka消息执行相应的操作,还包括:
所述redis Dockers的接口接收所述多个不同的接口服务器各自发送的所述kafka消息;
所述redis Dockers根据每个所述kafka消息检测本地的数据资源列表中是否存储有每个所述kafka消息所请求的数据;
若检测到已存储,则所述redis Dockers通过所述数据资源列表的接口读取所述所请求的数据,并返回给每个所述kafka消息对应的所述客户端;
若检测到未存储,则所述redis Dockers根据每个所述kafka消息从所述mysqlDockers中的数据资源列表中读取所述所请求的数据数据资源列表,并返回给每个所述kafka消息对应的所述客户端。
优选地,所述视频云编辑软件中的服务器端架构,包括接口Dockers和功能Dockers,所述接口Dockers将接收到的待处理的消息发送给所述功能Dockers;
其中,所述功能Dockers为任务Dockers和数据库Dockers中的任意一种;
所述任务Dockers为所述转码Dockers和所述合成Dockers中的任意一种。
优选地,所述接口Dockers包括一个接口和多个接口服务器;
所述接口,用于接收客户端发送的待处理的消息,以及,将所述待处理的消息下发给所述接口服务器;
每个所述接口服务器下端设有kafka,每个所述接口服务器通过所述kafka接收所述接口下发的所述待处理的信息,以及,将所述待处理消息转换成kafka消息,并将所述kafka消息发送给所述功能Dockers。
优选地,所述功能Dockers为所述任务Dockers,所述任务Dockers包括一个接口和多个任务服务器;
所述任务Dockers的接口,用于接收所述接口服务器的kafka发送的所述kafka消息,以及,将所述kafka消息下发给所述任务服务器;
每个所述任务服务器下端设有kafka,每个所述任务服务器通过所述任务服务器的kafka接收所述任务Dockers的接口下发的所述kafka信息;
每个所述任务服务器根据所述kafka信息,执行与所述kafka信息对应的任务工程,并将所述任务工程执行后得到的任务数据发送给所述数据库 Dockers;
其中,所述将所述任务工程执行后得到的任务数据发送给所述数据库 Dockers,包括:
将所述任务数据按照是否需要返回给所述客户端进行分类;
将所述任务数据中需要返回给所述客户端的数据作为热数据,发送至redis Dockers;
将所述任务数据中不需要返回给所述客户端的数据作为冷数据,发送至mysqlDockers。
优选地,所述功能Dockers为所述数据库Dockers,其中,所述数据库Dockers为redis Dockers和mysql Dockers中的任意一种;
当所述功能Dockers为所述redis Dockers时,所述redis Dockers包括一个接口和多个redis服务器;
所述redis Dockers的接口,用于接收所述转码服务器和/或所述合成服务器发送的热数据,并将所述热数据下发至所述redis服务器中的资源数据列表;
当所述数据库Dockers为所述mysql Dockers时,所述mysql Dockers包括一个接口和多个mysql服务器;
所述mysql Dockers的接口,用于接收所述转码服务器和/或所述合成服务器发送的冷数据,并将所述冷数据下发至所述mysql服务器中的资源数据列表。
本发明实施例的第二方面,提供了一种消息处理的装置,所述装置包括:
编译模块,用于基于go语言,分别编译接口Dockers的接口和功能Dockers的接口;
接收模块,用于所述接口Dockers通过所述接口Dockers的接口,接收多个待处理的消息;其中,每个所述待处理的消息携带标签;
分配模块,用于所述接口Dockers将多个所述消息分配至多个不同的接口服务器;
转换模块,用于每个所述接口服务器将所述消息转换成kafka消息;
发送模块,用于每个所述接口服务器根据所述消息的标签,将所述kafka消息发送至与所述标签对应的所述功能Dockers;
执行模块,用于所述功能Dockers的接口接收所述多个不同的接口服务器各自发送的所述kafka消息,并根据所述kafka消息执行相应的操作。
本发明实施例的第三方面,提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的消息处理的方法。
本发明实施例的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面所述的消息处理的方法的步骤。
本发明实施例中,基于go语言,分别编译接口Dockers的接口和功能Dockers的接口;所述接口Dockers 通过所述接口Dockers的接口,接收多个待处理的消息;其中,每个所述待处理的消息携带标签;所述接口Dockers将多个所述消息分配至多个不同的接口服务器;每个所述接口服务器将所述消息转换成kafka消息;每个所述接口服务器根据所述消息的标签,将所述kafka消息发送至与所述标签对应的所述功能Dockers;所述功能Dockers的接口接收所述多个不同的接口服务器各自发送的所述kafka消息,并根据所述kafka消息执行相应的操作。
本发明实施例中,接口Dockers和功能Dockers的接口,都是基于go语言进行编译的,基于go语言编译的接口,有效降低了服务器端架构资源的占用,进而提高了服务器架构中各个接口的性能,实现了接口服务器的高可用性。
本发明实施例中,使用docker实现了多个接口服务器的水平扩充服务,容错部分服务器宕机的情形,实现了接口服务器的高可用性。并且,本发明实施例中,通过使用kafka作为消息中间件,实现采用消息触发机制进行任务的创建,提高了消息的高并发处理效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中的一种消息处理的方法的通信环境示意图;
图2是本发明实施例中的一种消息处理的方法的步骤流程图;
图3是本发明实施例中的一种根据kafka消息执行相应的操作的步骤流程图;
图4是本发明实施例中的一种在执行完当前任务操作后的后续步骤的执行流程图;
图5是本发明实施例中的另一种根据所述kafka消息执行相应的操作的步骤流程图;
图6是本发明实施例中的视频云编辑软件中的服务器端架构的示意图;
图7是本发明实施例中的一种消息处理的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例中的一种消息处理的方法的通信环境示意图。参照图1,本发明的实施环境包括:客户端100和服务器端200。其中,首先,当客户端100需要与服务器端200连接时,客户端100向服务器端200发送登录请求消息,当服务器端接收到登录请求消息后,基于JWT生成特定的token,并将该token作为进行请求的身份验证令牌,返回给客户端100;然后,当客户端100向服务器端200请求任务时,客户端100先将token设于任务请求消息的请求头中,再将携带有token的任务请求消息发送到服务器端200;接着,服务器端200根据接收的任务请求消息中的携带的token,验证发送任务请求消息的客户端是否为发送登录请求的客户端,若验证成功,则处理该客户端100发送的任务请求消息。
客户端100与服务器端200通信连接,其中,连接方式可以是有线连接,或者是无线连接。并且,客户端100可以是web端;服务器端200是由若干台服务器组成的服务器集群,或者是一个云计算服务中心。
本发明实施例中,Dockers是指:基于k8s和docker,设有多个水平扩充的服务器的集群。其中,k8s是开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能,在本实施例中,其主要功能包括管理docker容器;docker是一个开源的应用容器引擎;kafka是指:设置于服务器(指本申请中的接口服务器或任务服务器)下的开源流处理平台,用于接收Dockers接口下发的消息和向功能Dockers发送kafka消息,其中,kafka消息是指接口服务器接收到客户端100发送的消息后,生成的消息;特定的token是指:服务器端基于JWT(全称为:JSON WEB TOKEN)生成的对请求参数顺序无要求的一串字符串,作为进行请求的标识,其中,JWT是一种用于通信双方之间传递安全信息的简洁的、URL安全的表述性声明规范,经常用在跨域身份验证;redis是指:存储热数据的内存数据库redis;mysql是指:存储冷数据的数据库mysql;其中,热数据是指:需要返回给用户的数据(如视频资源数据、用户资源数据、项目工程数据等);冷数据是指:用户在web端看不到的数据,即不用展示给用户的数据(如任务数据,任务执行完后直接存储即可,不用返回给客户端)。
本发明实施例第一方面,提供了一种消息处理的方法。参照图2,图2是本发明实施例中的一种消息处理的方法的步骤流程图。如图2所示,该方法,具体可以包括以下步骤:
步骤S21:基于go语言,分别编译接口Dockers的接口和功能Dockers的接口。
具体实施时,本发明中的后台所有的接口都是基于go语言实现的,例如,基于go语言,编译接口Dockers的接口和功能Dockers的接口。其中,接口Dockers的接口是指:接收客户端发出的消息(该消息,是指客户端的请求消息,例如:请求数据的消息、执行视频合成任务的消息或执行视频转码任务的消息)的接口,即客户端可以通过该接口,实现对服务器端的功能调用;功能Dockers的接口是指:用于接收接口Dockers中的接口服务器下面的kafka发送kafka消息,并将接收的kafka消息分配至空闲的功能服务器,由空闲的功能服务器,根据接收的kafka消息执行与上述客户端发出的请求消息,例如:根据请求数据的消息,调用数据库中的数据并通过该功能Dockers的接口向客户端返回调用的数据。
本实施例中,后台所有接口基于go语言实现,由于基于go语言请求的时候,占用资源少,因而可以提高接口的性能问题,实现同时接收多个由客户端发出的消息,并将接收的多个消息下发至接口Dockers中的接口服务器,实现消息的并发处理,解决常用技术手段中的基于Java语言编译接口所存在的处理并发的性能有限。
步骤S22:所述接口Dockers通过所述接口Dockers的接口,接收多个待处理的消息;其中,每个所述待处理的消息携带标签。
本实施例中,如上述步骤S21所述,本发明中的接口Dockers设有一个统一的接口,通过该接口与客户端进行通信连接,客户端可通过该接口向服务器端中的接口Dockers发送消息。具体实施时,当客户端向接口Dockers发送多个消息时,接口Dockers通过接口Dockers的接口,接收多个待处理的消息。
其中,本发明中的每个待处理的消息都携带一个标签,该标签用于指示每个待处理的消息所执行的操作主题,例如,当消息为请求数据消息时,该消息的操作主题为请求数据,则标签可以为请求数据。
实际中,也可以用其他方式表示操作主题的标签,在本发明中不做限定,例如:请求数据的标签为1,合成任务的标签为2,转码任务的标签为3。
步骤S23:所述接口Dockers将多个所述消息分配至多个不同的接口服务器。
本实施例中,接口Dockers中包括多个接口服务器,并且每个接口服务器下面都设有kafka消息中间件集群,具体实施时,基于k8s,接口Dockers将多个消息分配至多个不同的接口服务器中。其中,k8s(即,一套自动化部署工具,可全生命周期管理Dockers容器)是本发明中用于编排哪一个接口服务器进行服务的工具,可以启动、停止、监控多个接口服务器,实现合理安排接口Dockers中各个接口服务器的工作。
在另一实施方式中,步骤S23还可以是:预先根据待处理的消息携带的标签的类型,对接口Dockers中的多个接口服务器进行分类,然后基于k8s,接口Dockers根据每个待处理的消息携带的标签,将多个所述消息发送至与所述标签对应的接口服务器中,并由该接口服务器下面的kafka接收分配的消息。通过该实施方式,可以提高k8s对接口Dockers中的多个接口服务器进行分类管理的效率。
本实施例中,使用k8s和docker实现了接口服务器的水平扩充服务,容错部分服务宕机的情形,实现了接口服务器的高可用性。现有技术是将接口程序放在一台接口服务器上,通过这台接口服务器实现数据的发送,若这台接口服务器宕机了,则与该接口服务器对应的服务器架构进入瘫痪状态,无法服务。而本发明是:基于docker的方式,将程序放在docker里,实现一个接口Dockers中水平扩展出多个接口服务器,当一台接口服务器宕机了,则还有其他接口服务器可以运行,解决了因一个接口服务器宕机而导致服务器架构进入瘫痪状态的问题。
步骤S24:每个所述接口服务器将所述消息转换成kafka消息。
具体实施时,对于每个接口服务器而言,该接口服务器在某一时间段内可能会接收多个消息,因而,本发明中在每个服务器下面均设置一个kafka(即,将服务器作为客户端与kafka之间的代理通信),由kafka作为消息中间件集群,接收接口Dockers的接口分配的消息,对该接口服务器中接收的多个消息进行处理(将接收的消息均转换成kafka消息,该kafka消息为发送给功能Dockers的消息)。
本实施例中,任务的创建采用消息触发机制,使用kafka作为消息中间件,提高消息的高并发处理。
步骤S25:每个所述接口服务器根据所述消息的标签,将所述kafka消息发送至与所述标签对应的所述功能Dockers。
具体实施时,每个接口服务器中kafka根据消息的标签,将由生成的kafka消息发送至与标签对应的功能Dockers,例如,当标签为请求数据,则将与该标签对应的kafka消息发送给数据库Dockers(例如redis Dockers);当标签为转码任务,则将与该标签对应的kafka消息发送给转码Dockers。
步骤S26:所述功能Dockers的接口接收所述多个不同的接口服务器各自发送的所述kafka消息,并根据所述kafka消息执行相应的操作。
具体实施时,功能Dockers的接口,接收多个不同的接口服务器各自发送的kafka消息,然后,将接收的kafka消息下发至各个功能服务器,由各个功能服务器接收kafka消息,并根据kafka消息执行相应的操作。
本发明实施例中,首先,接口Dockers和功能Dockers的接口,都是基于go语言进行编译的,基于go语言编译的接口,有效降低了服务器端架构资源的占用,进而提高了服务器架构中各个接口的性能,实现了接口服务器的高可用性;然后,使用k8s和docker实现了多个接口服务器的水平扩充服务,容错部分服务器宕机的情形,实现了接口服务器的高可用性。并且,本发明实施例中,通过使用kafka作为消息中间件,实现采用消息触发机制进行任务的创建,提高了消息的高并发处理效率。
本方案是服务器端云剪辑整体的优化技术,整合了当前先进的服务器端技术, 采用了优化的管理技术,来搭建服务器架构,以用来提高服务的简洁高效和可用。
在另一实施例中,上述实施例中所述的方法,在步骤S21之前,还包括:
S201:服务器端接收客户端发送的登录请求。
具体实施时,当客户端100需要通过服务器端200的接口,调用服务器端中的数据或请求任务时,客户端100需要先向服务器端200发送登录请求,由服务器端200接收客户端100发送的登录请求。
S202:根据所述登录请求,所述服务器端基于JWT生成特定的token,并将所述token返回给所述客户端。
具体实施时,服务器端会根据登录请求,基于JWT生成特定的token,一方面对生成的token进行存储,另一方面将生成的token返回给客户端。
当客户端需要向服务器端发送待处理的消息时,需将接收的token添加至该消息的请求头中,生成携带有token的消息,并将携带有token的待处理的消息发送给接口Dockers;接口Dockers的接口接收到消息时,首先根据token,验证发送待处理的消息的客户端是否为起初发送登录请求的客户端;如果验证成功,则接口Dockers的接口,接收待处理的消息并进入步骤S21中;若验证失败,则接口Dockers的接口忽略该待处理的消息,并向客户端返回验证失败的指示。
本实施例中,基于JWT生成特定的token,使得客户端请求时,接口Dockers的接口在进行验证时,对请求信息中的请求参数的顺序没有要求,达到了简化接口的目的。本申请提供的方法,相对于通过对请求参数的计算后检验请求是否合法,用JWT的方式校验用户信息显得比较简洁。
图3是本发明实施例中的一种根据kafka消息执行相应的操作的步骤流程图,参照图3,在本实施例中,当功能Dockers为任务Dockers(例如,任务Dockers可以为转码Dockers,也可以为合成Dockers)时,该任务Dockers中设有多个任务服务器,并且每个任务服务器下面均设有kafka,则步骤S26具体可以包括以下步骤:
S31:所述任务Dockers的接口,接收所述多个不同的接口服务器各自发送的所述kafka消息。
本实施例中,任务Dockers是指设有多个任务服务器的集群,这些任务服务器基于k8s和dacker实现水平扩充服务器,并且基于k8s对各个任务服务器进行管理(即合理编排哪一docker进行服务)。任务服务器是指可以执行视频编辑任务的服务器,例如视频合成、视频转码等。具体实施时,接口Dockers中的每个接口服务器,通过各自服务器下面的kafka,向任务Dockers的接口发送kafka消息,任务Dockers的接口,接收由多个不同的接口服务器各自发送的kafka消息。
S32:所述任务Dockers根据kafka的处理规则,将接收的多个所述kafka消息,一一发送至每个所述任务服务器中。
本实施例中,kafka的处理规则是指任务Dockers的接口接收到kafka消息时,将接收的kafka消息进行合理分配的处理规则。并且,本发明中的任务Dockers还包括任务队列,该任务队列用于存储未处理的kafka消息。
本步骤S32的具体实施过程如下:
S321,检测任务Dockers中是否有空闲的任务服务器。
具体实施时,首先,任务Dockers确定本地中处于工作状态的任务服务器的工作数量,并计算工作数量与预设负载处理数的差值(差值=预设负载数-工作数量),其中,预设负载处理数是指任务Dockers可以同时执行与kafka消息对应任务的数量的最大值;
然后,根据该差值,确定任务Dockers中是否有空闲的任务服务器,具体的确定过程可以为:
若该差值等于0,则表示任务Dockers中没有空闲的任务服务器,所有的任务服务器都正在执行各自接收的kafka消息对应的任务;
若该差值小于0,则表示任务Dockers中有空闲(即处于未工作状态)的任务服务器,可以由空闲的任务服务器执行此时接收的kafka消息对应的任务。
S322,若有空闲的任务服务器,则任务Dockers将接收的多个所述kafka消息发送至空闲的任务服务器。
由于一个任务服务器只能同时执行一个kafka消息对应的任务,因而一个任务服务器只能同时接收一个kafka消息,并在接收到kafka消息后进入工作状态。
本步骤具体实施时,还包括以下几种情况:
情况一:若任务Dockers此时接收的kafka消息的数量(例如,接收的kafka消息的数量为4个),恰好等于此时且处于空闲状态的任务服务器的数量(例如,处于空闲状态的数量恰好也为4),则任务Dockers将接收的4个kafka消息直接分发到四个空闲的任务服务器中,每个任务服务器接收一个kafka消息;
情况二:若任务Dockers此时接收的kafka消息的数量(例如,接收的kafka消息的数量为10个),超过空闲的任务服务器的数量(例如,处于空闲状态的数量还是为4),则任务Dockers将10个kafka消息中的4个,一一分配给4个空闲的任务服务器(即每一个任务服务器接收一个kafka消息),然后还需要将剩余的6个kafka消息作为未处理的kafka消息,分配至任务列表中;
情况三:若任务Dockers此时接收的kafka消息的数量(例如,接收的kafka消息的数量为2个),小于空闲的任务服务器的数量(例如,处于空闲状态的数量还是为4),则任务Dockers从所有处于未工作状态的任务服务器中任意选择2个,将接收的2个kafka消息发送至选中的任务服务器中。
S323,若无空闲的任务服务器,则任务Dockers将接收的多个所述kafka消息发送至任务队列中。
具体实施时,由于任务Dockers中没有空闲的任务服务器,所有的任务服务器都正在执行各自接收的kafka消息对应的任务,因而,任务Dockers需要将此时接收的所有kafka消息都作为未处理的kafka消息,发送至任务队列中,由任务列队对这些作为未处理的kafka消息,进行临时存储。
S33:每个所述任务服务器根据各自接收的kafka消息,执行与所述kafka消息对应的任务工程。
具体实施时,当任务Dockers的接口将接收到的kafka消息向任务服务器中发送时,是将kafka消息发送至任务服务器下面的kafka中,由任务服务器下面的kafka接收kafka消息,然后,任务服务器根据kafka接收的kafka消息,执行与该kafka消息对应的任务工程。例如,若该kafka消息对应的任务工程为合成视频,则任务服务器执行视频的合成任务;若该kafka消息对应的任务工程为转码,则任务服务器执行视频数据的转码任务。
本发明实施例中,任务创建时,采用消息触发机制(即,当往数据库记录一条数据的时候,会向kafka消息中间件发送一条任务创建的消息通知),通过使用kafka作为消息中间件,提高了消息的高并发处理。并且,由于每个接口服务器下面都设有kafka,接口服务器在向功能Dockers(包括:数据库Dockers、转码Dockers以及合成Dockers等)发送消息时,可以利用kafka的分类消息,实现不同任务由不同服务器来处理,增加容错率。
图4是本发明实施例中的一种在执行完当前任务操作后的后续步骤的执行流程图,参照图4,在本实施例中,所述任务Dockers包括任务队列,所述任务队列用于存储未处理的kafka消息,在上述步骤S33之后,所述方法还包括:
步骤S41:所述执行任务工程的任务服务器向所述任务Dockers发送消息处理结束信息。
具体实施时,执行任务工程的任务服务器是指正在执行任务工程的任务服务器,例如,任务服务器A正在执行任务工程1号,当该任务服务器将任务工程1号执行完成后,会向任务Dockers发送消息处理结束信息,该消息处理结束信息表示该任务服务器A处于空闲状态,可以处理下一个未处理的kafka消息。
步骤S42:所述任务Dockers接收到所述消息处理结束信息后,查询所述任务队列中是否存储有未处理的kafka消息。
具体实施时,任务Dockers接收到消息处理结束信息后,查询任务队列中是否存储有未处理的kafka消息。
步骤S43:若有未处理的kafka消息,则所述任务Dockers将所述未处理的kafka消息,分配至所述执行任务工程的任务服务器。
具体实施时,若有至少一个未处理的kafka消息,则任务Dockers将其中一个未处理的kafka消息,发送到任务服务器A中,由任务服务器A的kafka接收该未处理的kafka消息。
步骤S44:所述执行任务工程的任务服务器执行与所述未处理的kafka消息对应的任务工程。
具体实施时,任务服务器A根据任务服务器A的kafka接收的未处理的kafka消息,执行与该未处理的kafka消息对应的任务工程。
本发明实施例中,实际中,合成和转码任务比较耗费cpu,本发明中,采用任务队列的形式处理任务(该任务是指kafka消息对应的任务工程),避免多任务造成服务器资源耗尽。
图5是本发明实施例中的另一种根据kafka消息执行相应的操作的步骤流程图,参照图5,在本实施例中,当功能Dockers为数据库Dockers时,所述数据库Dockers包括redisDockers和mysql Dockers;则步骤S26还可以包括:
步骤S51:所述redis Dockers的接口接收所述多个不同的接口服务器各自发送的所述kafka消息。
具体实施时,由于接口Dockers可能会接收到多个请求数据的消息,因而接口Dockers会通过多个不同的接口服务器,向redis Dockers发送接收到的这些请求数据的kafka消息,则redis Dockers的接口接收由不同的接口服务器各自发送的多个kafka消息。
步骤S52:所述redis Dockers根据每个所述kafka消息,检测本地的数据资源列表中是否存储有每个所述kafka消息所请求的数据。
具体实施时,每个kafka消息中会携带有所请求的数据的类型标签,例如请求视频A的视频资源数据时,类型标签可以为视频A-视频资源,当redis Dockers接收到kafka消息1号时,会根据kafka消息1号的类型标签,检测本地的数据资源列表中是否存储有与kafka消息1号的类型标签对应的视频资源数据。
其中,数据资源列表是指统一存在各种类型数据的数据资源,在该列表中,各类数据资源按照各自的类型又进行分类存储。例如,当需要存储图片数据资源、视频数据资源和音频数据资源这三种数据资源时,先在数据资源列表中设置三种资源存储表,如视频表、音频表和图片表,其中,图片表用于存储图片数据资源,视频表用于存储视频数据资源,音频表用于存储音频数据资源。
步骤S53:若检测到已存储,则所述redis Dockers通过所述数据资源列表的接口读取所述所请求的数据,并返回给每个所述kafka消息对应的所述客户端。
本发明中的资源列表设有一个接口,通过该接口可以调用该资源列表中存储的任意数据,实现接口简洁。具体实施时,若检测到本地的数据资源列表中存储所请求的数据,则redis Dockers根据根据kafka消息1号的类型标签,通过数据资源列表的接口直接读取kafka消息1号所请求的视频资源数据,并通过redis Dockers的接口返回给发送kafka消息1号的客户端,完成数据的调用。
步骤S54:若检测到未存储,则所述redis Dockers根据每个所述kafka消息从所述mysql Dockers中的数据资源列表中读取所述所请求的数据,并返回给每个所述kafka消息对应的所述客户端。
具体实施时,若检测到redis Dockers中未存储kafka消息1号所请求的数据,则redis Dockers根据kafka消息1号的标签类型,从mysql Dockers中的数据资源列表中读取所请求的视频资源数据,并通过redis Dockers的接口返回给发送kafka消息1号的客户端,完成数据的调用。
需要说明的是,本实施例中的所有数据资源列表都设有一个接口,通过该接口可以调用与该接口对应的数据资源列表中存储的任意资源数据。也就是说,本实施例中,可以通过该接口同时调用所有存储的数据(如同时调用视频资源数据、音频资源数据和图片资源数据这三种),也可以调用其中某一类或两类数据(如调用视频资源数据或音频资源数据)。
现有技术中,当客户端需要请求三种资源数据时,需要调用三种接口,存在占用资源的问题;而本发明中,将三种资源数据存储在一个资源列表(即本发明中的数据资源列表)中时,当需要同时请求三种资源时,只需调用一个接口,直接访问该数据资源列表即可,实现了接口简洁,可以统一访问数据库和返回资源表中的数据;此外,本发明的数据资源列表中存储了三种资源,实现了不同类型资源的差异化存储。
本发明实施例中,采用数据资源列表,对各种类型的数据资源进行统一存储,实现了用户资源的数据库的优化:既有统一资源表以提供统一的接口,实现接口简洁,又有分开存储不同类型资源表,体现不同类型资源的差异化内容。
图6本发明实施例中的视频云编辑软件中的服务器端架构的示意图,如图6所示,本发明中的视频云编辑软件中的服务器端架构,包括接口Dockers和功能Dockers,接口Dockers将接收到的待处理的消息发送给功能Dockers;其中,功能Dockers可以为任务Dockers或数据库Dockers;任务Dockers可以为转码Dockers或合成Dockers;数据库Dockers可以为redis Dockers或mysql Dockers。
优选地,接口Dockers包括一个接口和多个接口服务器。接口,用于接收客户端发送的待处理的消息,以及将待处理的消息下发给接口服务器;每个接口服务器下端设有kafka,每个接口服务器通过各自的kafka接收接口下发的待处理消息,以及将待处理消息转换成kafka消息,并将kafka消息发送给功能Dockers,例如,待处理消息为转码消息时,就将转码消息发送给转码Dockers;待处理消息为合成消息时,就将合成消息发送给合成Dockers;待处理消息为数据请求消息时,就将数据请求消息发送给redis Dockers。
优选地,功能Dockers为任务Dockers,该任务Dockers可以为转码Dockers或合成Dockers。任务Dockers包括一个接口和多个任务服务器;
任务Dockers的接口,用于接收接口服务器的kafka发送的kafka消息,以及,将kafka消息下发给任务服务器;
每个任务服务器下端设有kafka,每个任务服务器通过任务服务器的kafka接收任务Dockers的接口下发的kafka信息;
每个任务服务器根据kafka信息,执行与kafka信息对应的任务工程,并将任务工程执行后得到的任务数据发送给数据库 Dockers;
其中,将任务工程执行后得到的任务数据发送给数据库 Dockers,包括:
将任务数据按照是否需要返回给所述客户端进行分类;
将任务数据中需要返回给所述客户端的数据作为热数据,发送至redis Dockers;
将任务数据中不需要返回给所述客户端的数据作为冷数据,发送至mysql Dockers。
优选地,功能Dockers为数据库Dockers,其中数据库Dockers为redis Dockers和mysql Dockers中的任意一种;
当功能Dockers为redis Dockers时,redis Dockers包括一个接口和多个redis服务器,每个redis服务器中都设有一个资源数据列表,用户可以通过每个redis服务器的接口,读取该资源数据列表中的任意数据;
redis Dockers的接口,用于接收转码服务器和/或合成服务器发送的热数据,并将热数据下发至redis服务器中的资源数据列表;
当数据库Dockers为mysql Dockers时,mysql Dockers包括一个接口和多个mysql服务器;
mysql Dockers的接口,用于接收转码服务器和/或合成服务器发送的冷数据,并将冷数据下发至所述mysql服务器中的资源数据列表。
需要说明的是,本发明附图6中,主mysql服务器,就是业务通常使用的,而副mysql服务器,是备用的,用来当主mysql服务器不可用时启动使用。“数据同步”是指:redis服务器和mysql服务器之间的数据同步)。
本发明实施例中,剪辑的素材采用同一表格来管理,实现接口的统一,音乐和字体也作为一种素材来管理。具体实施时:由于编辑会有很多种素材,例如滤镜,贴纸,转场,音乐,字体等等,但是发明人发现,这些素材作为一种编辑的素材具有共性,对于共同的属性,用表格的同一字段记录即可,并为该表格设置一个接口,通过该接口,即可实现对这些素材中的任意一种素材进行调用。
本发明实施例的第二方面,还提供了一种消息处理的装置,参考图7,图7是本发明实施例中的一种消息处理的装置的结构示意图,如图7所示,所述装置包括:
编译模块71,用于基于go语言,分别编译接口Dockers的接口和功能Dockers的接口;
接收模块72,用于所述接口Dockers通过所述接口Dockers的接口,接收多个待处理的消息;其中,每个所述待处理的消息携带标签;
分配模块73,用于所述接口Dockers将多个所述消息分配至多个不同的接口服务器;
转换模块74,用于每个所述接口服务器将所述消息转换成kafka消息;
发送模块75,用于每个所述接口服务器根据所述消息的标签,将所述kafka消息发送至与所述标签对应的所述功能Dockers;
执行模块76,用于所述功能Dockers的接口接收所述多个不同的接口服务器各自发送的所述kafka消息,并根据所述kafka消息执行相应的操作。
优选地,本实施例中,所述装置,还包括:
第一接收模块,用于服务器端接收客户端发送的登录请求;
第一生成模块,用于根据所述登录请求,所述服务器端基于JWT生成特定的token,并将所述token返回给所述客户端。
优选地,本实施例中,所述待处理的消息包括消息请求头,所述消息请求头携带token;所述第一生成模块,包括:
添加子模块,用于所述客户端将接收的所述token添加至待处理的消息的请求头中,并将携带有所述token的待处理的消息发送给所述接口Dockers;
验证子模块,用于所述接口Dockers根据所述token,验证所述客户端是否为发送登录请求的客户端;
第一接收子模块,用于若是,所述接口Dockers通过所述接口Dockers的接收接口,接收所述待处理的消息。
优选地,本实施例中,所述接口Dockers包括多个接口服务器,并且每个接口服务器设有kafka,所述分配模块73,包括:
第一分配子模块,用于基于k8s ,所述接口Dockers根据每个所述待处理的消息携带的标签,将多个所述消息发送至与所述标签对应的接口服务器的kafka中。
优选地,本实施例中,所述功能Dockers为任务Dockers ,所述任务Dockers中设有多个任务服务器,并且每个任务服务器设有kafka,所述执行模块76,包括:
第二接收子模块,用于所述任务Dockers的接口,接收所述kafka消息;
确定子模块,用于所述任务Dockers根据kafka的处理规则,从多个任务服务器中确定目标任务服务器;
第一发送子模块,用于所述任务Dockers将接收的所述kafka消息,发送至所述目标任务服务器的kafka中;
第一执行子模块,用于所述目标任务服务器根据该目标任务服务器的kafka接收的kafka消息,执行与所述kafka消息对应的任务工程。
优选地,本实施例中,所述任务Dockers包括任务队列,所述任务队列用于存储未处理的kafka消息,所述确定子模块,包括:
计算子模块,用于所述任务Dockers确定本地中处于工作状态的任务服务器的工作数量;
第二分配子模块,用于所述任务Dockers根据所述工作数量与预设负载处理数的差值,对所述kafka消息进行分配;
其中,所述第二分配子模块,包括:
第三分配子模块,用于若所述差值等于0,则所述任务Dockers将所述kafka消息分配至任务队列中;
第四分配子模块,用于若所述差值小于0,则所述任务Dockers从所有处于未工作状态的任务服务器中确定目标任务服务器,并将所述kafka消息分配至所述目标任务服务器中。
优选地,本实施例中,所述任务Dockers包括任务队列,所述任务队列用于存储未处理的kafka消息,所述装置还包括:
第二发送子模块,用于所述目标任务服务器向所述任务Dockers发送消息处理结束信息;
查询子模块,用于所述任务Dockers接收到所述消息处理结束信息后,查询所述任务队列中是否存储有未处理的kafka消息;
第五分配子模块,用于若有未处理的kafka消息,则所述任务Dockers将所述未处理的kafka消息,分配至所述目标任务服务器;
第二执行子模块,用于所述目标任务服务器执行与所述未处理的kafka消息对应的任务工程。
优选地,本实施例中,所述功能Dockers为数据库Dockers,所述数据库Dockers包括redis Dockers和mysql Dockers;
执行模块76,还包括:
第三接收子模块,用于所述redis Dockers的接口接收所述多个不同的接口服务器各自发送的所述kafka消息;
检测子模块,用于所述redis Dockers根据所述kafka消息检测本地是否已存储有与所述kafka消息对应的数据资源列表;
第一返回子模块,用于若检测到已存储,则所述redis Dockers从本地中读取所述数据资源列表,并通过所述redis Dockers的接口返回给所述客户端;
第二返回子模块,用于若检测到未存储,则所述redis Dockers根据所述kafka消息从所述mysql Dockers中读取所述数据资源列表,并所述redis Dockers的接口返回给所述客户端。
本公开实施例,还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行所述计算机程序时实现上述消息处理的方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本公开实施例,还提供了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述消息处理的方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (15)
1.一种消息处理的方法,其特征在于,应用于视频云编辑软件中的服务器端架构,所述方法包括:
基于go语言,分别编译接口Dockers的接口和功能Dockers的接口;
所述接口Dockers通过所述接口Dockers的接口,接收多个待处理的消息;其中,每个所述待处理的消息携带标签;
所述接口Dockers将多个所述消息分配至多个不同的接口服务器;
每个所述接口服务器将所述消息转换成kafka消息;
每个所述接口服务器根据所述消息的标签,将所述kafka消息发送至与所述标签对应的所述功能Dockers;
所述功能Dockers的接口接收所述多个不同的接口服务器各自发送的所述kafka消息,并根据所述kafka消息执行相应的操作。
2.根据权利要求1所述的方法,其特征在于,在所述接收多个待处理的消息之前,所述方法还包括:
服务器端接收客户端发送的登录请求;
根据所述登录请求,所述服务器端基于JWT生成特定的token,并将所述token返回给所述客户端。
3.根据权利要求2所述的方法,其特征在于,所述待处理的消息包括消息请求头,所述消息请求头携带token;
所述接口Dockers通过所述接口Dockers的接收接口,接收待处理的消息,包括:
所述客户端将接收的所述token添加至待处理的消息的请求头中,并将携带有所述token的待处理的消息发送给所述接口Dockers;
所述接口Dockers根据所述token,验证所述客户端是否为发送登录请求的客户端;
若是,所述接口Dockers通过所述接口Dockers的接收接口,接收所述待处理的消息。
4.根据权利要求1所述的方法,其特征在于,所述接口Dockers包括多个接口服务器,并且每个接口服务器设有kafka,所述接口Dockers将多个所述消息分配至多个不同的接口服务器,包括:
基于k8s,所述接口Dockers根据每个所述待处理的消息携带的标签,将多个所述消息发送至与所述标签对应的接口服务器的kafka中。
5.根据权利要求1所述的方法,其特征在于,所述功能Dockers为任务Dockers,所述任务Dockers中设有多个任务服务器,并且每个任务服务器设有kafka,所述功能Dockers的接口接收所述多个不同的接口服务器各自发送的所述kafka消息,并根据所述kafka消息执行相应的操作,包括:
所述任务Dockers的接口,接收所述多个不同的接口服务器各自发送的所述kafka消息;
所述任务Dockers根据kafka的处理规则,将接收的多个所述kafka消息,一一发送至每个所述任务服务器中;
每个所述任务服务器根据各自接收的kafka消息,执行与所述kafka消息对应的任务工程。
6.根据权利要求5所述的方法,其特征在于,所述任务Dockers包括任务队列,所述任务队列用于存储未处理的kafka消息,所述任务Dockers根据kafka的处理规则,将接收的多个所述kafka消息,一一发送至每个所述任务服务器中,包括:
检测任务Dockers中是否有空闲的任务服务器;
若有空闲的任务服务器,则任务Dockers将接收的多个所述kafka消息发送至空闲的任务服务器;
若无空闲的任务服务器,则任务Dockers将接收的多个所述kafka消息发送至任务队列中。
7.根据权利要求5所述的方法,其特征在于,所述任务Dockers包括任务队列,所述任务队列用于存储未处理的kafka消息,在每个所述任务服务器根据各自接收的kafka消息,执行与所述kafka消息对应的任务工程之后,所述方法还包括:
执行任务工程的任务服务器向所述任务Dockers发送消息处理结束信息;
所述任务Dockers接收到所述消息处理结束信息后,查询所述任务队列中是否存储有未处理的kafka消息;
若有未处理的kafka消息,则所述任务Dockers将所述未处理的kafka消息,分配至所述执行任务工程的任务服务器;
所述执行任务工程的任务服务器执行与所述未处理的kafka消息对应的任务工程。
8.根据权利要求1所述的方法,其特征在于,所述功能Dockers为数据库Dockers,所述数据库Dockers包括 redis Dockers和mysql Dockers;
所述功能Dockers的接口接收所述多个不同的接口服务器各自发送的所述kafka消息,并根据所述kafka消息执行相应的操作,包括:
所述redis Dockers的接口接收所述多个不同的接口服务器各自发送的所述kafka消息;
所述redis Dockers根据每个所述kafka消息检测本地的数据资源列表中是否存储有每个所述kafka消息所请求的数据;
若检测到已存储,则所述redis Dockers通过所述数据资源列表的接口读取所述所请求的数据,并返回给每个所述kafka消息对应的客户端;
若检测到未存储,则所述redis Dockers根据所述kafka消息从所述mysql Dockers中的数据资源列表中读取所述所请求的数据,并返回给每个所述kafka消息对应的所述客户端。
9.根据权利要求1所述的方法,其特征在于,所述视频云编辑软件中的服务器端架构,包括接口Dockers和功能Dockers,所述接口Dockers将接收到的待处理的消息发送给所述功能Dockers;
其中,所述功能Dockers为任务Dockers和数据库Dockers中的任意一种;
所述任务Dockers为转码Dockers和合成Dockers中的任意一种。
10.根据权利要求9所述的方法,其特征在于,所述接口Dockers包括一个接口和多个接口服务器;
所述接口,用于接收客户端发送的待处理的消息,以及,将所述待处理的消息下发给所述接口服务器;
每个所述接口服务器下端设有kafka,每个所述接口服务器通过所述kafka接收所述接口下发的所述待处理的信息,以及,将所述待处理消息转换成kafka消息,并将所述kafka消息发送给所述功能Dockers。
11.根据权利要求10所述的方法,其特征在于,所述功能Dockers为所述任务Dockers,所述任务Dockers包括一个接口和多个任务服务器;
所述任务Dockers的接口,用于接收所述接口服务器的kafka发送的所述kafka消息,以及,将所述kafka消息下发给所述任务服务器;
每个所述任务服务器下端设有kafka,每个所述任务服务器通过所述任务服务器的kafka接收所述任务Dockers的接口下发的所述kafka信息;
每个所述任务服务器根据所述kafka信息,执行与所述kafka信息对应的任务工程,并将所述任务工程执行后得到的任务数据发送给所述数据库 Dockers;
其中,所述将所述任务工程执行后得到的任务数据发送给所述数据库 Dockers,包括:
将所述任务数据按照是否需要返回给所述客户端进行分类;
将所述任务数据中需要返回给所述客户端的数据作为热数据,发送至redis Dockers;
将所述任务数据中不需要返回给所述客户端的数据作为冷数据,发送至mysqlDockers。
12.根据权利要求9-11任一项所述的方法,其特征在于,所述功能Dockers为所述数据库Dockers,其中,所述数据库Dockers为redis Dockers和mysql Dockers中的任意一种;
当所述功能Dockers为所述redis Dockers时,所述redis Dockers包括一个接口和多个redis服务器;
所述redis Dockers的接口,用于接收转码服务器和/或合成服务器发送的热数据,并将所述热数据下发至所述redis服务器中的资源数据列表;
当所述数据库Dockers为所述mysql Dockers时,所述mysql Dockers包括一个接口和多个mysql服务器;
所述mysql Dockers的接口,用于接收所述转码服务器和/或所述合成服务器发送的冷数据,并将所述冷数据下发至所述mysql服务器中的资源数据列表。
13.一种消息处理的装置,其特征在于,所述装置包括:
编译模块,用于基于go语言,分别编译接口Dockers的接口和功能Dockers的接口;
接收模块,用于所述接口Dockers通过所述接口Dockers的接口,接收多个待处理的消息;其中,每个所述待处理的消息携带标签;
分配模块,用于所述接口Dockers将多个所述消息分配至多个不同的接口服务器;
转换模块,用于每个所述接口服务器将所述消息转换成kafka消息;
发送模块,用于每个所述接口服务器根据所述消息的标签,将所述kafka消息发送至与所述标签对应的所述功能Dockers;
执行模块,用于所述功能Dockers的接口接收所述多个不同的接口服务器各自发送的所述kafka消息,并根据所述kafka消息执行相应的操作。
14.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至12任意一项所述的消息处理的方法。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至12任意一项所述的消息处理的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110059422.6A CN112380040B (zh) | 2021-01-18 | 2021-01-18 | 一种消息处理的方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110059422.6A CN112380040B (zh) | 2021-01-18 | 2021-01-18 | 一种消息处理的方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112380040A true CN112380040A (zh) | 2021-02-19 |
CN112380040B CN112380040B (zh) | 2021-05-07 |
Family
ID=74581927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110059422.6A Active CN112380040B (zh) | 2021-01-18 | 2021-01-18 | 一种消息处理的方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112380040B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115543662A (zh) * | 2022-11-30 | 2022-12-30 | 苏州浪潮智能科技有限公司 | 一种kafka消息数据的下发方法及相关装置 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102932608A (zh) * | 2012-11-16 | 2013-02-13 | 成都索贝数码科技股份有限公司 | 基于云编辑技术的数字视频加工、编目系统及方法 |
CN104244023A (zh) * | 2014-09-03 | 2014-12-24 | 无锡天脉聚源传媒科技有限公司 | 视频云编辑系统和方法 |
US20170085419A1 (en) * | 2015-09-18 | 2017-03-23 | Le Holdings (Beijing) Co., Ltd. | System and method for deploying an application |
CN107277142A (zh) * | 2017-06-21 | 2017-10-20 | 北京奇艺世纪科技有限公司 | 一种视频文件的处理方法和装置 |
CN109271265A (zh) * | 2018-09-29 | 2019-01-25 | 平安科技(深圳)有限公司 | 基于消息队列的请求处理方法、装置、设备及存储介质 |
CN110264298A (zh) * | 2019-04-26 | 2019-09-20 | 广东虎彩影像有限公司 | 一种摄影服务系统 |
CN110457134A (zh) * | 2019-08-08 | 2019-11-15 | 杭州阿启视科技有限公司 | 建立基于容器云和微服务架构的视频大数据云平台的方法 |
CN111049899A (zh) * | 2019-12-11 | 2020-04-21 | 贝壳技术有限公司 | kafka消息存储系统、方法、装置及计算机可读存储介质 |
CN111327681A (zh) * | 2020-01-21 | 2020-06-23 | 北京工业大学 | 一种基于Kubernetes的云计算数据平台构建方法 |
CN111506390A (zh) * | 2020-03-31 | 2020-08-07 | 新浪网技术(中国)有限公司 | 一种基于容器化部署的视频转码调度方法及系统 |
CN111510744A (zh) * | 2020-07-01 | 2020-08-07 | 北京美摄网络科技有限公司 | 一种处理视音频的方法、装置、电子设备及存储介质 |
CN111736827A (zh) * | 2020-08-25 | 2020-10-02 | 长沙慧码至一信息科技有限公司 | 一种云原生开发组件系统 |
CN111831269A (zh) * | 2020-07-21 | 2020-10-27 | 腾讯科技(深圳)有限公司 | 一种应用开发系统、运行方法、设备及存储介质 |
CN111880899A (zh) * | 2020-07-27 | 2020-11-03 | 山东迪特智联信息科技有限责任公司 | 一种基于云原生架构的大数据流处理方法和装置 |
CN112131023A (zh) * | 2020-09-23 | 2020-12-25 | 平安科技(深圳)有限公司 | 应用容器引擎的消息处理系统、方法、设备及存储介质 |
-
2021
- 2021-01-18 CN CN202110059422.6A patent/CN112380040B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102932608A (zh) * | 2012-11-16 | 2013-02-13 | 成都索贝数码科技股份有限公司 | 基于云编辑技术的数字视频加工、编目系统及方法 |
CN104244023A (zh) * | 2014-09-03 | 2014-12-24 | 无锡天脉聚源传媒科技有限公司 | 视频云编辑系统和方法 |
US20170085419A1 (en) * | 2015-09-18 | 2017-03-23 | Le Holdings (Beijing) Co., Ltd. | System and method for deploying an application |
CN107277142A (zh) * | 2017-06-21 | 2017-10-20 | 北京奇艺世纪科技有限公司 | 一种视频文件的处理方法和装置 |
CN109271265A (zh) * | 2018-09-29 | 2019-01-25 | 平安科技(深圳)有限公司 | 基于消息队列的请求处理方法、装置、设备及存储介质 |
CN110264298A (zh) * | 2019-04-26 | 2019-09-20 | 广东虎彩影像有限公司 | 一种摄影服务系统 |
CN110457134A (zh) * | 2019-08-08 | 2019-11-15 | 杭州阿启视科技有限公司 | 建立基于容器云和微服务架构的视频大数据云平台的方法 |
CN111049899A (zh) * | 2019-12-11 | 2020-04-21 | 贝壳技术有限公司 | kafka消息存储系统、方法、装置及计算机可读存储介质 |
CN111327681A (zh) * | 2020-01-21 | 2020-06-23 | 北京工业大学 | 一种基于Kubernetes的云计算数据平台构建方法 |
CN111506390A (zh) * | 2020-03-31 | 2020-08-07 | 新浪网技术(中国)有限公司 | 一种基于容器化部署的视频转码调度方法及系统 |
CN111510744A (zh) * | 2020-07-01 | 2020-08-07 | 北京美摄网络科技有限公司 | 一种处理视音频的方法、装置、电子设备及存储介质 |
CN111831269A (zh) * | 2020-07-21 | 2020-10-27 | 腾讯科技(深圳)有限公司 | 一种应用开发系统、运行方法、设备及存储介质 |
CN111880899A (zh) * | 2020-07-27 | 2020-11-03 | 山东迪特智联信息科技有限责任公司 | 一种基于云原生架构的大数据流处理方法和装置 |
CN111736827A (zh) * | 2020-08-25 | 2020-10-02 | 长沙慧码至一信息科技有限公司 | 一种云原生开发组件系统 |
CN112131023A (zh) * | 2020-09-23 | 2020-12-25 | 平安科技(深圳)有限公司 | 应用容器引擎的消息处理系统、方法、设备及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115543662A (zh) * | 2022-11-30 | 2022-12-30 | 苏州浪潮智能科技有限公司 | 一种kafka消息数据的下发方法及相关装置 |
WO2024113705A1 (zh) * | 2022-11-30 | 2024-06-06 | 苏州元脑智能科技有限公司 | 一种kafka消息数据的下发方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112380040B (zh) | 2021-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020177533A1 (zh) | 电子票据标识分配方法、电子票据生成方法、装置及系统 | |
CN102469033B (zh) | 一种消息订阅系统以及消息发送方法 | |
CN109492017B (zh) | 业务信息查询处理方法、系统、计算机设备和存储介质 | |
CN107545338B (zh) | 业务数据处理方法及业务数据处理系统 | |
CN104834722A (zh) | 基于cdn的内容管理系统 | |
WO2013107012A1 (zh) | 分布式计算任务处理系统和任务处理方法 | |
WO2013104217A1 (zh) | 基于云基础设施的针对应用系统维护部署的管理系统和方法 | |
WO2014194869A1 (zh) | 一种请求处理方法、装置及系统 | |
US20130054735A1 (en) | Wake-up server | |
CN112698952A (zh) | 计算资源统一管理方法、装置、计算机设备及存储介质 | |
CN110149377A (zh) | 一种视频服务节点资源分配方法、系统、装置及存储介质 | |
CN109298937A (zh) | 文件解析方法及网络设备 | |
CN112202829A (zh) | 基于微服务的社交机器人调度系统和调度方法 | |
CN112866421A (zh) | 基于分布式缓存以及nsq的智能合约运行方法及装置 | |
CN112380040B (zh) | 一种消息处理的方法、装置、电子设备及存储介质 | |
CN109600240A (zh) | 群通信方法和装置 | |
CN108984290A (zh) | 任务调度方法和系统 | |
CN109309646A (zh) | 一种多媒体转码方法和系统 | |
CN109951551B (zh) | 一种容器镜像管理系统及方法 | |
US8205199B2 (en) | Method and system for associating new queues with deployed programs in distributed processing systems | |
CN111460038A (zh) | 一种数据准实时同步方法及装置 | |
CN113094395B (zh) | 数据查询方法、计算机设备和存储介质 | |
CN114003384B (zh) | 任务管理的方法、装置和设备 | |
CN113965538B (zh) | 设备状态消息处理方法、装置及存储介质 | |
CN107193654B (zh) | 分布式系统的资源操作方法及装置、分布式系统 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |