System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 智慧社区微服务架构MQTT异步和同步通信方法和系统技术方案_技高网

智慧社区微服务架构MQTT异步和同步通信方法和系统技术方案

技术编号:40402840 阅读:4 留言:0更新日期:2024-02-20 22:27
本发明专利技术提供一种智慧社区微服务架构MQTT异步和同步通信方法和系统,涉及物联网技术领域,系统包括:多个微服务节点、MQTT Broker、设备端;多个微服务节点与MQTT Broker,以及MQTT Broker与多个设备端之间基于MQTT协议建立双向通讯连接;多个微服务节点被配置为发布异步请求消息或同步请求消息并处理返回的响应消息;MQTT Broker被配置为对异步请求消息、同步请求消息,或响应消息进行转发,设备端被配置为对异步请求消息或同步请求消息进行处理并返回响应消息。本发明专利技术实现了微服务多节点场景下的MQTT异步和同步通信功能,解决了现有方案中异步消息重复消费和同步消息丢失的问题。

【技术实现步骤摘要】

本专利技术涉及物联网,具体涉及一种智慧社区微服务架构mqtt异步和同步通信方法和系统。


技术介绍

1、当下用于智慧社区的物联网设备多通过mqtt(消息队列遥测传输)协议接入业务系统。传统的mqtt通信是基于订阅/发布模式的异步消息模型,但某些场景下也需要与设备进行基于请求/响应模式的同步通信,此时就需要在发起请求的节点实例保存请求的状态,然后将收到的响应消息与请求进行正确匹配后再进行后续消息处理。

2、针对业务系统为微服务架构的情况,后端服务可能存在多个节点实例且会进行动态增减。各后端服务节点若采用普通订阅的方式来订阅响应消息则存在消息重复消费的问题,若采用共享订阅则有可能某个同步请求的响应消息被mqtt broker(消息代理服务器)的负载均衡规则分发至其他节点而导致消息丢失。

3、目前现有的mqtt同步转异步方案,有的未保留异步模式,有的需要特殊定制的iot中间件(iot-middleware物联网中间件),有的需要更改mqtt标准协议,有的需要借助一些第三方组件实现,有的不适用于微服务场景,无法满足使用需求。


技术实现思路

1、有鉴于此,本申请实施例提供一种智慧社区微服务架构mqtt异步和同步通信方法和系统,以实现微服务多节点场景下的mqtt异步和同步通信的功能,解决现有方案中异步消息重复消费和同步消息丢失的问题。

2、本申请实施例提供以下技术方案:一种智慧社区微服务架构mqtt异步和同步通信方法,包括:

3、基于mqtt协议建立多个微服务节点与mqtt broker,以及mqtt broker与多个设备端之间的双向通讯连接;其中,多个微服务节点采用微服务场景下的分布式集群部署;

4、各个微服务节点共享订阅所有设备端的响应话题,各个微服务节点普通订阅同步响应转发话题,各个微服务节点创建msgid存储库,各个设备端订阅含有设备唯一id的请求话题;

5、响应于一个微服务节点发布的异步请求消息,通过mqtt broker将该异步请求消息转发至对应的设备端,并收到设备端处理该异步请求消息后返回的响应消息,通过mqttbroker将该响应消息根据负载均衡规则分配至任意一个微服务节点,通过该微服务节点判断该响应消息为异步响应消息后对所述异步响应消息进行处理;

6、响应于一个微服务节点发布的同步请求消息,对该同步请求消息生成全局唯一msgid,通过mqtt broker将该同步请求消息及生成的全局唯一msgid共同转发至对应的设备端,并收到设备端处理该同步请求消息后返回的响应消息及对应的msgid,通过mqttbroker将该响应消息及对应的msgid根据负载均衡规则分配至任意一个微服务节点,通过该微服务节点判断该响应消息为同步响应消息后,再通过该响应消息对应的msgid判断该响应消息是否属于本节点的实例域,若是,则对所述同步响应消息进行处理。

