CN116805946A - 一种消息请求处理方法、装置、电子设备及存储介质 - Google Patents

一种消息请求处理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116805946A
CN116805946A CN202210271272.XA CN202210271272A CN116805946A CN 116805946 A CN116805946 A CN 116805946A CN 202210271272 A CN202210271272 A CN 202210271272A CN 116805946 A CN116805946 A CN 116805946A
Authority
CN
China
Prior art keywords
target
message
port
request
environment
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
Application number
CN202210271272.XA
Other languages
English (en)
Inventor
李泽华
王洛槐
陈永洋
黄�俊
张晓生
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202210271272.XA priority Critical patent/CN116805946A/zh
Publication of CN116805946A publication Critical patent/CN116805946A/zh
Pending legal-status Critical Current

Links

Abstract

本发明公开了一种消息请求处理方法、装置、电子设备及存储介质,该方法包括:基于目标端口获取请求类型为非元数据请求的第一消息请求;对第一消息请求中关联目标主题标识的第一字段内容添加目标环境标识得到目标第一消息请求;基于目标主题标识和目标环境标识,确定服务地址映射信息中相匹配的目标服务地址映射信息;基于目标服务地址映射信息中的目标服务地址发送目标第一消息请求,获取针对目标第一消息请求返回的消息数据;删除消息数据中的目标环境标识得到目标消息数据,将目标消息数据返回给第一消息请求的请求方。本发明在减少资源消耗、业务代码无入侵式的同时实现了不同环境的客户端与Kafka集群之间交互的主题达到环境隔离。

Description

