无序消息灰度发布方法、设备及消息中间件与流程

文档序号:37903296发布日期:2024-05-09 21:47阅读:17来源:国知局
无序消息灰度发布方法、设备及消息中间件与流程

本发明涉及消息中间件,具体涉及一种无序消息灰度发布方法、设备及消息中间件。


背景技术:

1、目前,企业信息系统的发展从集中化向分布式转变、服务从业务集中内聚向分布式微服务化发展,这使得实现一个业务流程时,需要几十甚至上百个微服务通过复杂的协作才可以完成,该情况下,在进行服务更新升级时容易对用户产生影响。

2、为了在一定程度上避免在进行服务更新升级时对用户产生影响,降低后端更新服务时对用户带来的风险,由消息交互双方协商出基于灰度发布技术的灰度处理方案,根据灰度处理方案,可以把相关的消息流量在同一消息消费者的不同消费者实例之间进行灵活的切换。

3、然而,上述技术方案存在服务之间耦合度高、方案开发难度及方案开发成本高的问题。


技术实现思路

1、为了解决现有技术存在的服务之间耦合度高、方案开发难度及方案开发成本高的问题,本发明提供了一种无序消息灰度发布方法、设备及消息中间件。

2、本发明的技术方案如下:

3、本发明提供了一种无序消息灰度发布方法,包括:

4、在接收到消息生产者发送的消息时,根据消息预处理规则对所述消息进行打标处理,得到所述消息的打标结果;所述消息预处理规则中规定了至少一个消息消费者的灰度规则,任一所述消息消费者的灰度规则中规定了该消息消费者的各个消费者实例的消费比例;所述打标结果用于控制对应消息的流向,以使得该消息被任一所述消息消费者的任一消费者实例所接收的概率等于其消费比例;

5、将所述消息以扇出的方式发送至预设队列组的每个队列上;

6、在接收到第一目标消息消费者发送的消费消息请求时,将所述第一目标消息消费者的所有消费者实例路由到所述预设队列组的目标队列上,不同所述消费者实例所连接的目标队列不同;

7、根据所有所述目标队列中的所有消息的打标结果,对所述第一目标消息消费者的各个消费者实例分发所述所有消息。

8、可选的,针对任一所述消息消费者,在所述预设队列组的所有用于连接该消息消费者的队列中,每个所述队列分别用于连接该消息消费者的一个消费者实例,且不同所述队列所用于连接的所述消费者实例不同。

9、可选的,在所述消息消费者的数量为至少两个时,针对所述预设队列组中的任一队列,所述任一队列用于被至少两个所述消息消费者所共用。

10、可选的,每个所述消息消费者的消费者实例数量相等;

11、所述任一队列用于被所有所述消息消费者所共用,且针对任一所述消息消费者,所述预设队列组的每个队列独立对应该消息消费者的一个消费者实例。

12、可选的,在所述至少一个消息消费者为订阅模式下的多个消息消费者时,所述根据消息预处理规则对所述消息进行打标处理,具体包括:

13、分别针对每个所述消息消费者,根据消息预处理规则对所述消息进行打标处理,得到所述消息关于每个所述消息消费者的打标结果。

14、可选的,所述根据所有所述目标队列中的所有消息的打标结果,对所述第一目标消息消费者的各个消费者实例分发所述所有消息,具体包括:

15、针对每个所述目标队列,基于所述第一目标消息消费者的消息过滤规则,将所述目标队列的各个消息中,打标结果满足所述目标队列所连接的消费者实例所对应的打标结果要求的消息,发送给所述目标队列所连接的消费者实例;所述第一目标消息消费者的消息过滤规则中规定了所述第一目标消息消费者的各个消费者实例的打标结果要求。

16、可选的,本发明的无序消息灰度发布方法,还包括:

17、响应于消息消费者管理人员的修改操作,修改所述消息预处理规则和/或至少一个所述消息消费者的消息过滤规则。

18、可选的,响应于消息消费者管理人员的修改操作,修改所述消息预处理规则和/或至少一个所述消息消费者的消息过滤规则,具体包括:

19、在接收到所述消息消费者管理人员发送的第二目标消息消费者的灰度发布规则时,获取所述第二目标消息消费者的消费者实例信息;所述第二目标消息消费者的灰度发布规则中规定了该目标消息消费者的各个消费者实例的消费比例;所述第二目标消息消费者的消费者实例信息用于确定该第二目标消息消费者的各个消费者实例;

20、根据所述第二目标消息消费者的灰度发布规则和消费者实例信息,修改该第二目标消息消费者的消息过滤规则和/或修改所述消息预处理规则。

21、本发明还提供了一种消息中间件,包括:

22、消息预处理组件,用于在接收到消息生产者发送的消息时,根据消息预处理规则对所述消息进行打标处理,得到所述消息的打标结果,以及,将所述消息以扇出的方式发送至预设队列组的每个队列上;所述消息预处理规则中规定了至少一个消息消费者的灰度规则,任一所述消息消费者的灰度规则中规定了该消息消费者的各个消费者实例的消费比例;所述打标结果用于控制对应消息的流向,以使得该消息被任一所述消息消费者的任一消费者实例所接收的概率等于其消费比例;

23、预设队列组,用于保存所述消息;

24、连接控制器,用于在接收到第一目标消息消费者发送的消费消息请求时,将所述第一目标消息消费者的所有消费者实例路由到所述预设队列组的目标队列上,不同所述消费者实例所连接的目标队列不同;

25、消息过滤器模块,用于根据所有所述目标队列中的所有消息的打标结果,对所述第一目标消息消费者的各个消费者实例分发所述所有消息。

26、本发明还提供了一种无序消息灰度发布设备,包括:

27、至少一个处理器;以及,

28、与所述至少一个处理器通信连接的存储器;其中,

29、所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够实现如上所述的无序消息灰度发布方法。

30、本发明采用上述技术方案,具备如下有益效果:

31、一种无序消息灰度发布方法,通过在接收到消息生产者发送的消息时,根据消息预处理规则对消息进行打标处理,得到消息的打标结果,其中,消息预处理规则中规定了至少一个消息消费者的灰度规则,任一消息消费者的灰度规则中规定了该消息消费者的各个消费者实例的消费比例,打标结果用于控制对应消息的流向,以使得该消息被任一消息消费者的任一消费者实例所接收的概率等于其消费比例。如此,使得本发明能够根据打标结果进行无序消息灰度发布。接着,将消息以扇出的方式发送至预设队列组的每个队列上。后续,在接收到第一目标消息消费者发送的消费消息请求时,将第一目标消息消费者的所有消费者实例路由到预设队列组的目标队列上,不同消费者实例所连接的目标队列不同;根据所有目标队列中的所有消息的打标结果,对第一目标消息消费者的各个消费者实例分发所有消息。如此,实现了无序消息灰度发布。本发明中,无需消息交互双方协商灰度处理方案,消息生产方无需了解并适配消息消费方的灰度处理逻辑,使得本发明能够降低服务之间耦合度,以及,由于无需消息交互双方投入人力进行方案设计和开发,使得本发明能够降低方案开发难度及方案开发成本。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1