7、根据本申请一种实施例,还包括:各个微服务节点创建msgid存储库后,启动msgid超时检查线程,定时检测msgid存储库中各msgid是否超时,若任一msgid超时,则唤醒等待该msgid响应的线程进行请求超时处理,并从msgid存储库中移除该msgid;其中,所述msgid存储库中包括msgid、msgid的生成时间戳、超时阈值。

8、根据本申请一种实施例,定时检测msgid存储库中各msgid是否超时,若任一msgid超时,则唤醒等待该msgid响应的线程进行超时处理,包括:

9、msgid超时检查线程定时遍历msgid存储库,根据各msgid的生成时间戳和超时阈值判断当前msgid的请求是否超时;其中,在超时之前,所述超时阈值可根据当前业务系统或mqtt broker负载进行动态调整。

10、根据本申请一种实施例,通过该微服务节点判断该响应消息为异步响应消息后对所述异步响应消息进行处理,包括:

11、该微服务节点通过判断所述异步响应消息是否有msgid,或是否有设定的特殊格式的msgid,确定该响应消息是否为异步响应消息;其中,若所述异步响应消息无msgid,或无设定的特殊格式的msgid,则该响应消息为异步响应消息。

12、根据本申请一种实施例,响应于一个微服务节点发布的同步请求消息,对该同步请求消息生成全局唯一msgid,还包括:

13、将该全局唯一msgid与该msgid的生成时间戳,以及超时阈值一起存入本地的msgid存储库,同时将该同步请求消息的请求线程阻塞,等待响应消息返回;

14、若返回的响应消息属于当前节点的实例域,则唤醒等待该msgid响应消息的请求线程进行消息处理。

15、根据本申请一种实施例,通过该微服务节点判断该响应消息为同步响应消息后,再通过该响应消息对应的msgid判断该响应消息是否属于本节点的实例域,还包括:

16、若该响应消息不属于本节点的实例域,则通过同步响应转发话题将该响应消息发布至mqtt broker,通过所述mqtt broker将该响应消息广播至所有普通订阅了同步响应转发话题的微服务节点;

17、各微服务节点通过该响应消息对应的msgid判断该响应消息是否属于当前节点的实例域,若是,则唤醒等待该msgid响应消息的请求线程进行消息处理,若否,则丢弃该响应消息。

18、根据本申请一种实施例,各微服务节点通过该响应消息对应的msgid判断该响应消息是否属于当前节点的实例域,包括:

19、各微服务节点在本节点的msgid存储库中进行查找,若本节点的msgid存储库中有该响应消息对应的msgid,则判断该响应消息属于当前节点的实例域。

20、本申请还提供一种智慧社区微服务架构mqtt异步和同步通信系统,包括:业务系统服务节点、mqtt broker、设备端;所述业务系统服务节点包括采用微服务场景下分布式集群部署的多个微服务节点,所述多个微服务节点与mqtt broker,以及mqtt broker与多个设备端之间基于mqtt协议建立双向通讯连接;

21、所述多个微服务节点被配置为发布异步请求消息或同步请求消息并对返回的响应消息进行处理;所述mqtt broker被配置为对所述异步请求消息、同步请求消息,或响应消息进行转发,所述设备端被配置为对所述异步请求消息或同步请求消息进行处理并返回响应消息;其中,

22、当一个微服务节点发布一个异步请求消息,通过mqtt broker将该异步请求消息转发至对应的设备端,并收到设备端处理该异步请求消息后返回的响应消息,通过mqttbroker将该响应消息根据负载均衡规则分配至任意一个微服务节点,通过该微服务节点判断该响应消息为异步响应消息后对所述异步响应消息进行处理;

23、当一个微服务节点发布一个同步请求消息,对该同步请求消息生成全局唯一msgid,通过mqtt broker将该同步请求消息及生成的全局唯一msgi本文档来自技高网...

