技术新讯 > 电子通信装置的制造及其应用技术 > 一种基于kafka的微服务消息系统及消息处理方法与流程  >  正文

一种基于kafka的微服务消息系统及消息处理方法与流程

  • 国知局
  • 2024-08-02 13:54:32

本申请涉及通信,更具体的说,是涉及一种基于kafka的微服务消息系统及消息处理方法。

背景技术:

1、随着社会信息化的发展和企业业务场景的复杂度增加,企业分布式系统的数据通讯要求的深入,服务间直接的rpc(remote procedure call,远程过程调用)调用模式已经不能满足现有的业务对于服务解耦、流量控制及数据通信可靠性的要求,为了解决需要高可靠数据通信问题,以消息队列进行消息传递和消息发布订阅模式被广泛采用。

2、消息队列及发布订阅模式对数据通讯产生了革命性的改变。消息队列是分布式应用间交换信息,数据通信的一种技术,消息队列可驻留在内存或磁盘上,队列存储消息直到消息被应用服务取走。使用上,消息发布方并不直接把消息发送给接收方,而是把消息发到消息中间件,消息中间件对消息持久化,消费方直接从中间件订阅所需消息,从而极大降低系统耦合度。且消息队列把数据进行持久化直到消息已经被完全处理,通过这一方式规避了数据丢失的风险。

3、目前企业广泛应用的消息队列主要为mq(rabbitmq,activemq,rocketmq等),这些消息中间件产品为企业中需要高并发高可靠的消息传递的业务场景提供了有力的支持。但是随着企业业务场景对消息处理延迟性的要求增高和业务数据量的增加,传统的消息中间件由于性能相对较低(消息中间件性能主要取决于网络带宽和cpu性能),所以在资源和性能上成为服务的瓶颈。而且mq一般采用主备模式或者镜像模式来保证系统高可用,比如rabbitmq的镜像模式就是将队列镜像到集群中的其他broker节点上,队列元数据和消息都会完整保存再多个节点上。如果集群中的一个节点宕机了,队列可以自动切换到镜像中的其他节点上来保证服务可用性。但是镜像模式消息需要同步到多个节点,导致网络带宽压力和消耗大,且节点没有拓展性,如果某个queue负载过重,其他节点也需要包含这个queue的所有数据。

技术实现思路

1、有鉴于此,本申请提供如下技术方案:

2、一种基于kafka微服务消息系统,包括:

3、消息发送代理模块,用于接收消息发送端发送的消息;

4、分布式的kafka服务器集群,用于存储所述消息发送代理模块接收到的消息,所述kafka服务器集群中包括多个逻辑消息队列,每个所述逻辑消息队列具有多个分区,其中包括副本分区,不同的分区位于不同的存储对象上;

5、消息消费代理模块,用于接收消息消费端的拉取消息请求,并根据接收到的请求从所述kafka服务器集群中拉取对应消息返回给消息消费端;

6、分布式管理模块,用于管理所述kafka服务器集群中的各逻辑消息队列,并在所述逻辑消息队列的信息发生变化时通知给所述消息发送代理模块和所述消息消费代理模块。

7、可选地,每个所述逻辑消息队列的多个分区中包含一个主分区和至少一个从分区,所述主分区用于读写消息,所述从分区为所述主分区的副本。

8、可选地,所述kafka服务器集群还用于:在逻辑消息队列的主分区故障时,从对应的至少一个从分区中选择出一个从分区设置为主分区。

9、可选地,还包括:

10、消费连接监测模块,用于监控消息消费端的状态,并基于消息消费端的状态和逻辑消息队列的信息进行消息消费端和逻辑消息队列之间的任务分配。

11、一种消息处理方法,应用于前述任一种基于kafka微服务消息系统,包括:

12、接收消息发送端发送的第一消息,所述第一消息中包括名称信息;

13、将所述第一消息存入分布式kafka服务器集群中与所述名称信息对应的逻辑消息队列中;

14、接收消息消费端发送的消息拉取指令,所述消息拉取指令包括所述名称信息;

15、基于所述名称信息从所述逻辑消息队列中获得所述第一消息并返回给所述消息消费端。

16、可选地,还包括:

17、在逻辑消息队列的主分区故障时,从对应的至少一个从分区中选择出一个从分区设置为主分区。

18、可选地,所述从对应的至少一个从分区中选择出一个从分区设置为主分区,包括:

19、将所有从分区中保存数据最新的一个从分区确定为主分区;

20、或,

