一种分布式MQTT消息服务器的制作方法

文档序号:37194333发布日期:2024-03-01 13:07阅读:17来源:国知局
一种分布式MQTT消息服务器的制作方法

本发明属于数字化通信,具体涉及一种分布式mqtt消息服务器。


背景技术:

1、目前,信息化建设不断推进,越来越多的应用程序和系统被引入到生产环节中,而这些应用程序和系统往往是不同的技术平台和架构体系,各自独立运作,在常规的业务系统中数据通常是分散存储,数据源不仅存在于统一系统的不同服务中,还存在于不同系统的不同服务中,数据无法简单共享,复杂底层的数据安全权限限制往往导致企业及部门之间难以高效合作;另外,目前大多数企业数字化建设步调不一致、标准不统一,没有建立有效的数据交换服务,各个系统的数据就像一个个孤岛,资源分散,应用间不能协同,因此需要建立一种共享数据传输的标准通道,将不同系统之间的数据进行连接和传输,将分散的数据资源整合在一起,方便不同系统之间的数据共享和交流。


技术实现思路

1、本发明要解决的技术问题是提供一种能实现备间的无缝的双向通信,实现系统间的高效数据交换,降低了系统对接复杂性并提升系统可靠性的分布式mqtt消息服务器。

2、本发明的技术方案为:一种分布式mqtt消息服务器,其特征在于,所述分布式mqtt消息服务器采用分布式集群架构,所述分布式集群架构采用kubernetes进行节点发现和自动集群,所述分布式mqtt消息服务器包括:管理控制台模块、主题监控模块、访问控制模块、共享订阅模块和保留消息模块,所述管理控制台模块通过web页面对接入mqtt服务的连接数、订阅数和主题数进行查看并在有新建连接或新订阅主题时显示动态更新的统计数据;所述主题监控模块监控单个主题的消息流入的数量、消息流出的数量以及速率,所述速率为单个主题的每秒信息数;所述访问控制模块包括:认证机制、授权机制和黑名单机制,所述认证机制采用密码认证,所述密码认证包括:redis认证和mysql认证,所述授权机制分为两步:第一步,提前将mqtt客户端的权限列表存储到数据源中;第二步,在mqtt客户端发布或订阅时,从数据源中查询该mqtt客户端的权限列表,并根据匹配结果允许或拒绝当前操作;所述黑名单机制根据mqtt客户端的id或用户名进行访问控制:通过mqtt客户端的id 、ip地址用户名添加禁用对象;所述共享订阅模块通过在消息的原始主题前添加前缀为分组的订阅者启用共享订阅并同时将消息转发给不同的组的订阅者;所述保留消息模块将单个主题下发布的消息标记为保留消息,当mqtt客户端订阅主题时,若mqtt服务器端存在与所述主题相匹配的保留消息,所述保留消息被即刻发送到所述mqtt客户端

3、进一步地,所述分布式集群架构使用kubernetes api进行节点发现和自动集群,所述分布式集群架构通过endpoints资源从kubernetes api 服务器获取集权节点信息并为所有节点指定kubernetes api 服务器,所述分布式集群架构使用nginx的反向代理和负载均衡功能为集群实现负载均衡。

4、更进一步地,所述nginx的配置文件的upstream块中配置负载均衡策略,所述负载均衡策略为轮询的负载均衡策略。

5、进一步地,所述密码认证为:redis作为第一道认证方式, mysql作为第二道认证方式。

6、进一步地,所述授权机制包括两种授权认证方式:redis认证和mysql认证,所述授权认证方式为:redis作为第一道认证方式, mysql作为第二道认证方式。

7、进一步地,所述共享订阅模块中属于同一组的若干订阅者中只有一个订阅者接收消息。

8、进一步地,所述管理控制台模块的保留消息页面展示系统中所有的保留消息并设置有删除操作选项。

9、本发明的有益效果:本发明的一种分布式mqtt消息服务器通过采用mqtt传输协议为设备间提供了无缝的双向通信,实现了系统间的高效数据交换,简化了新系统的集成,同时也保证了系统易于扩展;在部署架构时,通过采用分布式集群架构,在保证高可用性、容错性以及可扩展性的同时,能够处理大量客户端和消息,集群中每个节点可以与其他节点通信,共享客户端连接、订阅、发布消息等数据,集群在节点之间自动分配负载并在节点出现故障时提供高可用性,集群在不同节点上通过维护数据的多个副本来提供数据冗余,如果一个节点发生故障,数据在集群中的其他节点上仍然可用,同时可以随着业务的增长向集群添加新节点,从而提供可扩展性;通过使用web页面进行管理监控实现接入的客户端的可视化管理;通过采用redis认证和mysql认证作为认证机制的认证方式,提高了认证能力,同时,采用黑名单制度也进一步强化了访问控制模块的消息服务访问控制能力;通过设置共享订阅模块和保留消息模块,使得多个订阅者之间实现负载均衡的同时能立即获得最新的消息状态,而不需要等待无法预期的时间;总之,本发明的一种分布式mqtt消息服务器通过提供设备间的无缝的双向通信,实现了系统间的高效数据交换,降低了系统对接的复杂性及系统之间的耦合程度并提升了系统的可靠性。