【技术保护点】

1.一种智慧社区微服务架构MQTT异步和同步通信方法,其特征在于,包括:

2.根据权利要求1所述的智慧社区微服务架构MQTT异步和同步通信方法,其特征在于,还包括:

3.根据权利要求2所述的智慧社区微服务架构MQTT异步和同步通信方法,其特征在于,定时检测MsgId存储库中各MsgId是否超时,若任一MsgId超时,则唤醒等待该MsgId响应的线程进行超时处理,包括:

4.根据权利要求1所述的智慧社区微服务架构MQTT异步和同步通信方法,其特征在于,通过该微服务节点判断该响应消息为异步响应消息后对所述异步响应消息进行处理,包括:

5.根据权利要求2所述的智慧社区微服务架构MQTT异步和同步通信方法,其特征在于,响应于一个微服务节点发布的同步请求消息,对该同步请求消息生成全局唯一MsgId,还包括:

6.根据权利要求5所述的智慧社区微服务架构MQTT异步和同步通信方法,其特征在于,通过该微服务节点判断该响应消息为同步响应消息后,再通过该响应消息对应的MsgId判断该响应消息是否属于本节点的实例域,还包括:

7.根据权利要求6所述的智慧社区微服务架构MQTT异步和同步通信方法,其特征在于,各微服务节点通过该响应消息对应的MsgId判断该响应消息是否属于当前节点的实例域,包括:

8.一种智慧社区微服务架构MQTT异步和同步通信系统,其特征在于,包括:业务系统服务节点、MQTT Broker、设备端;所述业务系统服务节点包括采用微服务场景下分布式集群部署的多个微服务节点,所述多个微服务节点与MQTT Broker,以及MQTT Broker与多个设备端之间基于MQTT协议建立双向通讯连接;

9.根据权利要求8所述的智慧社区微服务架构MQTT异步和同步通信系统,其特征在于,各个微服务节点共享订阅所有设备端的响应话题,各个微服务节点普通订阅同步响应转发话题,各个微服务节点创建MsgId存储库,各个设备端订阅含有设备唯一ID的请求话题。

10.根据权利要求9所述的智慧社区微服务架构MQTT异步和同步通信系统,其特征在于,所述MsgId存储库中包括MsgId、MsgId的生成时间戳、超时阈值,用于启动MsgId超时检查线程,根据各MsgId的生成时间戳和超时阈值定时检测所述MsgId存储库中各MsgId是否超时。

...

【技术特征摘要】

1.一种智慧社区微服务架构mqtt异步和同步通信方法,其特征在于,包括:

2.根据权利要求1所述的智慧社区微服务架构mqtt异步和同步通信方法,其特征在于,还包括:

3.根据权利要求2所述的智慧社区微服务架构mqtt异步和同步通信方法,其特征在于,定时检测msgid存储库中各msgid是否超时,若任一msgid超时,则唤醒等待该msgid响应的线程进行超时处理,包括:

4.根据权利要求1所述的智慧社区微服务架构mqtt异步和同步通信方法,其特征在于,通过该微服务节点判断该响应消息为异步响应消息后对所述异步响应消息进行处理,包括:

5.根据权利要求2所述的智慧社区微服务架构mqtt异步和同步通信方法,其特征在于,响应于一个微服务节点发布的同步请求消息,对该同步请求消息生成全局唯一msgid,还包括:

6.根据权利要求5所述的智慧社区微服务架构mqtt异步和同步通信方法,其特征在于,通过该微服务节点判断该响应消息为同步响应消息后,再通过该响应消息对应的msgid判断该响应消息是否属于本节点的实例域,还包括:

7.根据权利要求6所述的智慧社...

【专利技术属性】
技术研发人员:李勇温平陈科顺
申请(专利权)人:德阳城市智慧之心信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1