CN118282974A - 泳道架构系统和消息消费方法、设备、介质、程序产品 - Google Patents
泳道架构系统和消息消费方法、设备、介质、程序产品Info
- Publication number
- CN118282974A CN118282974A CN202211708843.8A CN202211708843A CN118282974A CN 118282974 A CN118282974 A CN 118282974A CN 202211708843 A CN202211708843 A CN 202211708843A CN 118282974 A CN118282974 A CN 118282974A
- Authority
- CN
- China
- Prior art keywords
- message
- lane
- consumer
- environment
- basic
- 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 47
- 238000011144 upstream manufacturing Methods 0.000 claims abstract description 20
- 238000001914 filtration Methods 0.000 claims abstract description 19
- 230000007613 environmental effect Effects 0.000 claims description 11
- 238000003860 storage Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 abstract description 6
- 238000012360 testing method Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 101100478633 Escherichia coli O157:H7 stcE gene Proteins 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006378 damage Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 101150115529 tagA gene Proteins 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000004043 dyeing Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Abstract
本发明涉及计算机数据处理领域,特别涉及一种消息队列的消息消费方法,该方法包括接收消息,接收来自泳道环境系统的透传消息和来自所述基础环境系统对应的上游服务的消息,将所述消息发送至消费主题Topic;消费消息,基于泳道消费者的存在情况过滤消息,消费基础消息和带有泳道标识的消息。本发明还涉及一种通用消息队列泳道架构系统和消息消费方法、设备、介质、程序产品。本发明为通用解决方案,是下沉在独立组件解决的,包括不限于RocketMQ、Kafka、Pulsar、RabbitMQ等常见MQ产品,只要消息支持设置属性,即可用本方案解决。
Description
技术领域
本发明涉及计算机数据处理领域,特别涉及一种通用消息队列泳道架构系统和消息消费方法、设备、介质和程序产品。
背景技术
多个功能服务同步开发过程中,往往测试环境是共用的,需要协商测试时段,进而阻塞进展;微服务框架下,服务链路上的模块数量较多,往往希望将不同的服务功能进行拆分测试,同时部署到测试环境以供上下游其他服务联调使用;QA测试时,有时需要多个服务联调测试,或测试同一个服务的多个演进版本。
以上有关测试环境的痛点问题可以通过“泳道”解决,现有技术中,在消息队列场景中常用的泳道架构系统主要是将消息发送至Topic,通过Topic分发消息到消费者实例中进行消费,目前的泳道架构所有环境的消费者实际上是同一个消费者组的不同实例,消息队列的消费规则为,同一消费者组的所有实例,共享消费一份全量数据。因此,在该场景下,存在如下问题:各个不同环境的消费者的消费行为会互相影响,消息进入消息队列消费后,流量中存在的环境信息无法保存,各个环境的消费者无法对应消费自身环境对应的上游消息。
发明内容
本发明的目的在于提供一种通用消息队列泳道架构系统和消息消费方法、设备、介质、程序产品,本发明通过对消息染色、消息透传、消息过滤,可以解决消费中再生产或再次发送rpc等外部请求时依然保留请求颜色的能力的问题。
本发明的实施方式公开了一种通用消息队列泳道架构系统,所述系统包括:基础环境系统和至少一个泳道环境系统;
其中,所述基础环境系统具有基础生产者组件和基础消费者组件,所述泳道环境系统具有泳道生产者组件和泳道消费者组件,所述基础消费者组件和所述泳道消费者组件分别属于具有不同Group id的消费者组;
所述基础环境系统和所述泳道环境系统共用一个消费主题Topic,所述泳道生产者组件可以调用所述基础生产者组件,所述基础生产者组件和所述泳道生产者组件将产生的消息发送至所述Topic,消息队列Client用于区分所述消费组的Group id,并基于所述消息的标识信息和所述泳道消费者组件的在线情况将所述Topic中的消息分别发送至所述基础消费者组件或所述泳道消费者组件,以使所述基础消费者组件或所述泳道消费者组件消费所述消息;
所述基础消费者组件接收离线的所述泳道消费者组件对应的消息,并保留所述泳道消费者组件对应的消息的所述标识信息。
可选地,所述消息队列包括RocketMQ、Kafka、Pulsar、RabbitMQ等任意支持消息设置属性的消息队列。
可选地,所述消息的标识信息包括所述消息所属的泳道标识和具备消费所述消息权限的消费者组标识。
本发明的实施方式公开了一种消息消费方法,应用于基础环境系统,其特征在于,包括:
接收消息,接收来自泳道环境系统的透传消息和来自所述基础环境系统对应的上游服务的消息,将所述消息发送至消费主题Topic;
消费消息,基于泳道消费者的存在情况过滤消息,消费基础消息和带有泳道标识的消息。
可选地,接收来自所述泳道环境系统的透传消息包括,将所述泳道环境系统对应的上游服务的消息发送至所述基础生产者组件,解析所述泳道环境系统对应的上游服务的消息的环境信息,将带有环境信息的所述消息发送至所述消费主题Topic。
可选地,基于泳道消费者的存在情况过滤消息包括:
拉取所述Topic中的全量消息;
基于所述消息的标识过滤出所述泳道消息,若存在与所述泳道标识匹配的所述泳道消费者,则将具有相同所述泳道标识的消息发送至同一所述泳道消费者组进行消费;
基于所述消息的标识过滤出所述基础消息,若不存在与所述泳道标识匹配的所述泳道消费者,则过滤出所述泳道消息,将所述基础消息和所述泳道消息发送至所述基础环境系统消费者组进行消费。
可选地,对过滤出的所述消息对应的所述泳道消费者组命名,命名规则为personal_(tag)#(group),其中,(group)表示原group名,(tag)表示所述泳道环境系统的环境标识。
本发明的实施方式公开了一种电子设备,其特征在于,所述设备包括处理器和存储有计算机可执行指令的存储器,所述处理器被配置为执行所述指令以实施上述的消息消费方法。
本发明的实施方式公开了一种计算机可读存储介质,其特征在于,其特征在于,所述计算机可读存储介质中存储有至少一条计算机指令,所述至少一条指令由处理器加载并执行,以实现上述的消息消费方法。
本发明的实施方式公开了一种计算机程序产品,所述计算机程序产品包括计算机指令,所述计算机指令被执行时,以实现上述的消息消费方法。
本发明提供了一种通用消息队列泳道架构系统和消息消费方法、设备、介质、程序产品,通过对消息染色、透传、过滤,并结合discovery发现服务及时拉起服务和摧毁服务。
本发明的实施方式与现有技术相比,主要区别及其效果在于:本发明消费中再生产或再次发送rpc等外部请求时依然保留请求颜色的能力;消息被基础环境接管消费后颜色不丢失,如果依然有下游消息发送请求或rpc等外部请求,且下游存在相应的泳道实例,依然能够从基线环境路由回泳道环境;支持消息在泳道环境间进行广播而便于测试,对代码使用者来说不同环境依然填写的是同一个group,实现中会自动修改消费者group名但不根据泳道规则过滤消息,从而实现通过不同的group达到广播的效果,在用户进行多个泳道环境测试时,每个环境均能拿到全量消息进行测试,避免不同环境争抢,对代码使用来说,不同环境依然使用的是相同group名字,代码上是无感知的。
附图说明
图1是根据本发明实施例的一种消息消费方法应用的场景示意图;
图2是根据本发明实施例的一种泳道实现架构系统的流程图;
图3是根据本发明实施例的一种消息消费方法的流程图;
图4是根据本发明实施例的一种通用消息队列泳道架构系统的架构图;
图5是根据本发明实施例的一种电子设备的硬件结构框图。
具体实施方式
下面结合具体实施例和附图对本发明做进一步说明。可以理解的是,此处描述的具体实施例仅仅是为了解释本发明,而非对本发明的限定。此外,为了便于描述,附图中仅示出了与本发明相关的部分而非全部的结构或过程。应注意的是,在本说明书中,相似的标号和字母在下面的附图中表示类似项。
应当理解的是,虽然在本文中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了进行区分,而不能理解为指示或暗示相对重要性。举例来说,在不背离示例性实施例的范围的情况下,第一特征可以被称为第二特征,并且类似地第二特征可以被称为第一特征。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
图1是根据本发明实施例的一种消息消费方法应用的场景示意图。
如图1所示,本发明的应用场景中包括客户端100和服务器200,客户端100和服务器200之间通过有线网络或无线网络的连接来实现通信。
值得注意的是,本领域技术人员能够理解,客户端100可以为一个或多个,客户端100的数量不应该作为本发明的限制条件,客户端100的数量以业务应用场景中的实际需求为准,例如QA测试时,需要多个服务联调测试,或测试同一个服务的多个演进版本,数据源可以来自于不同的客户端100,至少一个客户端100将数据发送至服务测试。客户端100可以是智能手机、平板电脑、笔记本电脑、台式电脑等计算机设备,具备运算能力、输入输出功能及网络连接功能。服务器200可以是单台服务器设备,也可以是服务器集群、云服务器等具备向外提供游戏应用服务的计算机设备。
目前市面上对多个服务测试采用“泳道”构架系统,现有技术中,泳道架构的所有环境的消费者实际上是同一个消费者组的不同实例,消息队列的消费规则为同一消费者组的所有实例,共享消费一份全量数据。因此,各个不同环境的消费者的消费行为会互相影响,消息进入消息队列消费后,流量中存在的环境信息无法保存,各个环境的消费者无法对应消费自身环境对应的上游消息。
针对上述问题,本发明提供一种通用消息队列泳道架构系统和消息消费方法、设备、介质、程序产品,具有消费中再生产或再次发送rpc等外部请求时依然保留请求颜色的能力、消息被基础环境接管消费后颜色不丢失的能力,如果依然有下游消息发送请求或rpc等外部请求,且下游存在相应的泳道实例,依然能够从基线环境路由回泳道环境的能力;支持消息在泳道环境间进行广播而便于测试的能力。
图2是根据本发明实施例的一种泳道实现架构系统的流程图。
如图2所示,泳道实现架构系统由发布系统Ones、控制台Console、发现服务Discovery、MQ元数据库Zookeeper和消息队列服务Events组成。
发布系统Ones用于泳道环境服务的创建和销毁。
控制台Console提供创建topic和group的接口。
发现服务Discovery供消费者客户端调用查看泳道消费者的在线情况。
MQ元数据库Zookeeper供发现服务Discovery发现哪些泳道消费者组在线。
消息队列服务Events可以表示任意的消息队列,包括RocketMQ、Kafka、Pulsar、RabbitMQ等任意支持消息设置属性的消息队列。
Consumer为消费者,消费者会有环境的概念,比如Base环境(基础环境)和Swimlane环境(泳道环境),泳道环境具有环境标签,如果是tagA,就表示这个Consumer在tagA环境,以此类推,因此消费者可以有任意个泳道环境。
通过打通消息队列服务和发布系统,当泳道环境需要发布服务或销毁服务时,发布系统可以通过MQ管理平台及时创建相应的泳道group资源,基于发现服务Discovery发现的泳道服务的在线情况,消费者过滤信息并消费信息。
现有的开源消息队列如Kafka,RocketMQ,Pulsar,RabbitMQ等均不支持泳道能力,目前市面上的方案均针对单一MQ,本发明旨在提供一种异构MQ的通用系统架构。
现有方案一般是通过注册发现的机制或者直接查询group的机制实现,注册和发现机制繁琐,而且还会由于网络抖动造成判断消费者在线与否的错误,从而丢失消息。本发明通过与发布系统Ones联动,解决了该问题。
图3是根据本发明实施例的一种消息消费方法的流程图。
如图3所示,本发明一实施例提供的消息消费方法需要图1中客户端100和服务器200,以及图2的泳道实现架构系统配合实现,用于基础环境系统,该方法包括:
接收消息步骤S100:接收来自泳道环境系统的透传消息和来自基础环境系统对应的上游服务的消息,将消息发送至消费主题Topic。
基础环境系统具有基础生产者组件和基础消费者组件,泳道环境系统具有泳道生产者组件和泳道消费者组件。值得注意的是,本领域技术人员可以理解的是,泳道环境系统的数量可以是一个,也可以是任意多个,一个基础环境系统可以对应任意多个泳道环境系统,同理,泳道生产者组件的数量可以是一个,也可以是任意多个,泳道消费者组件的数量可以是一个,也可以是任意多个。泳道环境系统、泳道生产者、泳道消费者的数量应当以服务场景中的实际需要为准,因此,泳道的数量不应作为本发明的限制条件。
为了实现创建泳道,需要对泳道消息的流量进行标识活动,具体标识规则为:所有的泳道消息都基于其所在的泳道环境信息进行标识,泳道消息对应的泳道环境信息通过容器注入的SERVICE_ENV_TAG环境变量获取,并且,不同的泳道环境的泳道生产者只接收各自泳道环境的上游流量。
此外,值得注意的是,基础环境的基础生产者对于来自基础环境的消息或生产者应用内部产生的消息,基础环境的基础生产者不进行标识活动。
基础环境的基础生产者具有透传环境信息的能力,基础生产者可以接收泳道环境对应的上游服务的流量的环境信息,环境信息通过通过基础生产者组件中的ContextHelper工具获得。
基于泳道环境信息进行标识活动,消息的标识信息包括消息所属的泳道标识和具备消费消息权限的消费者组标识。
为了实现泳道消息的透明传输,对于泳道生产者组件来说,需要为其产生的每条消息附加泳道标识,之后在消费消息时便可基于消息所属的泳道标识确定该条消息应由哪个泳道的泳道消费者组件进行消费。
泳道标识可以以消息元数据的形式附加给消息,作为一种举例,对于kafka消息队列,为了实现对用户透明,泳道标识被附加在消息的消息头header。消息头主要用于保存消息的一些元数据信息,消息体用干保存实际的消息数据。通过将泳道标识附加到消息的消息头,并自动从请求的上下文中获取,从而可保证对用户的代码没有任何侵入。实现对用户诱明。对应的,泳道消费者实例也需要配置有相应的标识,泳道消费者实例的元数据以映射map结构进行存储,其中,键key表示泳道消费者实例所属的泳道标识以及消费者组实例标识,例如group.env,group为消费者组实例名称标识,env为消费者组实例所属的泳道标识;通过这种方式,则针对于同一个消费者组实例名称group,可以支持多种泳道环境,例如group.alpha表示alpha泳道环境的消费者组实例group,group.beta表示alpha泳道环境的消费者组实例group,值value表示泳道消费者实例。
进一步的,消息消费方法还支持指定消费者组,在消息队列的应用场景中,一个Topic可以对应有多个下游消费者组实例,Topic中的一条消息可以被所有的消费者组实例消费,即消费者组可以提取全量Topic消息,如果只是对其中一个消费者组实例的业务逻辑有变更,希望对该消费者组实例变更后的业务逻辑进行测试验证,那么此时可能不希望当前的消息被其它消费者组实例所消费,而是希望被业务逻辑有变更的消费者组实例消费。因此,通过指定消费者组实例可以实现在消息消费时进行动态过滤,达到只有某个或者某些消费者组实例具备消费消息的权限。可选的,指定的具备消费权限的消费者组实例标识也可以在消息生产方产生消息时将其存放在消息的消息头。为了保证对消费者组实例名称也是透明的,线上消费者组实例与泳道消费者组实例使用相同的名称,不需要针对不同环境使用不同的消费者组实例名称,即线上消费者组实例的名称与泳道消费者组实例的名称相同。
一种举例中,上游服务发送五条流量消息,五条消息同属于一个生产者,需要按顺序消费这五条消息,因此,需要给消息设置第一预设标识,以标识这五条消息为同一个消息生产者产生,同时还需要给消费这五条消息的消息消费者设置第二预设标识,以实现这五条消息被同一个消息消费组消费,即第一预设标识相同的消息总是被同一个消息消费方消费。
作为一种实施方式,基础环境系统对应的上游服务发布的流量由基础环境系统中的基础生产者接收,基础生产者将接收到的基础消息发送至消费主题Topic;
一种举例中,基础环境系统对应的上游服务发布了三条流量消息,基础生产者接收三条消息,并不进行对三条消息的标识活动,基础消息不具有标识信息,基础生产者将基础消息直接发送至消费主题Topic。
作为另一种实施方式,基础环境系统中的基础生产者接收来自泳道环境系统对应的上游服务发布的流量,解析泳道消息的环境信息,若泳道信息带有环境信息,则基础生产者将接收到的泳道消息和泳道标识发送至消费主题Topic;
一种举例中,泳道环境系统对应的上游服务发布了三条流量消息,基础生产者接收三条消息,并对三条消息进行解析,通过基础生产者组件中的ContextHelper工具获得三条消息的环境信息,基于环境信息获得的标识信息为三条消息的泳道生产者信息和消费该三条消息的泳道消息消费者信息,基础生产者将三条消息和解析获得的标识信息一起发送至消费主题Topic。
消费消息步骤S200:基于泳道消费者的存在情况过滤消息,消费基础消息和带有泳道标识的消息。
基础消费者组件部署在基础环境系统,泳道消费者组件部署在泳道环境系统,基础环境系统和泳道环境系统共用一个消费主题Topic,基础生产者组件的业务逻辑与泳道生产者组件的业务逻辑不相同,基础生产者组件可以处理透传消息,基础消费者组件和泳道消费者组件的业务逻辑不相同,基础消费者组件可以处理无对应泳道消费者的泳道消息。
过滤消息的规则包括基础环境消费者组件过滤和泳道消费者组件过滤,基础消费者和泳道消费者分属于不同的消费者组;
每个基础消费者都可以全量拉取消费主题Topic中的消息,全量消息包含基础环境的消息和泳道环境的消息,拉取到消息后进行过滤,消费者内部逻辑自动识别当前是否为泳道环境服务,对过滤出的泳道消费者组命名,命名规则为personal_(tag)#(group),其中,(group)表示原group名,(tag)表示泳道环境系统的环境标识。
泳道环境消费者组件过滤规则:拉取Topic中的全量消息后,单独过滤出对应泳道环境的消息,通过解析消息中附带的环境信息,对比本地环境中注入的变量实现。
作为一种实施方式,拉取Topic中的全量消息,基于消息的标识过滤出泳道消息,若存在与泳道标识匹配的泳道消费者,则将具有相同泳道标识的消息发送至同一泳道消费者组进行消费。
一种举例中,泳道消费者组件在拉取到Topic中的全量消息后,基于消息的标识过滤出泳道消息。例如:泳道环境1对应的泳道消费者组件拉取Topic中的全量基础消息和全量泳道消息,包括基础环境的基础消息、泳道环境1的泳道消息、泳道环境2的泳道消息和泳道环境3的泳道消息,则泳道环境1的消费者组件会过滤出泳道环境1的泳道消息,泳道环境1的消费者对泳道环境1的泳道消息进行消费,并且,泳道环境1的消费者不对基础环境的基础消息、泳道环境2的泳道消息和泳道环境3的泳道消息进行消费。
基础环境消费者组件过滤规则:拉取Topic中的全量消息后,基于泳道环境的在线情况进行过滤。
作为另一种实施方式,拉取Topic中的全量消息,基于消息的标识过滤出基础消息,若不存在与泳道标识匹配的泳道消费者,则过滤出泳道消息,将基础消息和泳道消息发送至基础环境系统消费者组进行消费。
一种举例中,基础消费者组件在拉取到Topic中的全量消息后,基于泳道环境中的消费者的在线情况进行过滤,基础消费者组件消费基础消息和离线的泳道环境对应的泳道消息。例如:当前泳道环境1的消费者、泳道环境2的消费者在线,泳道环境3的消费者离线时,则基础环境的消费者组件会过滤出基础环境和泳道环境3的消息,基础消费者对基础环境和泳道环境3的消息进行消费。
基于上述的消息消费方法,消息进入消息队列经过消费者消费后,流量中存在的环境信息可以保存,消息的标识不会丢失,后续如果下游服务请求依然存在相对应的泳道环境,本发明的方法可以将消息路由回泳道环境。
现有技术可以实现泳道生产到消费的能力,然而,实际业务场景中,消费处理逻辑中有可能需要继续往下游服务发送消息或者发送RPC等外部请求,因此,整条泳道链路是不可以断掉的,本发明可以解决消费中再生产或再次发送rpc等外部请求时依然保留请求标识的能力。
为实现该逻辑,引入一个发现服务Discovery,基础环境的消费者会轮询该发现服务,基于发现服务的结果更新泳道环境的消费者的在线情况。
图4是根据本发明实施例的一种通用消息队列泳道架构系统的架构图。
如图4所示,架构系统包括基础环境系统和至少一个泳道环境系统。
值得注意的是,本领域技术人员可以理解,泳道环境系统及其对应的组件的数量至少为一个,一个基础环境系统可以对应任意多个泳道环境系统。泳道环境系统、泳道生产者、泳道消费者的数量应当以服务场景中的实际需要为准,因此,泳道的数量不应作为本发明的限制条件。
基础环境系统具有基础生产者组件和基础消费者组件,泳道环境系统具有泳道生产者组件和泳道消费者组件,基础消费者组件和泳道消费者组件分别属于具有不同Groupid的消费者组;
作为一种实施方式,基础环境系统和泳道环境系统共用一个消费主题Topic,泳道生产者组件可以调用基础生产者组件,基础生产者组件和泳道生产者组件将产生的消息发送至Topic,消息队列Client用于区分消费组的Group id,并基于消息的标识信息和泳道消费者组件的在线情况将Topic中的消息分别发送至基础消费者组件或泳道消费者组件,以使基础消费者组件或泳道消费者组件消费消息;基础消费者组件接收离线的泳道消费者组件对应的消息,并保留泳道消费者组件对应的消息的标识信息。
示例性的,如图4中基础环境系统、泳道环境系统1和泳道环境系统2所示,不同环境的消费者,实际上使用不同的group id,属于不同的消费组,基础消费者组件部署在基础消费者组中,泳道消费者组件1部署在泳道消费者组1中,泳道消费者组件2部署在泳道消费者组2中,每个环境的消费者都可以消费Topic中的全量消息,消息队列Client内部逻辑会在拉取到消息后进行过滤处理,只处理自身需要的消息,group id的区分由消息队列Client内部实现。
示例性的,如图4中基础环境系统和泳道环境系统1所示,基础环境的生产者可以透传泳道环境系统1的消息的环境信息,对从上流获得的流量,如RPC、HTTP等,解析是否带有环境信息,若带有环境信息,则将环境信息向下传递,例如,泳道环境系统1的上游服务调用了基础环境系统的生产者,流量经由基础环境的生产者发送至topic后,依然保存泳道环境系统1的环境信息,进而可以被泳道环境系统1的消费者消费。
示例性的,如图4中基础环境系统和泳道环境系统3所示,基础环境的消费者可以接收泳道环境系统3对应的消息,当泳道环境生产者组件3的生产者存在写入行为但对应的消费者离线时,机场环境的消费者可检测到这一情况并自动接收并消费泳道环境系统3的消息。例如图4中的泳道环境系统3,由于泳道消费者组件3的消费者离线,泳道生产者组件3的生产者写入的消息会由基础环境消费者接管;
为实现这一功能,基础环境的消费者内部逻辑中会与一个发现服务Discoveryservice进行交互,定期轮询当前在线的泳道环境的消费者的信息。
示例性的,如图4中泳道环境系统2所示,当泳道环境的生产者和消费者均存在时,泳道消费者能正确地接收到且仅接收到对应泳道环境的消息。
图5是实施根据本发明实施例的电子设备的硬件结构框图。
如图5所示,电子设备500可以包括一个或多个处理器502、与处理器502中的至少一个连接的系统主板508、与系统主板508连接的系统内存505、与系统主板508连接的非易失性存储器(NVM)506、以及与系统主板508连接的网络接口510。
处理器502可以包括一个或多个单核或多核处理器。处理器502可以包括通用处理器和专用处理器(例如,图形处理器、应用处理器、基带处理器等)的任何组合。在本发明的实施例中,处理器502可以被配置为执行根据如图3所示的消息消费方法。
在一些实施例中,系统主板508可以包括任意合适的接口控制器,以向处理器502中的至少一个和/或与系统主板508通信的任意合适的设备或组件提供任意合适的接口。
在一些实施例中,系统主板508可以包括一个或多个存储器控制器,以提供连接到系统内存505的接口。系统内存505可以用于加载以及存储数据和/或指令。在一些实施例中电子设备500的系统内存505可以包括任意合适的易失性存储器,例如合适的动态随机存取存储器(DRAM)。
NVM 506可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性的计算机可读介质。在一些实施例中,NVM 506可以包括闪存等任意合适的非易失性存储器和/或任意合适的非易失性存储设备,例如HDD(Hard Disk Drive,硬盘驱动器)、CD(CompactDisc,光盘)驱动器、DVD(Digital Versatile Disc,数字通用光盘)驱动器中的至少一个。
NVM 506可以包括安装在电子设备500的装置上的一部分存储资源,或者它可以由设备访问,但不一定是设备的一部分。例如,可以经由网络接口510通过网络访问NVM 506。
特别地,系统内存505和NVM 506可以分别包括:指令520的暂时副本和永久副本。指令520可以包括:由处理器502中的至少一个执行时导致电子设备500实施如图3所示的方法的指令。在一些实施例中,指令520、硬件、固件和/或其软件组件可另外地/替代地置于系统主板508、网络接口510和/或处理器502中。
网络接口510可以包括收发器,用于为电子设备500提供无线电接口,进而通过一个或多个网络与任意其他合适的设备(例如,前端模块、天线等)进行通信。在一些实施例中,网络接口510可以集成于电子设备500的其他组件。例如,网络接口510可以集成于处理器502、系统内存505、NVM 506、和具有指令的固件设备(未示出)中的至少一种,当处理器502中的至少一个执行所述指令时,电子设备500实现图3所示的各种实施例的一个或多个实施例。
网络接口510可以进一步包括任意合适的硬件和/或固件,以提供多输入多输出无线电接口。例如,网络接口510可以是网络适配器、无线网络适配器、电话调制解调器和/或无线调制解调器。
在一个实施例中,处理器502中的至少一个可以与用于系统主板508的一个或多个控制器封装在一起,以形成系统封装(SiP)。在一个实施例中,处理器502中的至少一个可以与用于系统主板508的一个或多个控制器集成在同一管芯上,以形成片上系统(SoC)。
电子设备500可以进一步包括:输入/输出(I/O)设备512,与系统主板508连接。I/O设备512可以包括用户界面,使得用户能够与电子设备500进行交互;外围组件接口的设计使得外围组件也能够与电子设备500交互。在一些实施例中,电子设备500还包括传感器,用于确定与电子设备500相关的环境条件和位置信息的至少一种。
在一些实施例中,I/O设备512可包括但不限于显示器(例如,液晶显示器、触摸屏显示器等)、扬声器、麦克风、一个或多个相机(例如,静止图像照相机和/或摄像机)、手电筒(例如,发光二极管闪光灯)和键盘。
在一些实施例中,外围组件接口可以包括但不限于非易失性存储器端口、音频插孔和电源接口。
可以理解的是,本发明实施例示意的结构并不构成对电子设备500的具体限定。在本申请另一些实施例中,电子设备500可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件、或软件和硬件的组合实现。
可将程序代码应用于输入指令,以执行本发明描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,包括处理器502的用于处理指令的系统包括具有诸如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本发明中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
根据本发明的一个实施例,还提出了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条计算机指令,所述至少一条指令由处理器加载并执行,以实现前述的方法。
根据本发明的一个实施例,还提出了一种计算机程序产品,所述计算机程序产品包括计算机指令,所述计算机指令被执行时,实现前述的消息消费方法。
本发明的说明性实施例包括但不限于一种通用消息队列泳道架构系统和消息消费方法、设备、介质、程序产品。
将使用本领域技术人员通常采用的术语来描述说明性实施例的各个方面,以将他们工作的实质传达给本领域其他技术人员。然而,对于本领域技术人员来说,使用部分所描述的特征来施行一些替代性实施例是显而易见的。出于解释的目的,阐述了具体的数字和配置,以便对说明性实施例进行更加透彻的理解。然而,对于本领域技术人员来说显而易见的是,可以在没有具体细节的情况下实施替代实施例。在一些其他情况下,本文省略或简化了一些众所周知的特征,以避免使本发明的说明性实施例模糊不清。
此外,各种操作将以最有助于理解说明性实施例的方式被描述为多个彼此分离的操作;然而,描述的顺序不应被解释为暗示这些操作必须依赖描述的顺序,其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序也可以被重新安排。当所描述的操作完成时,所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
说明书中对“一种举例”、“举例中”、“一种实施例”、“一种实施方式”等的引用表示所描述的实施例可以包括特定特征、结构或性质,但是每个实施例也可能或不是必需包括特定的特征、结构或性质。而且,这些短语不一定是针对同一实施例。此外,当结合具体实施例描述特定特征,本领域技术人员的知识能够影响到这些特征与其他实施例的结合,无论这些实施例是否被明确描述。
除非上下文另有规定,否则术语“包含”、“具有”和“包括”是同义词。短语“A和/或B”表示“(A)、(B)或(A和B)”。
如本文所使用的,术语“模块”可以指代,作为其中的一部分,或者包括:用于运行一个或多个软件或固件程序的存储器(共享、专用或组)、专用集成电路(ASIC)、电子电路和/或处理器(共享、专用或组)、组合逻辑电路、和/或提供所述功能的其他合适组件。
在附图中,可能以特定布置和/或顺序示出了一些结构或方法特征。然而,应当理解的是,这样的特定布置和/或排序不是必需的。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来进行说明。另外,特定附图中所包含得结构或方法特征并不意味着所有实施例都需要包含这样的特征,在一些实施例中,可以不包含这些特征或者可以与将这些特征与其他特征进行组合。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
Claims (10)
1.一种通用消息队列泳道架构系统,用于电子设备,其特征在于,包括:基础环境系统和至少一个泳道环境系统;
其中,所述基础环境系统具有基础生产者组件和基础消费者组件,所述泳道环境系统具有泳道生产者组件和泳道消费者组件,所述基础消费者组件和所述泳道消费者组件分别属于具有不同Group id的消费者组;
所述基础环境系统和所述泳道环境系统共用一个消费主题Topic,所述泳道生产者组件可以调用所述基础生产者组件,所述基础生产者组件和所述泳道生产者组件将产生的消息发送至所述Topic,消息队列Client用于区分所述消费组的Group id,并基于所述消息的标识信息和所述泳道消费者组件的在线情况将所述Topic中的消息分别发送至所述基础消费者组件或所述泳道消费者组件,以使所述基础消费者组件或所述泳道消费者组件消费所述消息;
所述基础消费者组件接收离线的所述泳道消费者组件对应的消息,并保留所述泳道消费者组件对应的消息的所述标识信息。
2.根据权利要求1所述的系统,其特征在于,所述消息队列包括RocketMQ、Kafka、Pulsar、RabbitMQ等任意支持消息设置属性的消息队列。
3.根据权利要求1所述的系统,其特征在于,所述消息的标识信息包括所述消息所属的泳道标识和具备消费所述消息权限的消费者组标识。
4.一种消息消费方法,应用于基础环境系统,其特征在于,包括:
接收消息,接收来自泳道环境系统的透传消息和来自所述基础环境系统对应的上游服务的消息,将所述消息发送至消费主题Topic;
消费消息,基于泳道消费者的存在情况过滤消息,消费基础消息和带有泳道标识的消息。
5.根据权利要求4所述的方法,其特征在于,接收来自所述泳道环境系统的透传消息包括,
将所述泳道环境系统对应的上游服务的消息发送至所述基础生产者组件,解析所述泳道环境系统对应的上游服务的消息的环境信息,将带有环境信息的所述消息发送至所述消费主题Topic。
6.根据权利要求4所述的方法,其特征在于,基于泳道消费者的存在情况过滤消息包括:
拉取所述Topic中的全量消息;
基于所述消息的标识过滤出所述泳道消息,若存在与所述泳道标识匹配的所述泳道消费者,则将具有相同所述泳道标识的消息发送至同一所述泳道消费者组进行消费;
基于所述消息的标识过滤出所述基础消息,若不存在与所述泳道标识匹配的所述泳道消费者,则过滤出所述泳道消息,将所述基础消息和所述泳道消息发送至所述基础环境系统消费者组进行消费。
7.根据权利要求6所述的方法,其特征在于,对过滤出的所述消息对应的所述泳道消费者组命名,命名规则为personal_(tag)#(group),其中,(group)表示原group名,(tag)表示所述泳道环境系统的环境标识。
8.一种电子设备,其特征在于,所述设备包括存储有计算机可执行指令的存储器和处理器,所述处理器被配置为执行所述指令以实施根据权利要求4-7中任一项所述的消息消费方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条计算机指令,所述至少一条指令由处理器加载并执行,以实现如权利要求4-7中任一项所述的消息消费方法。
10.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,所述计算机指令被执行时,实现如权利要求4-7中任一项所述的消息消费方法。
Publications (1)
Publication Number | Publication Date |
---|---|
CN118282974A true CN118282974A (zh) | 2024-07-02 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107729139B (zh) | 一种并发获取资源的方法和装置 | |
US20170206123A1 (en) | Application containers with updatable application programming interface layers | |
DE202016008133U1 (de) | Containeranwendung mit dynamischem Unterpaket-Lader | |
CN111476015A (zh) | 一种文档处理方法、装置、电子设备及存储介质 | |
CN112313627A (zh) | 事件到无服务器函数工作流实例的映射机制 | |
CN113553260B (zh) | 测试方法、测试装置、设备和介质 | |
CN113360413A (zh) | 一种代码测试方法及装置 | |
CN110489326B (zh) | 基于ids的httpapi调试方法装置、介质和设备 | |
CN113051086A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN116700779A (zh) | 代码动态调整方法、装置、设备、介质和程序产品 | |
CN118282974A (zh) | 泳道架构系统和消息消费方法、设备、介质、程序产品 | |
CN110826233A (zh) | 一种多用户交通仿真平台系统 | |
WO2022078119A1 (zh) | 跨设备数据分享方法及相关设备 | |
CN117633102A (zh) | 区块链的数据整合方法、装置、计算机设备及存储介质 | |
CN114201508A (zh) | 数据处理方法、数据处理装置、电子设备和存储介质 | |
CN114356713A (zh) | 线程池监控方法、装置、电子设备及存储介质 | |
CN116244359B (zh) | 一种试验数据汇聚装置、方法及设备 | |
CN118283108A (zh) | 业务处理方法、系统、设备、介质和程序产品 | |
CN116257375A (zh) | Kafka数据自动化流处理方法及装置 | |
CN106341293A (zh) | 一种信息系统接入企业服务总线的方法及装置 | |
CN112511580B (zh) | 消息推送的方法、装置、存储介质和设备 | |
CN116186015A (zh) | 一种数据删除方法、装置、设备、介质及程序产品 | |
CN118014726A (zh) | 交易链路数据处理方法、装置、设备、存储介质和程序产品 | |
CN115174659A (zh) | 一种车载业务容器、业务调用方法、设备及介质 | |
CN116599992A (zh) | 对象的监控方法、装置、处理器以及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication |