CN117370045A - 中间件切换方法、系统及相关设备 - Google Patents
中间件切换方法、系统及相关设备 Download PDFInfo
- Publication number
- CN117370045A CN117370045A CN202311439345.2A CN202311439345A CN117370045A CN 117370045 A CN117370045 A CN 117370045A CN 202311439345 A CN202311439345 A CN 202311439345A CN 117370045 A CN117370045 A CN 117370045A
- Authority
- CN
- China
- Prior art keywords
- middleware
- message
- target
- protocol
- target application
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 238000004891 communication Methods 0.000 claims abstract description 41
- 230000008569 process Effects 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 9
- 230000005055 memory storage Effects 0.000 claims description 4
- 230000002085 persistent effect Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 15
- 230000006978 adaptation Effects 0.000 description 11
- 238000004590 computer program Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000004044 response Effects 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/547—Remote procedure calls [RPC]; Web services
-
- 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/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- 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
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
本申请公开了中间件切换方法、系统及相关设备,该方法包括:获取中间件协议接口;其中,中间件协议接口根据多种中间件各自采用的协议信息编写而成,用于多种中间件与目标应用之间的通信;多种中间件包含当前中间件和目标中间件,当前中间件较比目标中间件先与目标应用存在通信关系;调用中间件协议接口切换中间件,以使得目标中间件替代当前中间件与目标应用进行通信。本申请通过由多种协议信息编写而成的中间件协议接口,能保障目标应用轻松适配不同中间件的通信协议,即促使目标应用能自由地切换使用多种中间件,同时,有效规避每次传统地切换中间件所带的代码重构成本和潜在的故障风险。
Description
技术领域
本申请实施例涉及互联网技术领域,尤其涉及中间件切换方法、系统及相关设备。
背景技术
中间件,是介于应用系统(或称应用软件)和系统软件(或称操作系统)之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。常见的中间件有消息中间件、交易中间件等。
但现有技术中,业务应用对中间件如消息中间件进行技术选型后,业务应用软件会与某种特定的消息中间件紧密耦合,包括业务逻辑与该消息中间件的API、协议等紧密交织;若要切换使用另一中间件,需要对现有代码进行大量的修改和重构,而这过程的运维成本大且容易引入新的运行风险。
针对于此,相关技术并未提供有效的解决方案。
发明内容
本申请实施例提供了中间件切换方法、系统及相关设备,用于便捷实现不同中间件之间的切换使用。
本申请实施例第一方面提供一种中间件切换方法,包括:
获取中间件协议接口;其中,所述中间件协议接口根据多种中间件各自采用的协议信息编写而成,用于所述多种中间件与目标应用通信之间的通信;所述多种中间件包含当前中间件和目标中间件,所述当前中间件较比所述目标中间件先与所述目标应用存在通信关系;
调用所述中间件协议接口切换中间件,以使得所述目标中间件替代所述当前中间件与所述目标应用进行通信。
可选地,根据多种中间件各自采用的协议信息编写中间件协议接口的过程,包括:
对于所述多种中间件中采用共同协议的中间件,根据所述共同协议的约定内容确定接口通用文档,并基于所述接口通用文档的内容编写通用的中间件协议接口;
和/或,
对于所述多种中间件中采用特定协议的中间件,根据所述特定协议的约定内容确定接口特定文档,并基于所述接口特定文档的内容编写专用的中间件协议接口;所述特定协议指除所述共同协议之外的通信协议。
可选地,所述方法还包括:
所述多种中间件为消息中间件时,对于无目标服务的所述目标中间件,采用所述中间件协议接口的业务管理程序为所述目标中间件增设所述目标服务;所述目标服务包含会话重连服务。
可选地,所述多种中间件为消息中间件时,拓展所述中间件协议接口的消息延时服务的过程,包括:
将所述消息中间件内的消息队列划分成多个延时队列;
设置每一所述延时队列存储消息时的存储时长,以使得预设消息经至少一所述延时队列按各自所述存储时长存储后,在指定时间投递到所述目标应用。
可选地,存储所述预设消息的至少一所述延时队列的选择过程,包括:
对于被限定预设时长后送达所述目标应用的所述预设消息,以多个所述存储时长的组合形式表达所述预设时长,并将多个所述存储时长对应的所述延时队列作为存储所述预设消息的队列。
可选地,所述预设消息经至少一所述延时队列按各自所述存储时长存储后,在指定时间投递到所述目标应用的过程,包括:
依据所述预设消息的创建时间、当前时间及所述当前延时队列的存储时长,判断所述预设消息在所述当前延时队列的剩余存储时长;
所述剩余存储时长小于阈值时,将所述预设消息推送给其他延时队列存储,所述其他延时队列作为下一当前延时队列,直至最新的所述其他延时队列在所述指定时间将所述预设消息投递到所述目标应用;
所述剩余存储时长大于阈值时,将所述预设消息继续存储于所述当前延时队列。
可选地,所述多种中间件为消息中间件时,拓展所述中间件协议接口的消息重试服务的过程,包括:
对所述所述消息中间件增设重试程序,以使得所述目标应用对所述消息中间件推送的预设消息消费失败后,再次向所述目标应用推送所述预设消息,直至所述目标应用多次消费失败后停止推送或丢弃所述预设消息。
本申请第一方面所述的方法在具体实施时可采用本申请第二方面所述的内容实现。
本申请实施例第二方面提供一种中间件切换系统,包括:
获取单元,用于获取中间件协议接口;其中,所述中间件协议接口根据多种中间件各自采用的协议信息编写而成,用于所述多种中间件与目标应用之间的通信;所述多种中间件包含当前中间件和目标中间件,所述当前中间件较比所述目标中间件先与所述目标应用存在通信关系;
处理单元,用于调用所述中间件协议接口切换中间件,以使得所述目标中间件替代所述当前中间件与所述目标应用进行通信。
本申请实施例第三方面提供一种电子设备,包括:中央处理器,存储器以及输入输出接口;所述存储器为短存储储存储器或持久存储存储器;
所述中央处理器配置为与所述存储器通信,并执行所述存储器中的指令操作以执行本申请实施例第一方面或第一方面的任一具体实现方式所描述的方法。
本申请实施例第四方面提供一种计算机可读存储介质,包括指令,当所述指令在计算机上运行时,使得计算机执行如本申请实施例第一方面或第一方面的任一具体实现方式所描述的方法。
本申请实施例第五方面提供一种包含指令或计算机程序的计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行如本申请实施例第一方面或第一方面的任一具体实现方式所描述的方法。
从以上技术方案可以看出,本申请实施例至少具有以下优点:
通过由多种协议信息编写而成的中间件协议接口,能保障目标应用轻松适配不同中间件的通信协议,即促使目标应用能自由地切换使用多种中间件,同时,有效规避每次传统地切换中间件所带的代码重构成本和潜在的故障风险。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
需要说明的是,虽然各实施例所涉及的流程性示意图(若存在)中各个步骤按照箭头的指示依次绘制,但除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
图1为本申请实施例的系统架构示意图;
图2为本申请实施例中间件切换方法的一个流程示意图;
图3为本申请实施例中间件切换方法的接口结构示意图;
图4为本申请实施例中间件切换方法的另一流程示意图;
图5为本申请实施例中间件切换方法的另一流程示意图;
图6为本申请实施例中间件切换方法的另一流程示意图;
图7为本申请实施例中间件切换系统的一个结构示意图;
图8为本申请实施例电子设备的一个结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在以下的描述中,涉及到“一个具体实施方式”或“一个具体示例”等类似表达,其描述了所有可能实施例的子集,但是可以理解,“一个具体实施方式”或“一个具体示例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。在以下的描述中,涉及到的术语多个是指至少两个。本申请所说的某数值达到阈值(如果存在),在一些具体示例中,可包括前者大于阈值后者的情况;若提及“任意”或“至少一”等类似表述,具体可指所列举示例中的任一种示例或这些示例之间的任意组合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
请参见图1,图1是本申请实施例提供的系统架构示意图。如图1所示,该系统架构可以包括业务服务器100以及终端集群,终端集群可以包括:终端设备200a、终端设备200b、终端设备200c、……、终端设备200n等终端设备。其中,上述业务服务器100可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云数据库、云服务、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备(包括终端设备200a、终端设备200b、终端设备200c、……、终端设备200n)可以是智能手机、平板电脑、笔记本电脑、台式计算机、掌上电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备(例如智能手表、智能手环等)、智能电脑、智能车载等智能终端。其中,业务服务器100与终端集群中的各终端设备可以建立通信连接,终端集群中的各终端设备之间也可建立通信连接。换句话说,业务服务器100可与终端设备200a、终端设备200b、终端设备200c、……、终端设备200n中的各终端设备建立通信连接,例如终端设备200a与业务服务器100之间可建立通信连接。终端设备200a与终端设备200b之间可建立通信连接,终端设备200a与终端设备200c之间也可建立通信连接。上述通信连接不限定连接方式,可以通过有线通信方式进行直接或间接地连接,也可以通过无线通信方式进行直接或间接地连接等,具体可根据实际应用场景确定,本申请在此不做限制。
应该理解,如图1所示的终端集群中的每个终端设备均可以安装有客户端应用,业务服务器100部署有中间件协议接口。客户端应用运行于终端设备时,可以与业务服务器100的中间件协议接口对接,使得通过该接口能让客户端应用适配上多种中间件,如消息中间件,防止客户端应用仅能与一种消息中间件通信,而存在无备案的服务风险或技术制裁。其中,该客户端应用可以为浏览器应用、社交应用、即时通信应用、直播应用、游戏应用、视频应用、音乐应用、K歌应用、购物应用、小说应用、支付应用等具有显示文字、图像、音频以及视频等数据信息功能的客户端应用,具体可根据实际应用场景需求确定,在此不做限制。其中,该客户端应用可以为独立的客户端,也可以为集成在某客户端(例如即时通信客户端、社交客户端等)中的嵌入式子客户端,具体可根据实际应用场景确定,在此不做限定。
下面将对本申请的方法做进一步的详细说明。
请参阅图2,本申请第一方面提供一种中间件切换方法的一个具体实施例,该实施例包括如下操作步骤:
步骤21、获取中间件协议接口。
其中,中间件协议接口根据多种中间件各自采用的协议信息编写而成,用于多种中间件与目标应用之间的通信;多种中间件包含当前中间件和目标中间件,当前中间件较比目标中间件先与目标应用存在通信关系。
不同中间件在协议等特性上有所区别,故可依据协议间的异同配置出可供多种中间件通用的中间件协议接口,以克服不同中间件间的鸿沟,使得一中间件存在使用问题时能由其他中间件作替补,从而维持通信机制的稳定。
以消息中间件(即消息队列MQ)为例,目前,目标应用选定一种消息中间件后,便会与该消息中间件的API、协议等特性紧密交织即高度耦合,导致难以在不影响现有代码的情况下切换使用其他的消息中间件。若选择切换,紧耦合性会使得代码难以维护和更新,包括每次变更消息中间件都需要在整个代码库中进行相应的修改,可维护性差且工作量大。因此,有必要提供一种能灵活可靠地适配多种消息中间件的通信装置或中间件切换方法,具体的,可引入包容性大的、统一的中间件协议接口充当适配层,促使通过其具有的中间调配功能,能实现不同消息中间件间的无缝切换即替代性使用,从而为分布式系统提供稳定的、高效的通信机制。
步骤22、调用中间件协议接口切换中间件,以使得目标中间件替代当前中间件与目标应用进行通信。
可以理解的是,本实施例的中间件协议接口先适配了各中间件的协议,再由协议适配具体产品的特性(如各中间件处理事务的时间特性和路径特性),使得中间件协议接口的加入能给上下层应用提供中介服务,如收发信息、管理密钥、均衡负载等。
综上,本申请实施例能通过由多种协议信息编写而成的中间件协议接口,保障目标应用轻松适配不同中间件的通信协议,即促使目标应用能自由地切换使用多种中间件,同时,有效规避每次传统地切换中间件所带的代码重构成本和潜在的故障风险。
在上述示例说明的基础上,下面将提供一些具体的可能实施示例,实际应用中,这些示例之间的实施内容可根据相应的功能原理、应用逻辑由需地结合或单独实施,具体可由实际场景而定。对交易中间件等中间件的切换过程,可类似消息中间件的切换过程实现,具体不再赘述。
请参阅图2至图6,本申请提供一种中间件切换方法的另一具体实施例,该实施例包括如下操作步骤:
步骤21、获取中间件协议接口。
在一些具体示例中,根据多种中间件各自采用的协议信息编写中间件协议接口的过程,包括:(方式1.抽象或统一适配)对于多种中间件中采用共同协议的中间件,根据共同协议的约定内容确定接口通用文档,并基于接口通用文档的内容编写通用的中间件协议接口;和/或,(方式2.具体适配)对于多种中间件中采用特定协议的中间件,根据特定协议的约定内容确定接口特定文档,并基于接口特定文档的内容编写专用的中间件协议接口;特定协议指除共同协议之外的通信协议。
上述接口通用文档、接口特定文档的内容可包含接口地址、接口及其交互方约定的请求参数和响应参数等。以消息中间件为例,消息中间件的基本组成有消息生产者、消息生产者、消息队列MQ,其中,MQ作为消息生产者与消息生产者间传递消息的桥梁,负责存储和管理消息。
如图3所示,本申请的中间件协议接口(即消息中间件通信装置)面向具体的消息中间件时(即使用阶段),可抽象成接口的形态,而在封装等编写阶段,其可以抽象适配层或具体适配层的形态来表示。其中,抽象适配层主要面向或用来接入采用了共同协议的消息中间件(可称为主流中间件),而具体适配层主要面向采用了特定协议的消息中间件(可称为独特中间件),如宝兰德MQ、kafka、RabbitMQ等,上述共同协议可包括JMS协议、AMQP协议等市面上较为流行的通信协议。本申请中,将共同协议的信息用来编写中间件协议接口,可兜底性地保障市面上大部分的消息中间件,因统一适配了协议相通的接口而支持相互间被替换使用;同时,也具体考虑到了采用特定协议的独特中间件,如促使独特中间件间,因同样对接了支持各自协议的中间件协议接口,而能无阻碍地充当彼此的替补件。简言之,中间件协议接口的引入,使得无需每次替换中间件都要高成本地重构代码,及面临重构和运维带来的新风险。
示例性的,编写好后的中间件协议接口,可通过SPI机制供目标应用(即上层)选择不同的消息中间件,从而为上层应用提供发送普通消息、发送事务消息、发送延时消息、会话重连和消费重试等任意的业务服务功能。
一般的,采用了共同协议的主流中间件,较比采用了特定协议的独特中间件有更完备的业务服务功能,故若某独特中间件未完全实现主流中间件的全部业务功能,可使用抽象适配层的能力为该独特中间件加持业务功能。因此,本申请实施例的方法还可以包括:多种中间件为消息中间件时,对于无目标服务的目标中间件,采用中间件协议接口的业务管理程序为目标中间件增设目标服务。例如,对于无会话重连服务的目标中间件,采用中间件协议接口的会话管理程序为目标中间件增设会话重连服务。
如图4所示,基于开源JMS协议配置实现的主流中间件或(通用的)中间件协议接口,可实现通用的创建会话、心跳上报、会话重连等功能,但某独特中间件(可对接专用的中间件协议接口)如东方通MQ,可能目前没有实现会话重连功能,则此功能可由抽象适配层(即通用的中间件协议接口)提供。
在一些具体示例中,多种中间件为消息中间件时,中间件协议接口可以提供消息延时服务。拓展中间件协议接口的消息延时服务的过程,可包括:将消息中间件内的消息队列划分成多个延时队列;设置每一延时队列存储消息时的存储时长,以使得预设消息经至少一延时队列按各自存储时长存储后,在指定时间投递到目标应用,即使得预设消息在当前延时队列的存储时间到期后转存到其他延时队列,以实现预设消息延时到达目标应用前的暂存效果。具体的,各延时队列可以按存储时长的长短进行顺序排列。
如图5所示,为kafka消息中间件拓展延时发送消息这一服务功能,其中,可将kafka消息中间件中的消息队列MQ划分成18个延时队列(topic),每个延时队列对消息的存储时长为2小时至1秒中的任一时长,预设消息每多历经一延时队列就代表越延迟一步送到目标topic端(即目标应用),各延时队列内存储的消息可供其假设的消费者订阅并消费,该消费包含推送消息。
在一些具体示例中,为防止消息不必要地过多停留在延时队列内,从而耽搁目标应用接收和消费该消息,即失误性地多延长消息最终送至目标应用的传输时长,当然也可以是因为考虑到,用有较长存储时长的延时队列存储较短时长后就要到达目的的预设消息,可能会影响其他消息在该队列的寄存机会,即造成资源占用,故可对各延时队列存储和推送消息的顺序做限定。例如,存储预设消息的至少一延时队列的选择过程,可包括:对于被限定预设时长后送达目标应用的预设消息,以多个存储时长的组合形式表达预设时长,并将多个存储时长对应的延时队列作为存储预设消息的队列。当然,也可以用有较长存储时长的至少一延时队列,存储较短时长后就要到达目的的预设消息,具体不做限制。
如图5所示,对于在第100秒被创建的预设消息,该预设消息被限定37秒(即预设时长)后送达目标topic(即目标应用),即真实投递时间为137秒,目标topic可消费该消息相应的业务逻辑以开展信息上报、采购等具体业务。故该预设消息最终投递时间算得为100+37=137秒,当前(第100秒时)还剩余37秒到达目标topic,面对18个分配有相应存储时长的延时topic,存在37=30+5+1+1的分配表达关系,即该预设消息可依次推送到其中3个延时topic暂存,它们的存储时长分别为“30秒、5秒、1秒”。此处,当前延时队列比其他延时队列有更长的存储时长,当然亦可反之,即预设消息先后历经的延时topic的存储时长可分别为“1秒、5秒、30秒”,具体不做限制。
仍以图5为例,在一些具体示例中,预设消息经至少一延时队列按各自存储时长存储后,在指定时间投递到目标应用的过程,包括:依据预设消息的创建时间、当前时间及当前延时队列的存储时长,判断预设消息在当前延时队列的剩余存储时长;剩余存储时长小于阈值时,将预设消息推送给其他延时队列存储,其他延时队列作为下一当前延时队列,直至最新的其他延时队列在指定时间将预设消息投递到目标应用;剩余存储时长大于阈值时,将预设消息继续存储于当前延时队列。
示例性的,剩余存储时长=创建时间+当前topic单位时间(即存储时长)-当前时间,①剩余存储时长大于阈值0时,如剩余存储时长=100+30-120=10时,表示预设消息在存储时长为30秒的当前topic内的存储时间未到,消息回滚在当前topic内,即此消费者监听还没到30秒时消息仍存在当前topic;②存储时间小于阈值0时,表示预设消息在当前topic内的存储时间到了,将轮转到其他topic存储,例如,此消息30秒后才会由消费者4消费,并计算出剩余时间为7秒,并转发到5秒的topic。如此往复,最终剩余时间小于1秒时,此消息由1秒topic的消费者转发至目标topic。可选的,若预设消息先后历经的延时topic的存储时长分别为“1秒、5秒、30秒”,则上述阈值可相应变成0之外的其他值,即上述阈值可随topic的使用顺序不同而不同。
基于上述说明,目标应用(即消费者)可能会到点拒收消息,或因容器、网络有问题致使消息入库失败,即出现消费消息失败的状况,故可为目标应用部署重试逻辑,以期目标应用成功消费到预设消息。例如,在一些具体示例中,多种中间件为消息中间件时,拓展中间件协议接口的消息重试服务的过程,包括:对消息中间件增设重试程序,以使得目标应用对消息中间件推送的预设消息消费失败后,再次向目标应用推送预设消息,直至目标应用多次消费失败后停止推送或丢弃预设消息。
如图6所示,目标应用一次消费消息失败后,中间件协议接口可驱动消息中间件(即图示的延时消息模块)10秒后重发预设消息,以期消费者成功消费到预设消息,具体可以重新发送多次。此处的10秒可自行设定成其他时长,此10秒中对延时队列的使用过程可参考图5的示例内容实现,此处不赘述。对于一次或多次重发预设消息后,目标应用仍消费消息失败的情况,则可以考虑停止推送或丢弃预设消息。
步骤22、调用中间件协议接口切换中间件,以使得目标中间件替代当前中间件与目标应用进行通信。
综上,本申请实施例抽象适配了多种消息中间件的协议,灵活性强,通过统一的接口和适配层,促使通信装置能够轻松适配不同消息中间件的通信协议等特性,而无需重大的代码更改,即实现了在不同消息中间件之间的无缝切换。同时,这种设计可靠性强,不仅增强了系统的可维护性,减少了系统集成的复杂性,还降低了因切换中间件而引发的潜在故障风险。此外,通过SPI机制供应用选择不同的消息中间件,并提供通用的消息推送、消息消费接口。
请参阅图7,本申请第二方面提供一种中间件切换系统的一个具体实施例,该系统包括:
获取单元701,用于获取中间件协议接口;其中,中间件协议接口根据多种中间件各自采用的协议信息编写而成,用于多种中间件与目标应用之间的通信;多种中间件包含当前中间件和目标中间件,当前中间件较比目标中间件先与目标应用存在通信关系;
处理单元702,用于调用中间件协议接口切换中间件,以使得目标中间件替代当前中间件与目标应用进行通信。
可选地,获取单元701具体用于:
对于多种中间件中采用共同协议的中间件,根据共同协议的约定内容确定接口通用文档,并基于接口通用文档的内容编写通用的中间件协议接口;
和/或,
对于多种中间件中采用特定协议的中间件,根据特定协议的约定内容确定接口特定文档,并基于接口特定文档的内容编写专用的中间件协议接口;特定协议指除共同协议之外的通信协议。
可选地,获取单元701还用于:
多种中间件为消息中间件时,对于无目标服务的目标中间件,采用中间件协议接口的业务管理程序为目标中间件增设目标服务;目标服务包含会话重连服务。
可选地,获取单元701具体用于:
将消息中间件内的消息队列划分成多个延时队列;
设置每一延时队列存储消息时的存储时长,以使得预设消息经至少一延时队列按各自存储时长存储后,在指定时间投递到目标应用。
可选地,获取单元701具体用于:
对于被限定预设时长后送达目标应用的预设消息,以多个存储时长的组合形式表达预设时长,并将多个存储时长对应的延时队列作为存储预设消息的队列。
可选地,获取单元701具体用于:
依据预设消息的创建时间、当前时间及当前延时队列的存储时长,判断预设消息在当前延时队列的剩余存储时长;
剩余存储时长小于阈值时,将预设消息推送给其他延时队列存储,其他延时队列作为下一当前延时队列,直至最新的其他延时队列在指定时间将预设消息投递到目标应用;
剩余存储时长大于阈值时,将预设消息继续存储于当前延时队列。
可选地,多种中间件为消息中间件时,获取单元701具体用于:
对消息中间件增设重试程序,以使得目标应用对消息中间件推送的预设消息消费失败后,再次向目标应用推送预设消息,直至目标应用多次消费失败后停止推送或丢弃预设消息。
本申请实施例中,中间件切换系统各单元所执行的操作,与前述第一方面或第一方面的任一具体方法实施例所描述的操作类似,具体此处不再赘述。当然,本申请第一方面各操作的具体实现过程也可参见第二方面的相关描述实现。
请参阅图8,本申请实施例的电子设备800可以包括一个或一个以上中央处理器CPU(CPU,central processing units)801和存储器805,该存储器805中存储有一个或一个以上的应用程序或数据。
其中,存储器805可以是易失性存储或持久存储。存储在存储器805的程序可以包括一个或一个以上模块,每个模块可以包括对电子设备中的一系列指令操作。更进一步地,中央处理器801可以设置为与存储器805通信,在电子设备800上执行存储器805中的一系列指令操作。
电子设备800还可以包括一个或一个以上电源802,一个或一个以上有线或无线网络接口803,一个或一个以上输入输出接口804,和/或,一个或一个以上操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等。
该中央处理器801可以执行前述第一方面或第一方面的任一具体方法实施例所执行的操作,具体不再赘述。
本申请提供的一种计算机可读存储介质,包括指令,当所述指令在计算机上运行时,使得计算机执行如上述第一方面或第一方面的任一具体实现方式所描述的方法。
本申请提供的一种包含指令或计算机程序的计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行如上述第一方面或第一方面的任一具体实现方式所描述的方法。
可以理解的是,在本申请的各种实施例中,各步骤的序号大小并不意味着执行顺序的先后,各步骤的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统(若存在)、装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统或装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品(计算机程序产品)存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,业务服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,read-only memory)、随机存取存储器(RAM,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (10)
1.一种中间件切换方法,其特征在于,包括:
获取中间件协议接口;其中,所述中间件协议接口根据多种中间件各自采用的协议信息编写而成,用于所述多种中间件与目标应用之间的通信;所述多种中间件包含当前中间件和目标中间件,所述当前中间件较比所述目标中间件先与所述目标应用存在通信关系;
调用所述中间件协议接口切换中间件,以使得所述目标中间件替代所述当前中间件与所述目标应用进行通信。
2.根据权利要求1所述的中间件切换方法,其特征在于,根据多种中间件各自采用的协议信息编写中间件协议接口的过程,包括:
对于所述多种中间件中采用共同协议的中间件,根据所述共同协议的约定内容确定接口通用文档,并基于所述接口通用文档的内容编写通用的中间件协议接口;
和/或,
对于所述多种中间件中采用特定协议的中间件,根据所述特定协议的约定内容确定接口特定文档,并基于所述接口特定文档的内容编写专用的中间件协议接口;所述特定协议指除所述共同协议之外的通信协议。
3.根据权利要求1所述的中间件切换方法,其特征在于,所述方法还包括:
所述多种中间件为消息中间件时,对于无目标服务的所述目标中间件,采用所述中间件协议接口的业务管理程序为所述目标中间件增设所述目标服务;所述目标服务包含会话重连服务。
4.根据权利要求1所述的中间件切换方法,其特征在于,所述多种中间件为消息中间件时,拓展所述中间件协议接口的消息延时服务的过程,包括:
将所述消息中间件内的消息队列划分成多个延时队列;
设置每一所述延时队列存储消息时的存储时长,以使得预设消息经至少一所述延时队列按各自所述存储时长存储后,在指定时间投递到所述目标应用。
5.根据权利要求4所述的中间件切换方法,其特征在于,存储所述预设消息的至少一所述延时队列的选择过程,包括:
对于被限定预设时长后送达所述目标应用的所述预设消息,以多个所述存储时长的组合形式表达所述预设时长,并将多个所述存储时长对应的所述延时队列作为存储所述预设消息的队列。
6.根据权利要求4或5所述的中间件切换方法,其特征在于,所述预设消息经至少一所述延时队列按各自所述存储时长存储后,在指定时间投递到所述目标应用的过程,包括:
依据所述预设消息的创建时间、当前时间及所述当前延时队列的存储时长,判断所述预设消息在所述当前延时队列的剩余存储时长;
所述剩余存储时长小于阈值时,将所述预设消息推送给其他延时队列存储,所述其他延时队列作为下一当前延时队列,直至最新的所述其他延时队列在所述指定时间将所述预设消息投递到所述目标应用;
所述剩余存储时长大于阈值时,将所述预设消息继续存储于所述当前延时队列。
7.根据权利要求1至5中任一项所述的中间件切换方法,其特征在于,所述多种中间件为消息中间件时,拓展所述中间件协议接口的消息重试服务的过程,包括:
对所述所述消息中间件增设重试程序,以使得所述目标应用对所述消息中间件推送的预设消息消费失败后,再次向所述目标应用推送所述预设消息,直至所述目标应用多次消费失败后停止推送或丢弃所述预设消息。
8.一种中间件切换系统,其特征在于,包括:
获取单元,用于获取中间件协议接口;其中,所述中间件协议接口根据多种中间件各自采用的协议信息编写而成,用于所述多种中间件与目标应用之间的通信;所述多种中间件包含当前中间件和目标中间件,所述当前中间件较比所述目标中间件先与所述目标应用存在通信关系;
处理单元,用于调用所述中间件协议接口切换中间件,以使得所述目标中间件替代所述当前中间件与所述目标应用进行通信。
9.一种电子设备,其特征在于,包括:中央处理器,存储器以及输入输出接口;
所述存储器为短存储储存储器或持久存储存储器;
所述中央处理器配置为与所述存储器通信,并执行所述存储器中的指令操作以执行权利要求1至7中任意一项所述的方法。
10.一种计算机可读存储介质,其特征在于,包括指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1至7中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311439345.2A CN117370045A (zh) | 2023-10-31 | 2023-10-31 | 中间件切换方法、系统及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311439345.2A CN117370045A (zh) | 2023-10-31 | 2023-10-31 | 中间件切换方法、系统及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117370045A true CN117370045A (zh) | 2024-01-09 |
Family
ID=89402177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311439345.2A Pending CN117370045A (zh) | 2023-10-31 | 2023-10-31 | 中间件切换方法、系统及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117370045A (zh) |
-
2023
- 2023-10-31 CN CN202311439345.2A patent/CN117370045A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10552448B2 (en) | Systems and methods for event driven object management and distribution among multiple client applications | |
US10439916B2 (en) | Client-side fault tolerance in a publish-subscribe system | |
US9794365B2 (en) | Re-establishing push notification channels via user identifiers | |
CN111711663A (zh) | 发布及订阅服务的处理方法、装置及电子设备 | |
CN108712457B (zh) | 基于Nginx反向代理的后端服务器动态负载调整方法及装置 | |
US9692846B2 (en) | System, device and method for providing push service using feedback message | |
CN108023953B (zh) | Ftp服务的高可用实现方法和装置 | |
CN111090699A (zh) | 业务数据的同步方法和装置、存储介质、电子装置 | |
US10454795B1 (en) | Intermediate batch service for serverless computing environment metrics | |
CN102158423A (zh) | 经由聊天群跟踪内容项更新 | |
CN112118315A (zh) | 数据处理系统、方法、装置、电子设备和存储介质 | |
US9026839B2 (en) | Client based high availability method for message delivery | |
CN110493122A (zh) | 一种会话信息的同步方法、装置、计算设备及存储介质 | |
CN113434312A (zh) | 数据血缘关系处理方法及装置 | |
CN114629866A (zh) | 一种多个系统之间随机在线客服建立实时通讯的方法 | |
CN117370045A (zh) | 中间件切换方法、系统及相关设备 | |
CN114553936B (zh) | 连接方法、装置、电子设备和计算机可读存储介质 | |
CN110362395A (zh) | 后台程序管理方法、装置、计算机设备以及存储介质 | |
CN112242944A (zh) | 一种文件处理的方法以及相关装置 | |
CN111191134B (zh) | 一种智能推送方法及终端 | |
CN111625375A (zh) | 帐号预约方法和装置、存储介质及电子设备 | |
CN115250276A (zh) | 分布式系统及数据处理的方法和装置 | |
US11640410B1 (en) | Distributed log processing for data replication groups | |
CN112688998B (zh) | 一种可配置带权限的主数据订阅推送方法 | |
US11070418B1 (en) | System and method for managing distribution of state information |
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 |