CN116755905B - 基于消息队列的数据交互方法、装置、设备及存储介质 - Google Patents
基于消息队列的数据交互方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116755905B CN116755905B CN202310763988.6A CN202310763988A CN116755905B CN 116755905 B CN116755905 B CN 116755905B CN 202310763988 A CN202310763988 A CN 202310763988A CN 116755905 B CN116755905 B CN 116755905B
- Authority
- CN
- China
- Prior art keywords
- message
- queue
- delivery
- delivery message
- data interaction
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 79
- 230000003993 interaction Effects 0.000 title claims abstract description 65
- 238000012545 processing Methods 0.000 claims abstract description 53
- 238000011084 recovery Methods 0.000 claims description 10
- 238000005192 partition Methods 0.000 claims description 6
- 230000003247 decreasing effect Effects 0.000 claims description 5
- 230000008859 change Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 23
- 230000006870 function Effects 0.000 description 29
- 238000004891 communication Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
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
- 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/547—Remote procedure calls [RPC]; Web services
-
- 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/544—Remote
-
- 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
Abstract
本申请实施例提供了一种基于消息队列的数据交互方法、装置、设备及存储介质,该方法包括:在第一对象发送数据内容至第二对象的情况下,基于所述第一对象分配的第一信箱地址以及所述第二对象分配的第二信箱地址生成投递消息;将所述投递消息添加至所述第一对象对应的第一队列中;通过配置的消息中间件从所述第一队列中获取所述投递消息,根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中。本方案实现了数据交互过程中各个服务器之间的解耦,同时能够实现数据处理过程的削峰填谷,解决了相关方案中负载均衡能力较差的问题,实现了实体交互的统一性,代码易于管理和维护,提高了系统吞吐量。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种基于消息队列的数据交互方法、装置、设备及存储介质。
背景技术
随着移动应用平台的成熟以及普及,游戏的入口设备逐年增长。游戏成为人们消遣娱乐的生活方式的同时,不同品类的游戏也已经走向成熟。传统的游戏服务器架构设计中,采用单进程单服务器模式进行部署,其符合运营需求,当某一个服务器故障时,不会影响其它游戏服务器。然而采用单服务器运行的模式,无法跟上市场产品创新迭代的需求,单进程糅合了不同的组件和功能模块,任一模块产生问题则会相互影响,同时集中式的部署,导致开发过程出现问题的概率大大增加,影响研发效率。
相关技术中,为了解决单服务器模式的缺点,采用将游戏服务作为一个整体,按业务功能模块进行独立部署,把基础框架组件如网络、存储以及目录服独立出来作为业务的基础设施,由此解决了网络吞吐性能问题,同时可以让内部服务在线进行交替维护,以及对非法的请求可以在集群的入口处提前进行拦截。但是该种方式下进行跨服通信时,使得进程内部跨领域的调用转变成了服务之间的调用,服务间调用的负载均衡较差,单逻辑节点的主从灾备问题突出,服务之间的通信不能达到高可用,游戏服务之间的网络拓扑网状的复杂度高。
发明内容
本申请实施例提供了一种基于消息队列的数据交互方法、装置、设备及存储介质,实现了数据交互过程中各个服务器之间的解耦,同时能够实现数据处理过程的削峰填谷,解决了相关方案中负载均衡能力较差的问题,实现了实体交互的统一性,代码易于管理和维护,提高了系统吞吐量。
第一方面,本申请实施例提供了一种基于消息队列的数据交互方法,该方法包括:
在第一对象发送数据内容至第二对象的情况下,基于所述第一对象分配的第一信箱地址以及所述第二对象分配的第二信箱地址生成投递消息,所述第一对象和所述第二对象为不同服务器中程序运行时生成的对象;
将所述投递消息添加至所述第一对象对应的第一队列中;
通过配置的消息中间件从所述第一队列中获取所述投递消息,根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中,用于所述第二队列关联的消费函数对所述投递消息进行处理。
可选的,在所述基于所述第一对象分配的第一信箱地址以及所述第二对象分配的第二信箱地址生成投递消息之前,还包括:
分别对所述第一对象和所述第二对象分配第一信箱地址和第二信箱地址,并创建和所述第一对象关联的第一队列,以及和所述第二对象关联的第二队列,所述第一信箱地址和所述第二信箱地址包括不同的唯一标识。
可选的,在所述创建和所述第一对象关联的第一队列之后,还包括:
将所述第一队列与配置的第一消息中间件进行绑定;
所述通过配置的消息中间件从所述第一队列中获取所述投递消息,包括:
通过配置的所述第一消息中间件从所述第一队列中获取所述投递消息。
可选的,所述方法还包括:
对所述第二队列关联的消费函数进行动态增减,所述消费函数用于对所述第二队列中被订阅的数据进行消费处理。
可选的,在所述根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中之后,还包括:
在所述第二对象的计算资源满足空闲条件的情况下,通过关联的消费函数对所述投递消息进行处理。
可选的,所述根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列时,还包括:
在检测到所述消息中间件对应的分区变更或处理超时的情况下,进行当前处理状态的记录,以用于链接重新建立时进行恢复处理。
可选的,在所述第二对象为多个的情况下,所述根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中,包括:
根据所述投递消息中记录的所述第二信箱地址依次将所述投递消息投递至对应的第二对象的第二队列中。
第二方面,本申请实施例还提供了一种基于消息队列的数据交互装置,包括:
消息生成模块,配置为在第一对象发送数据内容至第二对象的情况下,基于所述第一对象分配的第一信箱地址以及所述第二对象分配的第二信箱地址生成投递消息,所述第一对象和所述第二对象为不同服务器中程序运行时生成的对象;
消息添加模块,配置为将所述投递消息添加至所述第一对象对应的第一队列中;
消息获取模块,配置为通过配置的消息中间件从所述第一队列中获取所述投递消息;
消息投递模块,配置为根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中,用于所述第二队列关联的消费函数对所述投递消息进行处理。
第三方面,本申请实施例还提供了一种电子设备,该设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本申请实施例所述的基于消息队列的数据交互方法。
第四方面,本申请实施例还提供了一种存储计算机可执行指令的非易失性存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本申请实施例所述的基于消息队列的数据交互方法。
第五方面,本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中,设备的至少一个处理器从计算机可读存储介质读取并执行计算机程序,使得设备执行本申请实施例所述的基于消息队列的数据交互方法。
本申请实施例中,在第一对象发送数据内容至第二对象的情况下,基于所述第一对象分配的第一信箱地址以及所述第二对象分配的第二信箱地址生成投递消息,所述第一对象和所述第二对象为不同服务器中程序运行时生成的对象,将所述投递消息添加至所述第一对象对应的第一队列中,通过配置的消息中间件从所述第一队列中获取所述投递消息,根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中,用于所述第二队列关联的消费函数对所述投递消息进行处理。本方案通过消息队列的方式实现不同服务器中对象的之间的数据交互,数据交互过程中各个服务器之间的解耦,同时能够实现数据处理过程的削峰填谷,解决了相关方案中负载均衡能力较差的问题,实现了实体交互的统一性,代码易于管理和维护,提高了系统吞吐量。
附图说明
图1为本申请实施例提供的一种基于消息队列的数据交互方法的流程图;
图2为本申请实施例提供的另一种基于消息队列的数据交互方法的流程图;
图3为本申请实施例提供的另一种基于消息队列的数据交互方法的流程图;
图4为本申请实施例提供的另一种基于消息队列的数据交互方法的流程图;
图5为本申请实施例提供的一种基于消息队列的数据交互装置的结构框图;
图6为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请实施例作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请实施例,而非对本申请实施例的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请实施例相关的部分而非全部结构。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
本申请实施例提供的基于消息队列的数据交互方法,可由计算设备如智能手机、平板电脑、笔记本电脑、台式机等执行。
图1为本申请实施例提供的一种基于消息队列的数据交互方法的流程图,如图1所示,具体包括如下步骤:
步骤S101、在第一对象发送数据内容至第二对象的情况下,基于所述第一对象分配的第一信箱地址以及所述第二对象分配的第二信箱地址生成投递消息,所述第一对象和所述第二对象为不同服务器中程序运行时生成的对象。
在一个实施例中,第一对象和第二对象为不同服务器中程序运行时生成的对象。以游戏应用为例,不同服务器之间可以进行游戏对象的跨服通信,该第一对象和第二对象可以是GameActor,即游戏中的具体对象。第一对象和第二对象存在跨服通信的需求,如交易、战斗、查看角色等数据的交互。
在一个实施例中,以第一对象发送数据交互信息至第二对象消费为例,在第一对象发送数据内容至第二对象的情况下,基于第一对象分配的第一信箱地址以及第二对象分配的第二信箱地址生成投递消息,其中,该第一信箱地址和第二信箱地址为第一对象和第二对象单独分配的信箱地址,第一对象在和第二对象进行数据交互前会获取第二对象的第二信箱地址。可选的,可以是在第一对象和第二对象建立通信连接关系时,通过通信消息指令得到。可选的,也可以是通过消息中间件或者其它组件模块对各个对象的信箱地址进行维护,在第一对象与第二对象发生数据交互时,第一对象可通过查询得到第二对象的第二信箱地址,如通过第二对象的ID标识查询得到对应的第二信箱地址。
在一个实施例中,生成的投递消息包括三个字段,分别记录来源标识符、目标标识符以及投递内容,其中,来源标识符记录第一信箱地址,目标标识符记录第二信箱地址,投递内容用于填充具体的需要进行交互的数据内容。
在另一个实施例中,该第一对象和第二对象也可以是相同服务器中不同进程创建的对象,即针对跨进程、跨服务器的情况,本实施例均可实现。
步骤S102、将所述投递消息添加至所述第一对象对应的第一队列中。
其中,在投递消息生成后,添加至第一对象对应的第一队列中。其中,每个对象均配置有对应的消息队列,以用于添加投递消息以及对接收到的投递消息进行消费。
步骤S103、通过配置的消息中间件从所述第一队列中获取所述投递消息,根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中,用于所述第二队列关联的消费函数对所述投递消息进行处理。
在一个实施例中,通过配置的消息中间件从第一队列中获取该投递消息,以将其投递至第二对象的第二队列中。其中,消息中间件可基于该投递消息记录的第二信箱地址将其跨进程、跨服务器的投递至第二对象,以添加至第二对象对应的第二队列,用于第二队列关联的消费函数对投递消息进行处理。
在一个实施例中,第一队列和第二队列可以是redis消息队列。通过消息队列的数据交互方式以代理原有的跨服数据交互时使用的rpc(Remote Procedure Call,远程过程调用)方式进行的数据交互。
由上述可知,在第一对象发送数据内容至第二对象的情况下,基于所述第一对象分配的第一信箱地址以及所述第二对象分配的第二信箱地址生成投递消息,所述第一对象和所述第二对象为不同服务器中程序运行时生成的对象,将所述投递消息添加至所述第一对象对应的第一队列中,通过配置的消息中间件从所述第一队列中获取所述投递消息,根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中,用于所述第二队列关联的消费函数对所述投递消息进行处理。本方案通过消息队列的方式实现不同服务器中对象的之间的数据交互,数据交互过程中各个服务器之间的解耦,同时能够实现数据处理过程的削峰填谷,解决了相关方案中负载均衡能力较差的问题,实现了实体交互的统一性,代码易于管理和维护,提高了系统吞吐量。
在上述技术方案的基础上,在基于所述第一对象分配的第一信箱地址以及第二对象分配的第二信箱地址生成投递消息之前,还包括:分别对第一对象和第二对象分配第一信箱地址和第二信箱地址,并创建和第一对象关联的第一队列,以及和第二对象关联的第二队列,第一信箱地址和第二信箱地址包括不同的唯一标识。通过对每个对象预先分配信箱地址以及队列以实现基于消息队列的数据交互处理机制。可选的,信箱地址的内容还可以包括游戏标识符、空间和类型,或者其它自定义的标识符号。
图2为本申请实施例提供的另一种基于消息队列的数据交互方法的流程图,如图2所示,具体包括:
步骤S201、分别对所述第一对象和所述第二对象分配第一信箱地址和第二信箱地址,并创建和所述第一对象关联的第一队列,以及和所述第二对象关联的第二队列,所述第一信箱地址和所述第二信箱地址包括不同的唯一标识。
步骤S202、将所述第一队列与配置的第一消息中间件进行绑定。
在一个实施例中,针对每个队列进行对应的消息中间件的配置,即每个队列对应一个消息中间用于实现数据的投递,以降低网络拓扑关联的复杂度,同时具备较强的容灾处理能力。
步骤S203、在第一对象发送数据内容至第二对象的情况下,基于所述第一对象分配的第一信箱地址以及所述第二对象分配的第二信箱地址生成投递消息,所述第一对象和所述第二对象为不同服务器中程序运行时生成的对象。
步骤S204、将所述投递消息添加至所述第一对象对应的第一队列中。
步骤S205、通过配置的所述第一消息中间件从所述第一队列中获取所述投递消息,根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中,用于所述第二队列关联的消费函数对所述投递消息进行处理。
相应的,针对第一队列中数据的投递,通过对应配置的唯一关联的第一消息中间件获取投递消息进行投递。
在一个实施例中,还包括对第二队列关联的消费函数进行动态增减,消费函数用于对第二队列中被订阅的数据进行消费处理。其中,针对第二对象的第二队列中接收到的投递消息,采用订阅处理机制,对于被相应消费函数订阅的投递消息取出后,进行相应的消费处理。其中,该消费函数可进行动态的增减。
由上述可知,在第一对象发送数据内容至第二对象的情况下,基于所述第一对象分配的第一信箱地址以及所述第二对象分配的第二信箱地址生成投递消息,所述第一对象和所述第二对象为不同服务器中程序运行时生成的对象,将所述投递消息添加至所述第一对象对应的第一队列中,通过配置的消息中间件从所述第一队列中获取所述投递消息,根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中,用于所述第二队列关联的消费函数对所述投递消息进行处理。本方案通过消息队列的方式实现不同服务器中对象的之间的数据交互,数据交互过程中各个服务器之间的解耦,同时能够实现数据处理过程的削峰填谷,解决了相关方案中负载均衡能力较差的问题,实现了实体交互的统一性,代码易于管理和维护,提高了系统吞吐量。
图3为本申请实施例提供的另一种基于消息队列的数据交互方法的流程图,如图3所示,具体包括:
步骤S301、在第一对象发送数据内容至第二对象的情况下,基于所述第一对象分配的第一信箱地址以及所述第二对象分配的第二信箱地址生成投递消息,所述第一对象和所述第二对象为不同服务器中程序运行时生成的对象。
步骤S302、将所述投递消息添加至所述第一对象对应的第一队列中。
步骤S303、通过配置的消息中间件从所述第一队列中获取所述投递消息,根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中。
步骤S304、在所述第二对象的计算资源满足空闲条件的情况下,通过关联的消费函数对所述投递消息进行处理。
在一个实施例中,第二对象进行第二队列中的数据消费时,进行相应的自身计算资源是否满足空闲条件的判断,其中,该空闲条件可以是运行的进程数量小于预设数量、CPU占用率小于预设值、内存占用率小于预设值或者当前需要处理的订阅的数据的关联的线程处于空闲状态中的至少一种。由此,通过设置队列消费条件,实现负载均衡处理。以游戏中的战斗进程为例,战斗进程被单独独立出来,作为无状态的计算资源,传统的调用方式是直连对应的服务进行调用获取战斗计算返回值,该种计算模型相对低效,存在计算资源利用不合理,以及存在一定的计算失败的风险。不论负载均衡端如何处理,调用方采用哪种算法,比如场景的轮询算法,权重算法,一定区间的随机算法,依旧存在计算不均衡的情况。此时最忙的战斗计算节点,在最忙的时候,仍然接收到了外部计算请求,那么他只能把任务放入线程池队列中,等待计算,这时候很有可能超时。本方案实施例中,将计算任务放入消息队列中,由计算资源去拉取计算并返回,该种情况下,当计算资源空闲的时候进行拉取。通过消息队列的反向代理,更好的保护了计算资源,以及计算资源的合理利用,给性能带来了更好的稳定性。
由上述可知,在第一对象发送数据内容至第二对象的情况下,基于所述第一对象分配的第一信箱地址以及所述第二对象分配的第二信箱地址生成投递消息,所述第一对象和所述第二对象为不同服务器中程序运行时生成的对象,将所述投递消息添加至所述第一对象对应的第一队列中,通过配置的消息中间件从所述第一队列中获取所述投递消息,根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中,用于所述第二队列关联的消费函数对所述投递消息进行处理。本方案通过消息队列的方式实现不同服务器中对象的之间的数据交互,数据交互过程中各个服务器之间的解耦,同时能够实现数据处理过程的削峰填谷,解决了相关方案中负载均衡能力较差的问题,实现了实体交互的统一性,代码易于管理和维护,提高了系统吞吐量。
在一个实施例中,在第二对象为多个的情况下,根据投递消息中记录的第二信箱地址将投递消息投递至第二对象对应的第二队列中,包括:根据投递消息中记录的第二信箱地址依次将投递消息投递至对应的第二对象的第二队列中。即通过将投递消息添加至第一队列后,借助于消息中间件进行分批次的投递,避免了单次的数据内容同时并发处理导致的拥塞问题。
图4为本申请实施例提供的另一种基于消息队列的数据交互方法的流程图,如图4所示,具体包括:
步骤S401、在第一对象发送数据内容至第二对象的情况下,基于所述第一对象分配的第一信箱地址以及所述第二对象分配的第二信箱地址生成投递消息,所述第一对象和所述第二对象为不同服务器中程序运行时生成的对象。
步骤S402、将所述投递消息添加至所述第一对象对应的第一队列中。
步骤S403、通过配置的消息中间件从所述第一队列中获取所述投递消息,根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中,用于所述第二队列关联的消费函数对所述投递消息进行处理。
步骤S404、在检测到所述消息中间件对应的分区变更或处理超时的情况下,进行当前处理状态的记录,以用于链接重新建立时进行恢复处理。
在一个实施例中,通过消息队列以及消息中间件进行数据投递的方式,具备较强的容灾处理能力。具体的,在检测到消息中间件对应的分区变更或处理超时的情况下,进行当前处理状态的记录,以用于链接重新建立时进行恢复处理。由此保证了不重复消费,可重连恢复的容灾设计,实现了网络分区不丢失数据的容错性设计。
由上述可知,在第一对象发送数据内容至第二对象的情况下,基于所述第一对象分配的第一信箱地址以及所述第二对象分配的第二信箱地址生成投递消息,所述第一对象和所述第二对象为不同服务器中程序运行时生成的对象,将所述投递消息添加至所述第一对象对应的第一队列中,通过配置的消息中间件从所述第一队列中获取所述投递消息,根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中,用于所述第二队列关联的消费函数对所述投递消息进行处理。本方案通过消息队列的方式实现不同服务器中对象的之间的数据交互,数据交互过程中各个服务器之间的解耦,同时能够实现数据处理过程的削峰填谷,解决了相关方案中负载均衡能力较差的问题,实现了实体交互的统一性,代码易于管理和维护,提高了系统吞吐量。
图5为本申请实施例提供的一种基于消息队列的数据交互装置的结构框图,如图5所示,该装置用于执行上述实施例提供的基于消息队列的数据交互方法,具备执行方法相应的功能模块和有益效果。如图5所示,该装置具体包括:消息生成模块101、消息添加模块102、消息获取模块103和消息投递模块104,其中,
消息生成模块101,配置为在第一对象发送数据内容至第二对象的情况下,基于所述第一对象分配的第一信箱地址以及所述第二对象分配的第二信箱地址生成投递消息,所述第一对象和所述第二对象为不同服务器中程序运行时生成的对象;
消息添加模块102,配置为将所述投递消息添加至所述第一对象对应的第一队列中;
消息获取模块103,配置为通过配置的消息中间件从所述第一队列中获取所述投递消息;
消息投递模块104,配置为根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中,用于所述第二队列关联的消费函数对所述投递消息进行处理。
由上述可知,在第一对象发送数据内容至第二对象的情况下,基于所述第一对象分配的第一信箱地址以及所述第二对象分配的第二信箱地址生成投递消息,所述第一对象和所述第二对象为不同服务器中程序运行时生成的对象,将所述投递消息添加至所述第一对象对应的第一队列中,通过配置的消息中间件从所述第一队列中获取所述投递消息,根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中,用于所述第二队列关联的消费函数对所述投递消息进行处理。本方案通过消息队列的方式实现不同服务器中对象的之间的数据交互,数据交互过程中各个服务器之间的解耦,同时能够实现数据处理过程的削峰填谷,解决了相关方案中负载均衡能力较差的问题,实现了实体交互的统一性,代码易于管理和维护,提高了系统吞吐量。
在一个可能的实施例中,该装置还包括地址分配模块,配置为:
在所述基于所述第一对象分配的第一信箱地址以及所述第二对象分配的第二信箱地址生成投递消息之前,分别对所述第一对象和所述第二对象分配第一信箱地址和第二信箱地址,并创建和所述第一对象关联的第一队列,以及和所述第二对象关联的第二队列,所述第一信箱地址和所述第二信箱地址包括不同的唯一标识。
在一个可能的实施例中,该装置还包括中间件配置为模块,配置为:
在所述创建和所述第一对象关联的第一队列之后,将所述第一队列与配置的第一消息中间件进行绑定;
所述通过配置的消息中间件从所述第一队列中获取所述投递消息,包括:
通过配置的所述第一消息中间件从所述第一队列中获取所述投递消息。
在一个可能的实施例中,该装置还包括函数配置模块,配置为:
对所述第二队列关联的消费函数进行动态增减,所述消费函数用于对所述第二队列中被订阅的数据进行消费处理。
在一个可能的实施例中,该装置还包括消息处理模块,配置为:
在所述根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中之后,在所述第二对象的计算资源满足空闲条件的情况下,通过关联的消费函数对所述投递消息进行处理。
在一个可能的实施例中,所述消息处理模块,具体配置为:
在检测到所述消息中间件对应的分区变更或处理超时的情况下,进行当前处理状态的记录,以用于链接重新建立时进行恢复处理。
在一个可能的实施例中,在所述第二对象为多个的情况下,所述消息投递模块,具体配置为:
根据所述投递消息中记录的所述第二信箱地址依次将所述投递消息投递至对应的第二对象的第二队列中。
图6为本申请实施例提供的一种电子设备的结构示意图,如图6所示,该设备包括处理器201、存储器202、输入装置203和输出装置204;设备中处理器201的数量可以是一个或多个,图6中以一个处理器201为例;设备中的处理器201、存储器202、输入装置203和输出装置204可以通过总线或其他方式连接,图6中以通过总线连接为例。存储器202作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请实施例中的基于消息队列的数据交互方法对应的程序指令/模块。处理器201通过运行存储在存储器202中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的基于消息队列的数据交互方法。输入装置703可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置204可包括显示屏等显示设备。
本申请实施例还提供一种包含计算机可执行指令的非易失性存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种上述实施例描述的基于消息队列的数据交互方法,其中,包括:
在第一对象发送数据内容至第二对象的情况下,基于所述第一对象分配的第一信箱地址以及所述第二对象分配的第二信箱地址生成投递消息,所述第一对象和所述第二对象为不同服务器中程序运行时生成的对象;
将所述投递消息添加至所述第一对象对应的第一队列中;
通过配置的消息中间件从所述第一队列中获取所述投递消息,根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中,用于所述第二队列关联的消费函数对所述投递消息进行处理。
值得注意的是,上述基于消息队列的数据交互装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本申请实施例的保护范围。
在一些可能的实施方式中,本申请提供的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算机设备上运行时,所述程序代码用于使所述计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的方法中的步骤,例如,所述计算机设备可以执行本申请实施例所记载的基于消息队列的数据交互方法。所述程序产品可以采用一个或多个可读介质的任意组合实现。
Claims (9)
1.基于消息队列的数据交互方法,其特征在于,包括:
在第一对象发送数据内容至第二对象的情况下,分别对所述第一对象和所述第二对象分配第一信箱地址和第二信箱地址,并创建和所述第一对象关联的第一队列,以及和所述第二对象关联的第二队列,所述第一信箱地址和所述第二信箱地址包括不同的唯一标识,基于所述第一对象分配的第一信箱地址以及所述第二对象分配的第二信箱地址生成投递消息,所述第一对象和所述第二对象为不同服务器中程序运行时生成的对象;
将所述投递消息添加至所述第一对象对应的第一队列中;
通过配置的消息中间件从所述第一队列中获取所述投递消息,根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中,用于所述第二队列关联的消费函数对所述投递消息进行处理。
2.根据权利要求1所述的基于消息队列的数据交互方法,其特征在于,在所述创建和所述第一对象关联的第一队列之后,还包括:
将所述第一队列与配置的第一消息中间件进行绑定;
所述通过配置的消息中间件从所述第一队列中获取所述投递消息,包括:
通过配置的所述第一消息中间件从所述第一队列中获取所述投递消息。
3.根据权利要求1所述的基于消息队列的数据交互方法,其特征在于,所述方法还包括:
对所述第二队列关联的消费函数进行动态增减,所述消费函数用于对所述第二队列中被订阅的数据进行消费处理。
4.根据权利要求3所述的基于消息队列的数据交互方法,其特征在于,在所述根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中之后,还包括:
在所述第二对象的计算资源满足空闲条件的情况下,通过关联的消费函数对所述投递消息进行处理。
5.根据权利要求1所述的基于消息队列的数据交互方法,其特征在于,所述根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列时,还包括:
在检测到所述消息中间件对应的分区变更或处理超时的情况下,进行当前处理状态的记录,以用于链接重新建立时进行恢复处理。
6.根据权利要求1-5中任一项所述的基于消息队列的数据交互方法,其特征在于,在所述第二对象为多个的情况下,所述根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中,包括:
根据所述投递消息中记录的所述第二信箱地址依次将所述投递消息投递至对应的第二对象的第二队列中。
7.基于消息队列的数据交互装置,其特征在于,包括:
消息生成模块,配置为在第一对象发送数据内容至第二对象的情况下,分别对所述第一对象和所述第二对象分配第一信箱地址和第二信箱地址,并创建和所述第一对象关联的第一队列,以及和所述第二对象关联的第二队列,所述第一信箱地址和所述第二信箱地址包括不同的唯一标识,基于所述第一对象分配的第一信箱地址以及所述第二对象分配的第二信箱地址生成投递消息,所述第一对象和所述第二对象为不同服务器中程序运行时生成的对象;
消息添加模块,配置为将所述投递消息添加至所述第一对象对应的第一队列中;
消息获取模块,配置为通过配置的消息中间件从所述第一队列中获取所述投递消息;
消息投递模块,配置为根据所述投递消息中记录的所述第二信箱地址将所述投递消息投递至所述第二对象对应的第二队列中,用于所述第二队列关联的消费函数对所述投递消息进行处理。
8.一种电子设备,所述设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现权利要求1-6中任一项所述的基于消息队列的数据交互方法。
9.一种存储计算机可执行指令的非易失性存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行权利要求1-6中任一项所述的基于消息队列的数据交互方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310763988.6A CN116755905B (zh) | 2023-06-26 | 2023-06-26 | 基于消息队列的数据交互方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310763988.6A CN116755905B (zh) | 2023-06-26 | 2023-06-26 | 基于消息队列的数据交互方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116755905A CN116755905A (zh) | 2023-09-15 |
CN116755905B true CN116755905B (zh) | 2024-02-13 |
Family
ID=87949406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310763988.6A Active CN116755905B (zh) | 2023-06-26 | 2023-06-26 | 基于消息队列的数据交互方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116755905B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109815035A (zh) * | 2019-02-27 | 2019-05-28 | 深信服科技股份有限公司 | 一种消息队列的消息传递方法及相关装置 |
CN111049753A (zh) * | 2019-12-18 | 2020-04-21 | 网易(杭州)网络有限公司 | 消息的发送方法、装置、电子设备及计算机可读介质 |
CN111740872A (zh) * | 2020-05-06 | 2020-10-02 | 北京百度网讯科技有限公司 | 消息传递测试方法、装置、电子设备和存储介质 |
CN112291224A (zh) * | 2020-10-23 | 2021-01-29 | 上海淇玥信息技术有限公司 | 一种实时通信的交互方法、装置和电子设备 |
CN115665173A (zh) * | 2022-12-05 | 2023-01-31 | 深圳市华曦达科技股份有限公司 | 一种基于MQ的WebSocket通信方法、系统和存储介质 |
US11582326B1 (en) * | 2021-08-05 | 2023-02-14 | Paypal, Inc. | Scalable messaging framework for providing machine learning services across multiple availability zones |
-
2023
- 2023-06-26 CN CN202310763988.6A patent/CN116755905B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109815035A (zh) * | 2019-02-27 | 2019-05-28 | 深信服科技股份有限公司 | 一种消息队列的消息传递方法及相关装置 |
CN111049753A (zh) * | 2019-12-18 | 2020-04-21 | 网易(杭州)网络有限公司 | 消息的发送方法、装置、电子设备及计算机可读介质 |
CN111740872A (zh) * | 2020-05-06 | 2020-10-02 | 北京百度网讯科技有限公司 | 消息传递测试方法、装置、电子设备和存储介质 |
CN112291224A (zh) * | 2020-10-23 | 2021-01-29 | 上海淇玥信息技术有限公司 | 一种实时通信的交互方法、装置和电子设备 |
US11582326B1 (en) * | 2021-08-05 | 2023-02-14 | Paypal, Inc. | Scalable messaging framework for providing machine learning services across multiple availability zones |
CN115665173A (zh) * | 2022-12-05 | 2023-01-31 | 深圳市华曦达科技股份有限公司 | 一种基于MQ的WebSocket通信方法、系统和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116755905A (zh) | 2023-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210311781A1 (en) | Method and system for scalable job processing | |
US20140280988A1 (en) | System and method for parallel multiplexing between servers in a cluster | |
CN109802895B (zh) | 数据处理系统、方法及令牌管理方法 | |
CN113422842B (zh) | 一种考虑网络负载的分布式电力用电信息数据采集系统 | |
WO2024066828A1 (zh) | 一种数据处理方法、装置、设备、计算机可读存储介质及计算机程序产品 | |
WO2016202201A1 (zh) | 一种资源分配方法、装置和智能电视系统 | |
CN113849312A (zh) | 数据处理任务的分配方法、装置、电子设备及存储介质 | |
US8458702B1 (en) | Method for implementing user space up-calls on java virtual machine before/after garbage collection | |
CN111427551A (zh) | 编程平台的用户代码运行方法及平台、设备、存储介质 | |
CN111200606A (zh) | 深度学习模型任务处理方法、系统、服务器及存储介质 | |
CN112104679B (zh) | 处理超文本传输协议请求的方法、装置、设备和介质 | |
CN112698838A (zh) | 多云容器部署系统及其容器部署方法 | |
CN110727507B (zh) | 一种消息的处理方法、装置、计算机设备和存储介质 | |
CN109388501B (zh) | 基于人脸识别请求的通信匹配方法、装置、设备及介质 | |
CN108259605B (zh) | 一种基于多数据中心的数据调用系统及方法 | |
CN109413117B (zh) | 分布式数据计算方法、装置、服务器及计算机存储介质 | |
CN111711675B (zh) | 一种针对局域网内并发消息传递的解决方法 | |
CN115550354A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN116755905B (zh) | 基于消息队列的数据交互方法、装置、设备及存储介质 | |
CN112565390A (zh) | 服务分配方法、装置、电子设备及存储介质 | |
CN111835770B (zh) | 一种数据处理方法、装置、服务器及存储介质 | |
CN113220432B (zh) | 多云互联方法、装置、设备、存储介质及产品 | |
CN111541667A (zh) | 一种系统间消息通信的方法、设备、存储介质 | |
CN112689008A (zh) | 网络连接池管理方法、装置、设备和存储介质 | |
CN112616143A (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 |