一种消息请求处理方法、装置、电子设备及存储介质
技术领域
本发明涉及计算机技术领域,特别涉及一种消息请求处理方法、装置、电子设备及存储介质。
背景技术
Kakfa是一个基于发布/订阅模式的消息系统,Kafka中消息是以topic进行分类的,生产者生产消息,消费者消费消息,都是面向topic的。其中,Topic是指消息的主题,代表一类消息,生产者和消费者通过主题进行消息通信;生产者是指向Topic发布消息的客户端程序,消费者是指订阅Topic消息的客户端程序。
相关技术中,为了实现不同环境的客户端与Kafka之间交互的主题达到环境隔离,采用以下两种处理方式:一种是kafka多实例隔离,不同环境使用独立的kafka集群,各环境分别与其对应的kafka集群单独连接互不干扰;另一种是客户端代码层面Topic隔离,在代码层面生产/消费不同的Topic主题。相关技术中的上述方式一由于每一个环境都需要一个Kafka集群实例,从而造成资源消耗非常大,而上述方式二必须在业务代码中将客户端生产/消费需要涉及的Topic主题信息全部增加环境标识后再与Kafka集群交互,从而会入侵业务代码,造成业务服务改动和维护成本高。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种消息请求处理方法、装置、电子设备及存储介质。所述技术方案如下:
一方面,提供了一种消息请求处理方法,所述方法包括:
基于目标端口获取第一消息请求;所述第一消息请求的请求类型为非元数据请求;
对所述第一消息请求中关联目标主题标识的第一字段内容添加目标环境标识,得到目标第一消息请求;所述目标环境标识为基于环境端口映射信息确定的所述目标端口对应的环境标识,所述环境端口映射信息表征环境标识与端口地址之间的对应关系;
基于所述目标主题标识和所述目标环境标识,确定服务地址映射信息中相匹配的目标服务地址映射信息;所述服务地址映射信息表征主题环境标识与服务地址之间的对应关系,所述主题环境标识包括主题标识和环境标识,所述服务地址为消息服务器集群中消息服务器的地址;
基于所述目标服务地址映射信息中的目标服务地址发送所述目标第一消息请求,获取针对所述目标第一消息请求返回的消息数据;
删除所述消息数据中的所述目标环境标识得到目标消息数据,将所述目标消息数据返回给所述第一消息请求的请求方;所述请求方的业务环境为所述目标环境标识对应的目标环境。
另一方面,提供了一种消息请求处理装置,所述装置包括:
第一消息请求获取模块,用于基于目标端口获取第一消息请求;所述第一消息请求的请求类型为非元数据请求;
第一环节标识添加模块,用于对所述第一消息请求中关联目标主题标识的第一字段内容添加目标环境标识,得到目标第一消息请求;所述目标环境标识为基于环境端口映射信息确定的所述目标端口对应的环境标识,所述环境端口映射信息表征环境标识与端口地址之间的对应关系;
第一映射信息确定模块,用于基于所述目标主题标识和所述目标环境标识,确定服务地址映射信息中相匹配的目标服务地址映射信息;所述服务地址映射信息表征主题环境标识与服务地址之间的对应关系,所述主题环境标识包括主题标识和环境标识,所述服务地址为消息服务器集群中消息服务器的地址;
第一发送模块,用于基于所述目标服务地址映射信息中的目标服务地址发送所述目标第一消息请求,获取针对所述目标第一消息请求返回的消息数据;
第一数据返回模块,用于删除所述消息数据中的所述目标环境标识得到目标消息数据,将所述目标消息数据返回给所述第一消息请求的请求方;所述请求方的业务环境为所述目标环境标识对应的目标环境。
在一个示例性的实施方式中,所述装置还包括:
第二消息请求获取模块,用于基于目标端口获取所述请求方发送给所述消息服务器集群的第二消息请求;所述第二消息请求的请求类型为元数据请求;
第二环境标识添加模块,用于对所述第二消息请求中关联所述目标主题标识的第二字段内容添加所述目标环境标识,得到目标第二消息请求;
第二发送模块,用于将所述目标第二消息请求发送给所述消息服务器集群,获取所述消息服务器集群返回的元数据信息;所述元数据信息包括所述消息服务器集群中对应目标主题环境标识的消息服务器的地址信息;
服务地址映射信息生成模块,用于基于所述对应目标主题环境标识的消息服务器的地址信息,生成所述目标服务地址映射信息;
元数据处理模块,用于将所述元数据信息中所述消息服务器的地址信息,替换为所述目标端口的目标端口地址,并删除所述元数据信息中的所述目标环境标识得到目标元数据信息;
第二数据返回模块,用于将所述目标元数据信息返回给所述请求方,以使得所述请求方基于所述目标元数据信息中的所述目标端口地址向所述目标端口发送所述第一消息请求。
在一个示例性的实施方式中,所述第二消息请求获取模块,具体用于接收所述请求方基于目标转发规则拦截转发的所述第二消息请求;
其中,所述目标转发规则是指所述目标环境对应的转发规则集合中,与所述第二消息请求的目的地址相匹配的转发规则;所述转发规则集合中的转发规则基于所述服务地址与所述目标端口地址的对应关系生成。
在一个示例性的实施方式中,所述装置还包括:
代理激活模块,用于响应于代理激活请求,从处于空闲状态的端口中选取目标端口,调整所述目标端口为处于工作状态并获取所述目标端口的目标端口地址;所述代理激活请求包括所述目标环境标识和所述服务地址;
转发规则生成写入模块,用于根据所述服务地址与所述目标端口地址,生成对应所述目标环境标识的转发规则,将所述转发规则写入所述请求方的所述转发规则集合;
环境端口映射信息生成模块,用于根据所述目标环境标识与所述目标端口地址之间的对应关系,生成所述环境端口映射信息。
在一个示例性的实施方式中,所述装置还包括:
代理关闭模块,用于响应于代理关闭请求,根据所述代理关闭请求中的目标环境标识,确定所述环境端口映射信息中相匹配的目标映射信息;所述目标映射信息指示所述目标环境标识与目标端口地址的对应关系;
转发规则删除模块,用于根据所述代理关闭请求中的服务地址和所述目标端口地址,将对应的转发规则从所述请求方的所述转发规则集合中删除;
端口映射信息调整模块,用于调整所述目标端口地址对应的目标端口为处于空闲状态,删除所述目标映射信息。
在一个示例性的实施方式中,所述代理激活模块包括:
轮询模块,用于响应于代理激活请求,向处于空闲状态的端口依次发送检测请求;
目标端口确定模块,用于当接收到任一所述空闲状态的端口返回的响应信息时,将所述任一空闲状态的端口确定为目标端口。
另一方面,提供了一种消息请求处理装置,所述装置包括:
业务服务器,用于向代理服务器的目标端口发送第一消息请求;所述第一消息请求的请求类型为非元数据请求;
代理服务器,用于对所述第一消息请求中关联目标主题标识的第一字段内容添加目标环境标识得到目标第一消息请求;基于所述目标主题标识和所述目标环境标识,确定服务地址映射信息中相匹配的目标服务地址映射信息;基于所述目标服务地址映射信息中的目标服务地址向消息服务器集群发送所述目标第一消息请求;其中,所述目标环境标识为基于环境端口映射信息确定的所述目标端口对应的环境标识,所述环境端口映射信息表征环境标识与端口地址之间的对应关系;所述服务地址映射信息表征主题环境标识与服务地址之间的对应关系,所述主题环境标识包括主题标识和环境标识,所述服务地址为消息服务器集群中消息服务器的地址;
消息服务器集群,用于针对所述目标第一消息请求向所述代理服务器返回消息数据;
所述代理服务器,还用于获取所述消息数据;删除所述消息数据中的所述目标环境标识得到目标消息数据,将所述目标消息数据返回给所述业务服务器。
另一方面,提供了一种电子设备,包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现上述的消息请求处理方法。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如上述的消息请求处理方法。
另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行上述的消息请求处理方法。
本发明实施例通过基于目标端口获取由目标环境的请求方发送的请求类型为非元数据请求的第一消息请求,并对该第一消息请求中关联目标主题标识的第一字段内容添加目标环境对应的目标环境标识得到目标第一消息请求,进而基于目标主题标识和目标环境标识确定服务地址映射信息中的目标服务地址映射信息,基于该目标服务地址映射信息中的目标服务地址发送该目标第一消息请求,并获取返回的消息数据,删除该消息数据中的目标环境标识得到目标消息数据,将该目标消息数据发送给上述的请求方,从而在减少资源消耗、业务代码无感知、无入侵式的同时实现了不同环境的客户端与Kafka集群之间交互的主题达到环境隔离。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是现有技术中的Kafka多实例隔离技术方案;
图1b是现有技术中的客户端代码层面Topic隔离技术方案;
图2a是本发明实施例提供的用于消息请求处理方法的一种架构示意图;
图2b是本发明实施例提供的另一种架构示意图;
图3是本发明实施例提供的一种消息请求处理方法的流程示意图;
图4是本发明实施例提供的另一种消息请求处理方法的流程示意图;
图5是本发明实施例提供的代理端口激活与关闭的流程示意图;
图6是本发明实施例提供的一种消息请求处理装置的结构框图;
图7是本发明实施例提供的一种电子设备的硬件结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
可以理解的是,在本申请的具体实施方式中,涉及到用户信息等相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本发明实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。
其中,云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS(Infrastructure as a Service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。按照逻辑功能划分,在IaaS(Infrastructure as a Service,基础设施即服务)层上可以部署PaaS(Platform as aService,平台即服务)层,PaaS层之上再部署SaaS(Software as a Service,软件即服务)层,也可以直接将SaaS部署在IaaS上。PaaS为软件运行的平台,如数据库、web容器等。SaaS为各式各样的业务软件,如web门户网站、短信群发器等。一般来说,SaaS和PaaS相对于IaaS是上层。
云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,ID entity)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。
存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(RAID,Redundant Array of Independent Disk)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
下面先对本发明实施例中可能涉及到的术语进行说明。
Kakfa:一个基于发布/订阅模式的消息系统。
Broker:一台kafka服务器就是一个broker。一个集群由至少一个broker组成。一个broker可以容纳多个topic。
Zookeeper:是一个分布式协调框架,负责协调管理并保存Kafka集群的所有元数据信息。比如集群都有哪些Broker在运行、创建了哪些Topic,每个Topic都有多少分区以及这些分区的Leader副本都在哪些机器上等信息。
Topic:消息的主题,代表一类消息,生产者和消费者通过主题进行消息通信。
生产者:向topic发布消息的客户端程序。
消费者:订阅topic消息的客户端程序。
CI/CD:持续集成和持续部署;
DevOps:Development和Operations的组合词,是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
序列化:将数据结构或对象转换成二进制数据流。
反序列化:将二进制数据流转换成实际的数据结构或者对象。
相关技术中,与Kafka集群进行交互的客户端通常处于不同的环境中,例如,开发流程中的客户端与测试流程中的客户端分别处于开发环境和测试环境。需要说明的是,本发明实施例中客户端所处的环境可以根据实际应用中需要与Kafka集群进行单独交互的单元来划分,例如,当需要开发流程中不同开发人员与Kafka集群的交互互不干扰时,可以将开发流程中对应不同开发人员的客户端划分为不同环境中的客户端。为了实现不同环境的客户端与Kafka之间交互的主题达到环境隔离,一种方式是采用Kafka多实例隔离,不同环境使用独立的Kafka集群,该方式中每一个环境都存在单独独立的Kafka集群,不同环境的业务服务只需要连接该环境对应的Kafka集群。如图1a所示,环境Env1和环境Env2分别对应独立的Kafka集群,单独连接互不干扰。由于每一个环境都需要一个Kafka集群实例,例如一个Kafka集群至少需要2台服务器(1台broker+1台zookeeper),如果高可用性至少需要6台服务器(3台broker+3台zookeeper),则有N套环境,将至少需要2N台服务器,如果需要高可用性至少需要6N台服务器,从而对资源造成很大的消耗。
另一种方式是采用客户端代码层面Topic隔离,在业务代码层面生产/消费不同的Topic主题。如图1b所示,生产者服务和消费者服务连接同一个Kafka集群,生产者服务和消费者服务根据所在环境,在业务代码层面配置请求Kafka集群,生产/消费对应Topic-环境ID(如图1b中的:Topic-Env1和Topic-Env2),由于操作的Topic主题(即Topic-环境标识)不同,Kafka集群会分别处理,从而达到环境隔离效果。但是该方式需要入侵业务代码,必须在业务代码中将客户端生产/消费需要涉及的Topic主题信息全部增加环境标识后再与Kafka集群交互,由于需要侵入代码,改动和维护成本高,并且如果业务代码没有全部修改将会导致消息异常(如需要消费Topic-Env1,由于没有注入-Env1的环境id,将导致生产/消费到原始Topic),影响问题排查。
基于此,本发明实施例提出了一种消息请求处理方法,该方法在实现多环境隔离的同时,不仅降低了资源消耗,而且不侵入业务代码,通过代理统一隔离,业务代码无感知,业务只要维护一套代码,降低了业务代码的改动和维护成本,也避免了因业务代码没有全部修改而导致的消息异常。
下面对本发明实施例的应用环境进行说明。
请参阅图2a,其所示为本发明实施例提供的用于消息请求处理方法的一种架构示意图,包括业务服务器210、代理服务器220和消息服务器集群230,其中,业务服务器210、代理服务器220和消息服务器集群230之间可以通过有线或者无线网络连接通信。
其中,业务服务器210为生产者/消费者提供后台服务,该后台服务具体可以是向消息服务器集群230发送消息请求,生产者/消费者可以处于不同的业务环境下,业务服务器210的业务环境与对应的生产者/消费者相对应,也即业务服务器210可以包括不同业务环境(如业务环境Dev1、业务环境Dev2)的业务服务器,每个业务环境可以对应有多个业务服务器。
代理服务器220是业务服务器210与消息服务器集群230之间的中间层代理,通过该代理服务器220可以做到业务服务器210与消息服务器集群230之间不直接交互,也就是说,业务服务器210发送的消息请求需要经代理服务器220发送至消息服务器集群230,具体的,代理服务器220可以通过与各环境相对应的端口接收消息请求,并在该消息请求的Topic相关信息中添加相应端口对应环境的环境标识(如Topic-Dev1,Topic-Dev2),以实现多环境隔离并且业务无感知。
消息服务器集群230是基于发布/订阅模式的消息系统,例如可以是Kafka集群。以Kafka集群为例,Kafka集群中可以由多个broker组成,一个broker就是一台Kafka服务器,一个broker可以容纳多个Topic。
本发明实施例的技术方案可以应用到CI/CD相关的DevOps平台产品应用中,可以在开发、测试等相关时期做到Kafka环境隔离,提升用户体验。在典型的应用场景如业务开发流程中,本发明可以用于不同开发人员隔离连接的Kafka环境,达到不同开发人员之间使用相互不干扰的目的。如图2a所示:开发人员1(Dev1)请求最终与开发人员2(Dev2)之间互不干扰。
图2b所示为本发明实施例的另一种架构示意图,代理服务器220可以包括代理管理模块221和代理模块222。其中,代理管理模块221负责控制代理模块221中对应环境的代理端口的开启与关闭,以及控制业务环境对应的生产者/消费者后台服务(即业务服务器)的流量转发规则。代理模块222负责和业务环境的生产者/消费者后台服务(即业务服务器)之间数据交互,以及负责控制传输数据内注入对应的环境标识,以及负责和消息服务器集群实例数据交互,做到多环境隔离并且业务无感知。
需要说明的是,本发明实施例中的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。客户端可以是智能手机、台式电脑、平板电脑、笔记本电脑等具有各种操作系统的硬件设备,也可以是配置在上述硬件设备中的软件,如应用程序,具体的,客户端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。
在一个示例性的实施方式中,上述客户端、服务器、集群均可以是区块链系统中的节点设备,能够将获取到以及生成的信息共享给区块链系统中的其他节点设备,实现多个节点设备之间的信息共享。区块链系统中的多个节点设备可以配置有同一条区块链,该区块链由多个区块组成,并且前后相邻的区块具有关联关系,使得任一区块中的数据被篡改时都能通过下一区块检测到,从而能够避免区块链中的数据被篡改,保证区块链中数据的安全性和可靠性。
下面结合图2a和图2b对本发明实施例的技术方案进行详细介绍。
请参阅图3,其所示为本发明实施例提供的一种消息请求处理方法的流程示意图,该方法可以应用于图2a中的代理服务器。需要说明的是,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图3所示,所述方法可以包括:
S301,基于目标端口获取第一消息请求。
其中,所述第一消息请求的请求类型为非元数据请求,即该第一消息请求不是用于请求消息服务器集群的元数据信息,通常消息服务器集群的元数据信息描述了该消息服务器集群中都有哪些消息服务器在运行、创建了哪些Topic,每个Topic都有多少分区以及这些分区的控制副本都在哪些消息服务器上等信息。
需要说明的是,第一消息请求是由业务环境为目标环境的请求方发送的,该请求方可以是生产者/消费者对应的后台业务服务器。目标环境与目标端口一一对应,也就是说,代理服务器上的目标端口仅用于获取来自目标环境的第一消息请求,但是需要说明的是,第一消息请求中并不携带目标环境的环境标识。
具体的实施中,为了使得目标环境的第一消息请求都能到达代理服务器的目标端口,在目标环境的请求方发送上述第一消息请求之前需要先将目标端口的目标端口地址作为目的地址返回给目标环境的请求方,以使得目标环境中的请求方基于该目标端口地址来发送第一消息请求,从而可以使得目标环境的第一消息请求都能到达代理服务器的目标端口。
基于此,在一个示例性的实施方式中,如图4所示,在步骤S301基于目标端口获取第一消息请求之前,该方法还可以包括:
S401,基于目标端口获取所述请求方发送给所述消息服务器集群的第二消息请求。
其中,所述第二消息请求的请求类型为元数据请求,即该第二消息请求用于请求消息服务器集群的元数据信息。
正常情况下,代理服务器的目标端口是无法接收到目标环境的请求方发送给消息服务器集群的元数据请求的,因为该元数据请求的目的地址指向的是消息服务器集群。为了使得代理服务器的目标端口能够获取到目标环境的请求方向消息服务器集群的元数据请求,本发明实施例中,预先向目标环境的业务服务器写入了转发规则,该转发规则基于消息服务器集群中消息服务器的服务地址与目标端口地址的对应关系生成,转发规则指示将目的地址为上述服务地址的请求转发到目标端口地址。因此,在上述步骤S401实施时,代理服务器可以接收目标环境的请求方基于目标转发规则拦截转发的元数据请求。
其中,目标转发规则是指所述目标环境对应的转发规则集合中,与所述第二消息请求的目的地址相匹配的转发规则;所述转发规则集合中的转发规则基于消息服务器集群中消息服务器的服务地址与目标端口地址的对应关系生成。关于转发规则的生成以及写入到业务服务器将在本发明实施例的后续内容中详细说明。
通过业务服务器基于预先写入的转发规则可以实现对发往消息服务器集群的流量的拦截转发,具体的流量拦截转发工具可以为iptables工具,转发规则集合作为iptables的规则列表,当然,还可以采用其他有效的流量拦截转发工具,例如Envoy工具或者在代码层中转流量等同类型的拦截转发工具。
S403,对所述第二消息请求中关联目标主题标识的第二字段内容添加目标环境标识,得到目标第二消息请求。
其中,目标主题标识是指第一消息请求的消息主题所对应的标识,第一消息请求之前的元数据请求的消息主题包括该第一消息请求的消息主题。
具体的实施中,可以基于协议格式(如Kafka协议格式)对第二消息请求进行反序列化处理得到对应的请求包头和请求包体,然后对请求包体内所有涉及到目标主题标识的字段内容添加目标环境标识。其中,目标环境标识为基于环境端口映射信息确定的目标端口对应的环境标识,该环境端口映射信息表征环境标识与端口地址之间的对应关系,该端口地址包括目标端口对应的目标端口地址,环境标识包括目标环境的目标环境标识。
S405,将所述目标第二消息请求发送给所述消息服务器集群,获取所述消息服务器集群返回的元数据信息。
其中,所述元数据信息包括所述消息服务器集群中对应目标主题环境标识的消息服务器的地址信息,其中,目标主题环境标识包括目标环境标识和目标主题标识,例如可以表示为test-topic-dev1。也就是说,元数据信息指示出消息服务器集群中哪些消息服务器用于处理目标主题环境标识对应的消息请求。
具体的实施中,可以对目标第二消息请求先进行序列化处理,然后将序列化处理后的目标第二消息请求发送给消息服务器集群。
S407,基于所述对应目标主题环境标识的消息服务器的地址信息,生成目标服务地址映射信息。
其中,目标服务地址映射信息表征目标主题环境标识与其对应的消息服务器的地址信息之间的对应关系,例如目标主题环境标识为test-topic-dev1,则目标服务地址映射信息可以表示为test-topic-dev1=>1.1.1.1:9092。
可以理解的是,目标服务地址映射信息的表示形式并不限于以上,还可以包括对应的消息服务器的服务器标识,以Kafka集群为例,目标服务地址映射信息可以为test-topic-dev1=>1=>1.1.1.1:9092,其中,1为对应的Broker ID,1.1.1.1:9092为Broker主机地址。
具体的实施中,在获取到消息服务器集群返回的元数据信息后,可以对该元数据信息进行反序列化处理得到返回包头和返回包体,然后缓存返回包体内的Broker ID与Broker主机地址的对应关系,如1=>1.1.1.1:9092,并进一步缓存目标主题环境标识与Broker ID的对应关系,从而得到目标服务地址映射信息。
需要说明的是,代理服务器的缓存中存储有服务地址映射信息,该服务地址映射信息包括上述目标服务地址映射信息。服务地址映射信息表征主题环境标识与服务地址之间的对应关系,主题环境标识包括主题标识和环境标识,该主题环境标识包括上述目标主题环境标识,服务地址包括目标服务地址映射信息中的地址信息。
S409,将所述元数据信息中所述消息服务器的地址信息,替换为所述目标端口的目标端口地址,并删除所述元数据信息中的目标环境标识得到目标元数据信息。
例如将元数据信息中原主机地址1.1.1.1:9092修改为目标端口地址2.2.2.2:10000。
S411,将所述目标元数据信息返回给所述请求方,以使得所述请求方基于所述目标元数据信息中的所述目标端口地址向所述目标端口发送所述第一消息请求。
具体的实施中,可以先将目标元数据信息进行序列化处理,然后将序列化处理后的目标元数据信息返回给目标环境的请求方。
上述实施例中,通过拦截目标环境的元数据请求至代理服务器的目标端口,并修改元数据请求对应返回包中原主机地址为目标端口的目标端口地址,从而可使得请求方后续以该目标端口地址作为目的地址发送第一消息请求,进而实现将目标环境中的第一消息请求拦截至代理服务器的目标端口上。
S303,对所述第一消息请求中关联目标主题标识的第一字段内容添加目标环境标识,得到目标第一消息请求。
具体的,第一消息请求的目的地址为目标端口地址,基于该目标端口地址可以查找环境端口映射信息中与该目标端口地址相匹配的环境标识得到目标环境标识,该目标环境标识对应的目标环境为请求方的业务环境,关于环境端口映射信息的生成将在后续说明。
实际应用中,可以先对第一消息请求进行反序列化处理,然后确定反序列化处理后的第一消息请求中关联目标主题标识的第一字段内容,进而对该第一字段内容添加查找到的目标环境标识。例如,第一字段内容包括test-topic,那么test-topic即为目标主题标识,假设目标环境标识为dev1,则添加后的第一字段内容包括test-topic-dev1。
S305,基于所述目标主题标识和所述目标环境标识,确定服务地址映射信息中相匹配的目标服务地址映射信息。
由本发明实施例的前述描述可知,代理服务器在获取到请求方的第一消息请求时已经基于对该请求方的元数据请求的拦截缓存了目标服务地址映射信息,因此,代理服务器在添加目标环境标识后,可以基于添加后的第一字段内容得到目标主题环境标识(例如test-topic-dev1),然后基于该目标主题环境标识查找代理服务器缓存中与之相匹配的服务地址映射信息即为目标服务地址映射信息。
S307,基于所述目标服务地址映射信息中的目标服务地址发送所述目标第一消息请求,获取针对所述目标第一消息请求返回的消息数据。
例如目标服务地址映射信息为test-topic-dev1=>1=>1.1.1.1:9092,则目标服务地址为1.1.1.1:9092,从而可以将目标第一消息请求发送至主机地址为1.1.1.1:9092的消息服务器。
实际应用中,在基于所述目标服务地址映射信息中的目标服务地址发送所述目标第一消息请求时,需要对目标第一消息请求进行序列化处理,然后基于目标服务地址映射信息中的目标服务地址发送序列化处理后的目标第一消息请求。
S309,删除所述消息数据中的所述目标环境标识得到目标消息数据,将所述目标消息数据返回给所述第一消息请求的请求方。
由于目标第一消息请求中以目标主题环境标识来标识其对应的主题,那么消息服务器集群返回的消息数据也是以该目标主题环境标识来标识主题的,而请求方发出的第一消息请求中标识主题的信息中并不含环境标识,为了避免消息异常,在将消息数据返回给请求方之前需要删除该消息数据中的目标环境标识得到目标消息数据,从而该目标消息数据中标识主题的信息仅为目标主题标识,将该目标消息数据返回给第一消息请求的请求方确保了消息交互的正常。
实际应用中,在删除所述消息数据中的所述目标环境标识得到目标消息数据,将所述目标消息数据返回给所述第一消息请求的请求方时,需要对所述消息数据进行反序列化处理,删除反序列化处理后的消息数据中的所述目标环境标识得到目标消息数据;然后,对所述目标消息数据进行序列化处理,将序列化处理后的目标消息数据返回给所述第一消息请求的请求方。
由本发明实施例的上述技术方案可见,本发明实施例中业务服务器不直接与消息服务器实例交互,或者说是客户端不直接与消息服务器实例交互,而是通过将业务服务器和消息服务器集群交互的流量转发到代理服务器后,代理服务器在Topic信息内增加环境标识后与消息服务器实例进行交互,由于不同业务环境的环境标识不同,从而来自不同环境的消息请求中标识主题的信息不同,在不入侵业务代码的情况下保证了不同环境的客户端与消息服务器集群之间交互的主题不同,达到环境隔离的效果。
举例而言,假设当前业务开发测试过程中需要使用N个环境,每个环境需要6台设备(3台Kafka Broker+3台Zookeeper),那么图1a的现有技术方案做到Kafka多环境隔离需要设备为:6*N台设备,而本发明实施例的技术方案需要的设备为:1台+6台设备,其中1台为代理需要的设备。可见若业务开发测试过程中需要的环境大于1,则本发明实施例可以减少6*N-7台设备,大大减少了资源消耗。
在一个示例性的实施方式中,本发明实施例还包括代理服务器中绑定目标环境的目标端口的激活步骤,在该激活过程中可以生成环境端口映射信息以及转发规则。具体的,如图5提供的代理端口激活过程的流程示意图,可以包括:
S501,响应于代理激活请求,从处于空闲状态的端口中选取目标端口,调整所述目标端口为处于工作状态并获取所述目标端口的目标端口地址。
其中,所述代理激活请求包括目标环境的目标环境标识以及服务地址,该服务地址,该服务地址为第一消息请求的目的地址,其可以为从消息服务器集群中选取的任一消息服务器的地址信息。
具体的实施中,代理激活请求中的目标环境标识和服务地址为通过交互界面输入的信息,例如输入的目标环境标识可以是Dev1,输入的服务地址可以为1.1.1.1:9092(即消息服务器集群中消息服务器的地址信息),当完成上述输入后可以通过上述交互界面发出代理激活指令,进而代理服务器接收到基于该代理激活指令生成的代理激活请求。
代理服务器中端口的状态包括空闲状态和工作状态,其中,工作状态是指已经确定了对应的环境标识的端口状态,也即工作状态的端口处于接收来自其对应环境中消息请求的状态,空闲状态是指还未确定对应环境标识的端口状态。
在一个示例中,在将目标端口调整为处于工作状态后,代理服务器可以建立该目标端口与消息服务器集群之间的通信连接,以避免在后续交互时再进行连接,有利于提高交互效率。
在一个示例性的实施方式中,上述步骤S501响应于代理激活请求,从处于空闲状态的端口中选取目标端口可以包括:
响应于代理激活请求,向处于空闲状态的端口依次发送检测请求;
当接收到任一所述空闲状态的端口返回的响应信息时,将所述任一空闲状态的端口确定为目标端口。
具体的,代理服务器可以响应于代理激活请求,确定当前处于空闲状态的端口,然后通过轮询的方式向这些端口依次发送检测请求,该检测请求用于请求允许对相应端口进行检测,通常若端口允许检测则会返回一个响应信息,若端口不允许检测则不会返回任何信息,因此若在轮询过程中接收到任一空闲状态的端口返回的响应信息,则将返回响应信息的该端口确定为目标端口。通过这种方式可以快速的从空闲状态的端口中确定出目标端口。
S503,根据所述服务地址与所述目标端口地址,生成对应所述目标环境标识的转发规则,将所述转发规则写入所述请求方的所述转发规则集合。
例如,输入的服务地址为1.1.1.1:9092,输入的目标环境标识为Dev1,目标端口的目标端口地址为2.2.2.2:10000,则生成对应Dev1的转发规则为1.1.1.1:9092=>2.2.2.2:10000,并将该转发规则写入到Dev1对应目标环境的请求方(即业务服务器)的转发规则集合,其中,请求方的转发规则集合对应了其上运行的流量拦截工具(如iptables),从而流量拦截工具在进行流量拦截时可以从转发规则集合中匹配对应当前流量的目标转发规则,进而基于该目标转发规则对当前流量进行转发。
S505,根据所述目标环境标识与所述目标端口地址之间的对应关系,生成所述环境端口映射信息。
具体的,环境端口映射信息表征环境标识与端口地址之间的对应关系,环境端口映射信息包括目标映射信息,该目标映射信息指示目标环境标识与目标端口地址的对应关系。代理服务器可以缓存生成的环境端口映射信息。
上述实施例中,通过代理激活请求中的环境标识和服务地址,可以动态、灵活的激活代理服务器上的端口并生成转发规则和环境端口映射信息,从而可以灵活的调整隔离的环境,有利于提高后续消息请求处理的灵活性。
在另一个示例性的实施方式中,为了进一步提高对于隔离环境的调整,请继续参阅图5,该方法还可以包括关闭代理端口的步骤,具体包括:
S507,响应于代理关闭请求,根据所述代理关闭请求中的目标环境标识,确定所述环境端口映射信息中相匹配的目标映射信息。
其中,所述目标映射信息指示所述目标环境标识与目标端口地址的对应关系。
具体的实施中,代理关闭请求中的目标环境标识和服务地址为通过交互界面输入的信息,例如输入的目标环境标识可以是Dev1,输入的服务地址可以为1.1.1.1:9092(即消息服务器集群中消息服务器的地址信息),当完成上述输入后可以通过上述交互界面发出代理关闭指令,进而代理服务器接收到基于该代理关闭指令生成的代理关闭请求。
S509,根据所述代理关闭请求中的服务地址和所述目标端口地址,将对应的转发规则从所述请求方的所述转发规则集合中删除。
S511,调整所述目标端口地址对应的目标端口为处于空闲状态,删除所述目标映射信息。
可以理解的,本发明实施例通过代理激活和代理关闭可以实现对隔离环境的动态调整,提高了消息请求处理的灵活性。业务代码仅需要维护业务自身需要使用的Kafka资源;在开发、测试过程中,使用本发明实施例即可动态的更换所需要的环境,从而实现业务代码无感知、无侵入式的同时达到多环境隔离的目的。
以图2b所示应用环境的架构为例,用户可以通过Kafka代理管理模块对应的交互界面输入环境标识(如Dev1)和Kafka的服务地址(如1.1.1.1:9092),该交互界面中设置有代理激活提示和代理关闭提示,当用户操作代理激活提示时即发出代理激活指令从而Kafka代理管理模块接收到基于该代理激活指令产生的代理激活请求,当用户操作代理关闭提示时即发出代理关闭指令从而Kafka代理管理模块接收到基于该代理关闭指令产生的代理关闭请求。
对于代理激活:
Kafka代理管理模块可以检测Kafka代理模块上处于空闲状态的端口,若检测成功则Kafka代理模块返回成功检测的端口(如10000),同时Kafka代理模块会建立端口10000与Kafka集群之间的连接。
Kafka代理管理模块得到返回的端口后,生成转发规则(如1.1.1.1:9092=>2.2.2.2:10000),并写入Dev1环境的业务服务器(即生产者/消费者server Dev1)对应的流量拦截转发工具(如iptables)的转发规则集合中。
Kafka代理模块缓存环境标识与上述返回端口的对应关系(Dev1=>10000)。
对于代理关闭:
Kafka代理管理模块查询缓存的环境标识和端口的对应关系,移除业务服务器在上述激活步骤中生成的流量拦截转发工具(如iptables)对应的转发规则,通知Kafka代理模块关闭对上述查询到的端口的检测,并移除对应环境标识和端口的缓存数据。
与上述几种实施例提供的消息请求处理方法相对应,本发明实施例还提供一种消息请求处理装置,由于本发明实施例提供的消息请求处理装置与上述几种实施例提供的消息请求处理方法相对应,因此前述消息请求处理方法的实施方式也适用于本实施例提供的消息请求处理装置,在本实施例中不再详细描述。
请参阅图6,其所示为本发明实施例提供的一种消息请求处理装置的结构示意图,该消息请求处理装置600具有实现上述方法实施例中消息请求处理方法的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。如图6所示,该消息请求处理装置600可以包括:
第一消息请求获取模块610,用于基于目标端口获取第一消息请求;所述第一消息请求的请求类型为非元数据请求;
第一环境标识添加模块620,用于对所述第一消息请求中关联目标主题标识的第一字段内容添加目标环境标识,得到目标第一消息请求;所述目标环境标识为基于环境端口映射信息确定的所述目标端口对应的环境标识,所述环境端口映射信息表征环境标识与端口地址之间的对应关系;
第一映射信息确定模块630,用于基于所述目标主题标识和所述目标环境标识,确定服务地址映射信息中相匹配的目标服务地址映射信息;所述服务地址映射信息表征主题环境标识与服务地址之间的对应关系,所述主题环境标识包括主题标识和环境标识,所述服务地址为消息服务器集群中消息服务器的地址;
第一发送模块640,用于基于所述目标服务地址映射信息中的目标服务地址发送所述目标第一消息请求,获取针对所述目标第一消息请求返回的消息数据;
第一数据返回模块650,用于删除所述消息数据中的所述目标环境标识得到目标消息数据,将所述目标消息数据返回给所述第一消息请求的请求方;所述请求方的业务环境为所述目标环境标识对应的目标环境。
在一个示例性的实施方式中,所述装置还包括:
第二消息请求获取模块,用于基于目标端口获取所述请求方发送给所述消息服务器集群的第二消息请求;所述第二消息请求的请求类型为元数据请求;
第二环境标识添加模块,用于对所述第二消息请求中关联所述目标主题标识的第二字段内容添加所述目标环境标识,得到目标第二消息请求;
第二发送模块,用于将所述目标第二消息请求发送给所述消息服务器集群,获取所述消息服务器集群返回的元数据信息;所述元数据信息包括所述消息服务器集群中对应目标主题环境标识的消息服务器的地址信息;
服务地址映射信息生成模块,用于基于所述对应目标主题环境标识的消息服务器的地址信息,生成所述目标服务地址映射信息;
元数据处理模块,用于将所述元数据信息中所述消息服务器的地址信息,替换为所述目标端口的目标端口地址,并删除所述元数据信息中的所述目标环境标识得到目标元数据信息;
第二数据返回模块,用于将所述目标元数据信息返回给所述请求方,以使得所述请求方基于所述目标元数据信息中的所述端口地址向所述目标端口发送所述第一消息请求。
在一个示例性的实施方式中,所述第二消息请求获取模块,具体用于接收所述请求方基于目标转发规则拦截转发的所述第二消息请求;
其中,所述目标转发规则是指所述目标环境对应的转发规则集合中,与所述第二消息请求的目的地址相匹配的转发规则;所述转发规则集合中的转发规则基于所述服务地址与所述目标端口地址的对应关系生成。
在一个示例性的实施方式中,所述装置还包括:
代理激活模块,用于响应于代理激活请求,从处于空闲状态的端口中选取目标端口,调整所述目标端口为处于工作状态并获取所述目标端口的目标端口地址;所述代理激活请求包括所述目标环境标识和所述服务地址;
转发规则生成写入模块,用于根据所述服务地址与所述目标端口地址,生成对应所述目标环境标识的转发规则,将所述转发规则写入所述请求方的所述转发规则集合;
环境端口映射信息生成模块,用于根据所述目标环境标识与所述目标端口地址之间的对应关系,生成所述环境端口映射信息。
在一个示例性的实施方式中,所述装置还包括:
代理关闭模块,用于响应于代理关闭请求,根据所述代理关闭请求中的目标环境标识,确定所述环境端口映射信息中相匹配的目标映射信息;所述目标映射信息指示所述目标环境标识与目标端口地址的对应关系;
转发规则删除模块,用于根据所述代理关闭请求中的服务地址和所述目标端口地址,将对应的转发规则从所述请求方的所述转发规则集合中删除;
端口映射信息调整模块,用于调整所述目标端口地址对应的目标端口为处于空闲状态,删除所述目标映射信息。
在一个示例性的实施方式中,所述代理激活模块包括:
轮询模块,用于响应于代理激活请求,向处于空闲状态的端口依次发送检测请求;
目标端口确定模块,用于当接收到任一所述空闲状态的端口返回的响应信息时,将所述任一空闲状态的端口确定为目标端口。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本发明实施例还提供了另一种消息请求处理装置,如图2a所示包括业务服务器、代理服务器和消息服务器集群,其中:
业务服务器,用于向代理服务器的目标端口发送第一消息请求;所述第一消息请求的请求类型为非元数据请求;
代理服务器,用于对所述第一消息请求中关联目标主题标识的第一字段内容添加目标环境标识得到目标第一消息请求;基于所述目标主题标识和所述目标环境标识,确定服务地址映射信息中相匹配的目标服务地址映射信息;基于所述目标服务地址映射信息中的目标服务地址向消息服务器集群发送所述目标第一消息请求;其中,所述目标环境标识为基于环境端口映射信息确定的所述目标端口对应的环境标识,所述环境端口映射信息表征环境标识与端口地址之间的对应关系;所述服务地址映射信息表征主题环境标识与服务地址之间的对应关系,所述主题环境标识包括主题标识和环境标识,所述服务地址为消息服务器集群中消息服务器的地址;
消息服务器集群,用于针对所述目标第一消息请求向所述代理服务器返回消息数据;
所述代理服务器,还用于获取所述消息数据;删除所述消息数据中的所述目标环境标识得到目标消息数据,将所述目标消息数据返回给所述业务服务器。
其中,业务服务器的业务环境为目标环境标识对应的目标环境。
在一个示例性的实施方式中,所述业务服务器在向代理服务器的目标端口发送第一消息请求之前,还用于基于目标转发规则拦截向所述消息服务器集群发送第二消息请求,将所述第二消息请求转发给所述代理服务器的目标端口;所述第二消息请求的请求类型为元数据请求;其中,所述目标转发规则是指所述目标环境对应的转发规则集合中,与所述第二消息请求的目的地址相匹配的转发规则,所述转发规则集合中的转发规则基于所述服务地址与所述目标端口地址的对应关系生成;
所述代理服务器,还用于基于所述目标端口获取所述第二消息请求,对所述第二消息请求中关联所述目标主题标识的第二字段内容添加所述目标环境标识得到目标第二消息请求;将所述目标第二消息请求发送给所述消息服务器集群,获取所述消息服务器集群返回的元数据信息,所述元数据信息包括所述消息服务器集群中对应目标主题环境标识的消息服务器的地址信息;基于所述对应目标主题环境标识的消息服务器的地址信息,生成所述目标服务地址映射信息;将所述元数据信息中所述消息服务器的地址信息,替换为所述目标端口的目标端口地址,并删除所述元数据信息中的所述目标环境标识得到目标元数据信息;将所述目标元数据信息返回给所述业务服务器。
在一个示例性的实施方式中,所述代理服务器,还用于响应于代理激活请求,从处于空闲状态的端口中选取目标端口,调整所述目标端口为处于工作状态并获取所述目标端口的目标端口地址;所述代理激活请求包括所述目标环境标识和所述服务地址;根据所述服务地址与所述目标端口地址,生成对应所述目标环境标识的转发规则,将所述转发规则写入所述业务服务器的转发规则集合;根据所述目标环境标识与所述目标端口地址之间的对应关系,生成所述环境端口映射信息。
在一个示例性的实施方式中,所述代理服务器,还用于响应于代理关闭请求,根据所述代理关闭请求中的目标环境标识,确定所述环境端口映射信息中相匹配的目标映射信息;所述目标映射信息指示所述目标环境标识与目标端口地址的对应关系;根据所述代理关闭请求中的服务地址和所述目标端口地址,将对应的转发规则从所述业务服务器的所述转发规则集合中删除;调整所述目标端口地址对应的目标端口为处于空闲状态,删除所述目标映射信息。
本发明实施例提供了一种电子设备,该电子设备包括处理器和存储器,该存储器中存储有至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的消息请求处理方法。
存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及消息请求处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
本发明实施例所提供的方法实施例可以在计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图7是本发明实施例提供的运行一种消息请求处理方法的服务器的硬件结构框图,如图7所示,该服务器700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,CPU)710(处理器710可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器730,一个或一个以上存储应用程序723或数据722的存储介质720(例如一个或一个以上海量存储设备)。其中,存储器730和存储介质720可以是短暂存储或持久存储。存储在存储介质720的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器710可以设置为与存储介质720通信,在服务器700上执行存储介质720中的一系列指令操作。服务器700还可以包括一个或一个以上电源760,一个或一个以上有线或无线网络接口750,一个或一个以上输入输出接口740,和/或,一个或一个以上操作系统721,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
输入输出接口740可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器700的通信供应商提供的无线网络。在一个实例中,输入输出接口740包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口740可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
本领域普通技术人员可以理解,图7所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器700还可包括比图7中所示更多或者更少的组件,或者具有与图7所示不同的配置。
本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质可设置于电子设备之中以保存用于实现一种消息请求处理方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的消息请求处理方法。
本发明的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行上述的消息请求处理方法。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (14)

1.一种消息请求处理方法,其特征在于,所述方法包括:
基于目标端口获取第一消息请求;所述第一消息请求的请求类型为非元数据请求;
对所述第一消息请求中关联目标主题标识的第一字段内容添加目标环境标识,得到目标第一消息请求;所述目标环境标识为基于环境端口映射信息确定的所述目标端口对应的环境标识,所述环境端口映射信息表征环境标识与端口地址之间的对应关系;
基于所述目标主题标识和所述目标环境标识,确定服务地址映射信息中相匹配的目标服务地址映射信息;所述服务地址映射信息表征主题环境标识与服务地址之间的对应关系,所述主题环境标识包括主题标识和环境标识,所述服务地址为消息服务器集群中消息服务器的地址;
基于所述目标服务地址映射信息中的目标服务地址发送所述目标第一消息请求,获取针对所述目标第一消息请求返回的消息数据;
删除所述消息数据中的所述目标环境标识得到目标消息数据,将所述目标消息数据返回给所述第一消息请求的请求方;所述请求方的业务环境为所述目标环境标识对应的目标环境。
2.根据权利要求1所述的消息请求处理方法,其特征在于,在所述基于目标端口获取第一消息请求之前,所述方法还包括:
基于目标端口获取所述请求方发送给所述消息服务器集群的第二消息请求;所述第二消息请求的请求类型为元数据请求;
对所述第二消息请求中关联所述目标主题标识的第二字段内容添加所述目标环境标识,得到目标第二消息请求;
将所述目标第二消息请求发送给所述消息服务器集群,获取所述消息服务器集群返回的元数据信息;所述元数据信息包括所述消息服务器集群中对应目标主题环境标识的消息服务器的地址信息;
基于所述对应目标主题环境标识的消息服务器的地址信息,生成所述目标服务地址映射信息;
将所述元数据信息中所述消息服务器的地址信息,替换为所述目标端口的目标端口地址,并删除所述元数据信息中的所述目标环境标识得到目标元数据信息;
将所述目标元数据信息返回给所述请求方,以使得所述请求方基于所述目标元数据信息中的所述目标端口地址向所述目标端口发送所述第一消息请求。
3.根据权利要求2所述的消息请求处理方法,其特征在于,所述基于目标端口获取所述请求方发送给所述消息服务器集群的第二消息请求包括:
接收所述请求方基于目标转发规则拦截转发的所述第二消息请求;
其中,所述目标转发规则是指所述目标环境对应的转发规则集合中,与所述第二消息请求的目的地址相匹配的转发规则;所述转发规则集合中的转发规则基于所述服务地址与所述目标端口地址的对应关系生成。
4.根据权利要求3所述的消息请求处理方法,其特征在于,所述方法还包括:
响应于代理激活请求,从处于空闲状态的端口中选取目标端口,调整所述目标端口为处于工作状态并获取所述目标端口的目标端口地址;所述代理激活请求包括所述目标环境标识和所述服务地址;
根据所述服务地址与所述目标端口地址,生成对应所述目标环境标识的转发规则,将所述转发规则写入所述请求方的所述转发规则集合;
根据所述目标环境标识与所述目标端口地址之间的对应关系,生成所述环境端口映射信息。
5.根据权利要求4所述的消息请求处理方法,其特征在于,所述方法还包括:
响应于代理关闭请求,根据所述代理关闭请求中的目标环境标识,确定所述环境端口映射信息中相匹配的目标映射信息;所述目标映射信息指示所述目标环境标识与目标端口地址的对应关系;
根据所述代理关闭请求中的服务地址和所述目标端口地址,将对应的转发规则从所述请求方的所述转发规则集合中删除;
调整所述目标端口地址对应的目标端口为处于空闲状态,删除所述目标映射信息。
6.根据权利要求4所述的消息请求处理方法,其特征在于,所述响应于代理激活请求,从处于空闲状态的端口中选取目标端口包括:
响应于代理激活请求,向处于空闲状态的端口依次发送检测请求;
当接收到任一所述空闲状态的端口返回的响应信息时,将所述任一空闲状态的端口确定为目标端口。
7.一种消息请求处理装置,其特征在于,所述装置包括:
第一消息请求获取模块,用于基于目标端口获取第一消息请求;所述第一消息请求的请求类型为非元数据请求;
第一环境标识添加模块,用于对所述第一消息请求中关联目标主题标识的第一字段内容添加目标环境标识,得到目标第一消息请求;所述目标环境标识为基于环境端口映射信息确定的所述目标端口对应的环境标识,所述环境端口映射信息表征环境标识与端口地址之间的对应关系;
第一映射信息确定模块,用于基于所述目标主题标识和所述目标环境标识,确定服务地址映射信息中相匹配的目标服务地址映射信息;所述服务地址映射信息表征主题环境标识与服务地址之间的对应关系,所述主题环境标识包括主题标识和环境标识,所述服务地址为消息服务器集群中消息服务器的地址;
第一发送模块,用于基于所述目标服务地址映射信息中的目标服务地址发送所述目标第一消息请求,获取针对所述目标第一消息请求返回的消息数据;
第一数据返回模块,用于删除所述消息数据中的所述目标环境标识得到目标消息数据,将所述目标消息数据返回给所述第一消息请求的请求方;所述请求方的业务环境为所述目标环境标识对应的目标环境。
8.一种消息请求处理装置,其特征在于,所述装置包括:
业务服务器,用于向代理服务器的目标端口发送第一消息请求;所述第一消息请求的请求类型为非元数据请求;
代理服务器,用于对所述第一消息请求中关联目标主题标识的第一字段内容添加目标环境标识得到目标第一消息请求;基于所述目标主题标识和所述目标环境标识,确定服务地址映射信息中相匹配的目标服务地址映射信息;基于所述目标服务地址映射信息中的目标服务地址向消息服务器集群发送所述目标第一消息请求;其中,所述目标环境标识为基于环境端口映射信息确定的所述目标端口对应的环境标识,所述环境端口映射信息表征环境标识与端口地址之间的对应关系;所述服务地址映射信息表征主题环境标识与服务地址之间的对应关系,所述主题环境标识包括主题标识和环境标识,所述服务地址为消息服务器集群中消息服务器的地址;
消息服务器集群,用于针对所述目标第一消息请求向所述代理服务器返回消息数据;
所述代理服务器,还用于获取所述消息数据;删除所述消息数据中的所述目标环境标识得到目标消息数据,将所述目标消息数据返回给所述业务服务器。
9.根据权利要求8所述的消息请求处理装置,其特征在于,所述业务服务器在向代理服务器的目标端口发送第一消息请求之前,还用于基于目标转发规则拦截向所述消息服务器集群发送第二消息请求,将所述第二消息请求转发给所述代理服务器的目标端口;所述第二消息请求的请求类型为元数据请求;
所述代理服务器,还用于基于所述目标端口获取所述第二消息请求,对所述第二消息请求中关联所述目标主题标识的第二字段内容添加所述目标环境标识得到目标第二消息请求;将所述目标第二消息请求发送给所述消息服务器集群,获取所述消息服务器集群返回的元数据信息,所述元数据信息包括所述消息服务器集群中对应目标主题环境标识的消息服务器的地址信息;基于所述对应目标主题环境标识的消息服务器的地址信息,生成所述目标服务地址映射信息;将所述元数据信息中所述消息服务器的地址信息,替换为所述目标端口的目标端口地址,并删除所述元数据信息中的所述目标环境标识得到目标元数据信息;将所述目标元数据信息返回给所述业务服务器。
10.根据权利要求9所述的消息请求处理装置,其特征在于,所述代理服务器,还用于响应于代理激活请求,从处于空闲状态的端口中选取目标端口,调整所述目标端口为处于工作状态并获取所述目标端口的目标端口地址;所述代理激活请求包括所述目标环境标识和所述服务地址;根据所述服务地址与所述目标端口地址,生成对应所述目标环境标识的转发规则,将所述转发规则写入所述业务服务器的转发规则集合;根据所述目标环境标识与所述目标端口地址之间的对应关系,生成所述环境端口映射信息。
11.根据权利要求10所述的消息请求处理装置,其特征在于,所述代理服务器,还用于响应于代理关闭请求,根据所述代理关闭请求中的目标环境标识,确定所述环境端口映射信息中相匹配的目标映射信息;所述目标映射信息指示所述目标环境标识与目标端口地址的对应关系;根据所述代理关闭请求中的服务地址和所述目标端口地址,将对应的转发规则从所述业务服务器的所述转发规则集合中删除;调整所述目标端口地址对应的目标端口为处于空闲状态,删除所述目标映射信息。
12.一种电子设备,其特征在于,包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如权利要求1~6中任一项所述的消息请求处理方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1~6任一项所述的消息请求处理方法。
14.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1~6中任一项所述的消息请求处理方法。
CN202210271272.XA 2022-03-18 2022-03-18 一种消息请求处理方法、装置、电子设备及存储介质 Pending CN116805946A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210271272.XA CN116805946A (zh) 2022-03-18 2022-03-18 一种消息请求处理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210271272.XA CN116805946A (zh) 2022-03-18 2022-03-18 一种消息请求处理方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN116805946A true CN116805946A (zh) 2023-09-26

Family

ID=88079879

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210271272.XA Pending CN116805946A (zh) 2022-03-18 2022-03-18 一种消息请求处理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116805946A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117176840A (zh) * 2023-11-02 2023-12-05 成都汉度科技有限公司 一种通信协议辨识方法及系统
CN117319481A (zh) * 2023-11-29 2023-12-29 长沙普洛电气设备有限公司 端口资源反向代理方法、系统及存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117176840A (zh) * 2023-11-02 2023-12-05 成都汉度科技有限公司 一种通信协议辨识方法及系统
CN117176840B (zh) * 2023-11-02 2024-03-12 成都汉度科技有限公司 一种通信协议辨识方法及系统
CN117319481A (zh) * 2023-11-29 2023-12-29 长沙普洛电气设备有限公司 端口资源反向代理方法、系统及存储介质
CN117319481B (zh) * 2023-11-29 2024-02-27 长沙普洛电气设备有限公司 端口资源反向代理方法、系统及存储介质

Similar Documents

Publication Publication Date Title
US11762703B2 (en) Multi-region request-driven code execution system
CN109104467B (zh) 开发环境构建方法、装置以及平台系统和存储介质
US10372499B1 (en) Efficient region selection system for executing request-driven code
KR20190082926A (ko) 메시징 프로토콜 통신 관리
CN113296792B (zh) 存储方法、装置、设备、存储介质和系统
US10318347B1 (en) Virtualized tasks in an on-demand network code execution system
CN109213571B (zh) 一种内存共享方法、容器管理平台及计算机可读存储介质
CN116805946A (zh) 一种消息请求处理方法、装置、电子设备及存储介质
US7818752B2 (en) Interface for application components
CN109451014B (zh) 一种WebService代理系统及其透明代理方法
CN113326155A (zh) 一种信息处理方法、装置、系统和存储介质
US20210203714A1 (en) System and method for identifying capabilities and limitations of an orchestration based application integration
CN109446062B (zh) 云计算服务中的软件调试的方法和装置
CN110677475A (zh) 一种微服务处理方法、装置、设备及存储介质
CN115086166B (zh) 计算系统、容器网络配置方法及存储介质
CN113268308B (zh) 信息处理方法、装置以及存储介质
CN114706690A (zh) 一种Kubernetes容器共享GPU方法及系统
CN111582824A (zh) 云资源同步方法、装置、设备及存储介质
US20240118935A1 (en) Pod deployment method and apparatus
CN116800616B (zh) 虚拟化网络设备的管理方法及相关装置
EP3672203A1 (en) Distribution method for distributed data computing, device, server and storage medium
CN114615268B (zh) 基于Kubernetes集群的服务网络、监控节点、容器节点及设备
CN114979286A (zh) 容器服务的访问控制方法、装置、设备及计算机存储介质
CN116954810A (zh) 容器应用实例的创建方法、系统、存储介质及程序产品
Satoh 5G-enabled edge computing for MapReduce-based data pre-processing

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