21、若存在多个保存数据最新的从分区,从同步副本队列中选择一个从分区作为主分区,所述同步副本队列中的从分区为可用的、保存数据与主分区同步的副本队列。

22、可选地,还包括:

23、接收消息消费端的心跳信号,基于所述心跳信号确定当前可用消费端实例的数量;

24、根据消息消费端的消息拉取指令确定需要访问的逻辑消息队列的数量;

25、基于当前可用消费端实例的数量和需要访问的逻辑消息队列的数量确定分配关系,所述分配关系记录了消费端实例与逻辑消息队列的对应关系。

26、可选地,所述基于当前可用消费端实例的数量和需要访问的逻辑消息队列的数量确定分配关系,包括:

27、采用轮询分配方法将需要访问的逻辑消息队列分配给当前可用的消费端实例;

28、或,

29、采用加权轮询算法等权重分配算法将需要访问的逻辑消息队列分配给当前可用的消费端实例。

30、可选地,还包括:

31、记录分布式kafka服务器集群中服务器与逻辑消息队列的信息的对应关系以及逻辑消息队列的工作状态;

32、若监控到分布式kafka服务器集群中的所述对应关系和/或所述工作状态发生变化,更新对应的记录内容,以便基于更新的记录数据进行消息处理。

33、经由上述的技术方案可知,本申请实施例公开了一种基于kafka的微服务消息系统及消息处理方法,其中,微服务消息系统包括:消息发送代理模块,用于接收消息发送端发送的消息;分布式的kafka服务器集群,用于存储所述消息发送代理模块接收到的消息,所述kafka服务器集群中包括多个逻辑消息队列,每个所述逻辑消息队列具有多个分区,不同的分区位于不同的存储对象上;消息消费代理模块,用于接收消息消费端的拉取消息请求,并根据接收到的请求从所述kafka服务器集群中拉取对应消息返回给消息消费端;分布式管理模块,用于管理所述kafka服务器集群中的各逻辑消息队列,并在所述逻辑消息队列的信息发生变化时通知给所述消息发送代理模块和所述消息消费代理模块。所述基于kafka微服务消息系统使用kafka服务器集群来达到每秒处理数百万条消息,并通过分区副本机制和分布式部署多节点,实现消息系统的高可用性和消息的高可靠性。

技术特征:

1.一种基于kafka微服务消息系统,其特征在于,包括:

2.根据权利要求1所述的基于kafka微服务消息系统,其特征在于,每个所述逻辑消息队列的多个分区中包含一个主分区和至少一个从分区,所述主分区用于读写消息,所述从分区为所述主分区的副本。

3.根据权利要求2所述的基于kafka微服务消息系统,其特征在于,所述kafka服务器集群还用于:在逻辑消息队列的主分区故障时,从对应的至少一个从分区中选择出一个从分区设置为主分区。

4.根据权利要求1所述的基于kafka微服务消息系统,其特征在于,还包括:

5.一种消息处理方法,应用于权利要求1-4任一项所述的基于kafka微服务消息系统,其特征在于,包括:

6.根据权利要求5所述的消息处理方法,其特征在于,还包括:

7.根据权利要求6所述的消息处理方法,其特征在于,所述从对应的至少一个从分区中选择出一个从分区设置为主分区,包括:

8.根据权利要求5所述的消息处理方法,其特征在于,还包括:

9.根据权利要求8所述的消息处理方法,其特征在于,所述基于当前可用消费端实例的数量和需要访问的逻辑消息队列的数量确定分配关系,包括:

10.根据权利要求5所述的消息处理方法,其特征在于,还包括:

技术总结本申请公开了一种基于kafka的微服务消息系统及消息处理方法,其中,微服务消息系统包括:消息发送代理模块,用于接收消息发送端发送的消息;分布式的Kafka服务器集群,用于存储所述消息发送代理模块接收到的消息,Kafka服务器集群中包括多个逻辑消息队列,每个所述逻辑消息队列具有多个分区,不同的分区位于不同的存储对象上;消息消费代理模块,用于接收消息消费端的拉取消息请求,并根据接收到的请求从所述Kafka服务器集群中拉取对应消息返回给消息消费端;分布式管理模块,用于管理所述Kafka服务器集群中的各逻辑消息队列,并在所述逻辑消息队列的信息发生变化时通知给所述消息发送代理模块和所述消息消费代理模块。技术研发人员:肖梦龙,王海,刘一凡,栾衡,崔华受保护的技术使用者:中国民航信息网络股份有限公司技术研发日:技术公布日:2024/7/18

本文地址:https://www.jishuxx.com/zhuanli/20240801/241057.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。