技术特征:

1.一种分布式mqtt消息服务器,其特征在于,所述分布式mqtt消息服务器采用分布式集群架构,所述分布式集群架构采用kubernetes进行节点发现和自动集群,所述分布式mqtt消息服务器包括:管理控制台模块、主题监控模块、访问控制模块、共享订阅模块和保留消息模块,所述管理控制台模块通过web页面对接入mqtt服务的连接数、订阅数和主题数进行查看并在有新建连接或新订阅主题时显示动态更新的统计数据;所述主题监控模块监控单个主题的消息流入的数量、消息流出的数量以及速率,所述速率为单个主题的每秒信息数;所述访问控制模块包括:认证机制、授权机制和黑名单机制,所述认证机制采用密码认证,所述密码认证包括:redis认证和mysql认证,所述授权机制分为两步:第一步,提前将mqtt客户端的权限列表存储到数据源中;第二步,在mqtt客户端发布或订阅时,从数据源中查询该mqtt客户端的权限列表,并根据匹配结果允许或拒绝当前操作;所述黑名单机制根据mqtt客户端的id或用户名进行访问控制:通过mqtt客户端的id 、ip地址用户名添加禁用对象;所述共享订阅模块通过在消息的原始主题前添加前缀为分组的订阅者启用共享订阅并同时将消息转发给不同的组的订阅者;所述保留消息模块将单个主题下发布的消息标记为保留消息,当mqtt客户端订阅主题时,若mqtt服务器端存在与所述主题相匹配的保留消息,所述保留消息被即刻发送到所述mqtt客户端。

2.根据权利要求1所述的一种分布式mqtt消息服务器,其特征在于,所述分布式集群架构使用kubernetes api进行节点发现和自动集群,所述分布式集群架构通过endpoints资源从kubernetes api 服务器获取集权节点信息并为所有节点指定kubernetes api 服务器,所述分布式集群架构使用nginx的反向代理和负载均衡功能为集群实现负载均衡。

3.根据权利要求2所述的一种分布式mqtt消息服务器,其特征在于,所述nginx的配置文件的upstream块中配置负载均衡策略,所述负载均衡策略为轮询的负载均衡策略。

4.根据权利要求1所述的一种分布式mqtt消息服务器,其特征在于,所述密码认证为:redis作为第一道认证方式, mysql作为第二道认证方式。

5.根据权利要求1所述的一种分布式mqtt消息服务器,其特征在于,所述授权机制包括两种授权认证方式:redis认证和mysql认证,所述授权认证方式为:redis作为第一道认证方式, mysql作为第二道认证方式。

6.根据权利要求1所述的一种分布式mqtt消息服务器,其特征在于,所述共享订阅模块中属于同一组的若干订阅者中只有一个订阅者接收消息。

7.根据权利要求1所述的一种分布式mqtt消息服务器,其特征在于,所述管理控制台模块的保留消息页面展示系统中所有的保留消息并设置有删除操作选项。


技术总结
本发明公开了一种分布式MQTT消息服务器,其采用分布式集群架构,所述分布式集群架构采用Kubernetes进行节点发现和自动集群,所述分布式MQTT消息服务器包括:管理控制台模块、主题监控模块、访问控制模块、共享订阅模块和保留消息模块,所述管理控制台模块通过web页面进行管理和监控,所述主题监控模块监控单个主题的消息情况,所述访问控制模块通过认证、授权和黑名单进行安全访问控制,所述共享订阅模块通过订阅组实现多个订阅者之间的负载均衡,所述保留消息模块为每个主题存储最新一条消息。本发明的一种分布式MQTT消息服务器通过提供设备间的无缝的双向通信,实现了系统间的高效数据交换,降低了系统对接的复杂性及系统之间的耦合程度并提升了系统的可靠性。

技术研发人员:杨晴,何程,王骏,卢宇,罗俊杰,郭希恒,黄仁飞
受保护的技术使用者:云南兆讯科技有限责任公司
技术研发日:
技术公布日:2024/2/29
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1