基于MQTT服务集群的会话处理方法及系统技术方案

技术编号:29618273 阅读:22 留言:0更新日期:2021-08-10 18:38
本发明专利技术提供一种基于MQTT服务集群的会话处理方法及系统,该方法包括:MQTT网关接收MQTT客户端的订阅请求,订阅请求携带客户端ID信息以及是否清空会话的指示;MQTT网关向调度器发送调用请求,以由调度器查找订阅请求中携带的清空会话的指示;在未查找到清空会话的指示的情况下,调度器查找缓存区中的反映订阅消息中携带的客户端ID与第一服务端的映射关系的信息;在查找到反映订阅消息中携带的客户端ID与第一服务端的映射关系的信息的情况下,获取第一服务端的地址信息,并将获取到的地址信息发送至MQTT网关;在查找到清空会话的指示的情况下,清空缓存区中的与订阅消息中携带的客户端ID具有映射关系的缓存信息,并基于负载均衡算法为客户端ID分配第二服务端。

【技术实现步骤摘要】
基于MQTT服务集群的会话处理方法及系统
本专利技术涉及计算机
,尤其涉及一种基于MQTT服务集群的会话处理方法及系统。
技术介绍
MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输协议)是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务;作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT协议规范只给出了MQTT协议的报文规范,未给出集群实现方案。MQTT协议中定义了持久化Session的概念,即如果MQTT客户端连接时将CleanSession标记设置为false,且发起了订阅,那么当客户端断开连接后如果有其他客户端发送了满足该连接的订阅数据,那么MQTT服务端应该将这些数据保存,且当MQTT客户端下次以相同的ClientID发起连接后,将这些缓存的数据发送过去。而MQTT集群负载均衡一般采用硬件负载或者LVS(LinuxVirtualServe)软件负载方案,因此在MQTT集群中,MQTT客户端最终连接到哪台MQTT服务端是不确定的。因而当MQTT客户端以相同的ClientID先后连接时,它们可能会被分配到不同的MQTT服务端上;如果有持久化的数据,那么这些数据需要从一台服务端转移到另外一台。现有的一些方案的实现忽略了此问题,比如:一种基于Mqtt协议服务端实现方法(申请号:201710041498.X)基于开源的Mosquitto来实现MQTT协议服务端,但是Mosquitto本质上是一个单机版,不能处理Session转移的问题。而在另外一些方案中,为了解决上述问题,一般是将数据存储到数据库或者消息中间件中;这样当MQTT客户端连接到另外一台MQTT服务端后,进一步的从数据库或者消息中间件中恢复数据。例如,MQTT客户端以相同的ClientID且将CleanSession标记设置为false发起多次登录;客户端第一次连接到服务端A后,发起订阅操作后下线,此后服务端A会将客户端的订阅情况和所有在离线期间发送给此客户端的数据存储到数据库或者消息中间件中;如果此客户端第二次上线时登录到了服务端B上,此时服务端B需要从数据库或者消息中间件中加载当前客户端的所有订阅消息,并从数据库或者消息中间件中恢复离线期间的数据,同时通知服务端A清理订阅情况。由上可以看出,在现有技术中,当Session发生转移时会有数据转移和旧的Session清理操作,这些操作比较繁琐且会消耗一定的时间和资源。因此,对于持久化Session,如何减小系统开销,以及缩短客户端Session恢复时间是亟待解决的技术问题。
技术实现思路
有鉴于此,本专利技术提供了一种基于MQTT服务集群的会话处理方法及系统,以解决现有技术中存在的一个或多个问题。根据本专利技术的一个方面,本专利技术公开了一种基于MQTT服务集群的会话处理方法,所述方法包括:MQTT网关接收MQTT客户端的订阅请求,所述订阅请求携带客户端ID信息以及是否清空会话的指示;所述MQTT网关向调度器发送调用请求,以由所述调度器查找所述订阅请求中携带的清空会话的指示;在未查找到清空会话的指示的情况下,所述调度器查找缓存区中的反映所述订阅消息中携带的客户端ID与第一服务端的映射关系的信息;在查找到反映所述订阅消息中携带的客户端ID与第一服务端的映射关系的信息的情况下,获取所述第一服务端的地址信息,并将获取到的所述地址信息发送至所述MQTT网关;MQTT网关基于接收到的所述地址信息将所述订阅请求发送至所述第一服务端;在查找到清空会话的指示的情况下,所述调度器清空缓存区中的与所述订阅消息中携带的客户端ID具有映射关系的缓存信息,并基于负载均衡算法为所述客户端ID分配第二服务端。在本专利技术的一些实施例中,在基于负载均衡算法为所述客户端ID分配第二服务端之后,还包括:将客户端ID与被分配的第二服务端的进行信息绑定,并将对应的映射关系存储至缓存区。在本专利技术的一些实施例中,所述方法还包括:在未查找到反映所述订阅消息中携带的客户端ID与第一服务端的映射关系的信息的情况下,基于负载均衡算法为所述客户端ID分配第三服务端。在本专利技术的一些实施例中,在基于负载均衡算法为所述客户端ID分配第三服务端之后,还包括:将客户端ID与被分配的第三服务端进行信息绑定,并将对应的映射关系存储至缓存区。在本专利技术的一些实施例中,所述负载均衡算法为默认负载均衡算法或自定义负载均衡算法。在本专利技术的一些实施例中,所述订阅请求还携带有用户名信息。在本专利技术的一些实施例中,在MQTT网关基于接收到的所述地址信息将所述订阅请求发送至第一服务端之后,还包括:所述第一服务端对所述MQTT客户端进行鉴权,在所述MQTT客户端通过鉴权后,查找所述订阅请求携带的清空会话的指示;在查找到清空会话的指示的情况下,所述第一服务端通过所述调度器向所述MQTT客户端发送绑定请求,所述第一服务端在接收到所述MQTT客户端返回的绑定确认信息后,将连接响应发送至MQTT网关。根据本专利技术的另一方面,还公开了一种基于MQTT服务集群的会话处理系统,所述系统包括MQTT网关、调度器和多个服务端,其中,所述MQTT网关用于接收MQTT客户端的订阅请求,并向所述调度器发送调用请求,所述订阅请求携带客户端ID信息以及是否清空会话的指示;所述调度器用于查找所述订阅请求中携带的清空会话的指示;在所述调度器未查找到清空会话的指示的情况下,所述调度器用于查找缓存区中的反映所述订阅消息中携带的客户端ID与第一服务端的映射关系的信息;在查找到反映所述订阅消息中携带的客户端ID与第一服务端的映射关系的信息的情况下,所述调度器用于获取所述第一服务端的地址信息,并将获取到的所述服务端地址信息发送至MQTT网关;MQTT网关基于接收到的所述地址信息将所述订阅请求发送至所述第一服务端;在查找到清空会话的指示的情况下,所述调度器用于清空缓存区中的与所述订阅消息中携带的客户端ID具有映射关系的缓存信息,并基于负载均衡算法为所述客户端ID分配第二服务端。在本专利技术的一些实施例中,,所述系统还包括负载均衡器,所述负载均衡器用于为所述客户端ID分配新的服务端地址信息。在本专利技术的一些实施例中,所述调度器包括供MQTT网关调用的RPC接口、供多个服务端调用的用于清除客户端ID与服务端映射关系的解绑接口、供多个服务端调用的用于建立客户端ID与服务端映射关系的绑定接口以及供多个服务端调用的心跳RPC接口。本专利技术实施例中的基于MQTT服务集群的会话处理方法及系统,MQTT网关(MQTTGateway)通过MQTT调度器(MQTTSche本文档来自技高网
...

【技术保护点】
1.一种基于MQTT服务集群的会话处理方法,其特征在于,所述方法包括:/nMQTT网关接收MQTT客户端的订阅请求,所述订阅请求携带客户端ID信息以及是否清空会话的指示;/n所述MQTT网关向调度器发送调用请求,以由所述调度器查找所述订阅请求中携带的清空会话的指示;/n在未查找到清空会话的指示的情况下,所述调度器查找缓存区中的反映所述订阅消息中携带的客户端ID与第一服务端的映射关系的信息;/n在查找到反映所述订阅消息中携带的客户端ID与第一服务端的映射关系的信息的情况下,获取所述第一服务端的地址信息,并将获取到的所述地址信息发送至所述MQTT网关;/nMQTT网关基于接收到的所述地址信息将所述订阅请求发送至所述第一服务端;/n在查找到清空会话的指示的情况下,所述调度器清空缓存区中的与所述订阅消息中携带的客户端ID具有映射关系的缓存信息,并基于负载均衡算法为所述客户端ID分配第二服务端。/n

【技术特征摘要】
1.一种基于MQTT服务集群的会话处理方法,其特征在于,所述方法包括:
MQTT网关接收MQTT客户端的订阅请求,所述订阅请求携带客户端ID信息以及是否清空会话的指示;
所述MQTT网关向调度器发送调用请求,以由所述调度器查找所述订阅请求中携带的清空会话的指示;
在未查找到清空会话的指示的情况下,所述调度器查找缓存区中的反映所述订阅消息中携带的客户端ID与第一服务端的映射关系的信息;
在查找到反映所述订阅消息中携带的客户端ID与第一服务端的映射关系的信息的情况下,获取所述第一服务端的地址信息,并将获取到的所述地址信息发送至所述MQTT网关;
MQTT网关基于接收到的所述地址信息将所述订阅请求发送至所述第一服务端;
在查找到清空会话的指示的情况下,所述调度器清空缓存区中的与所述订阅消息中携带的客户端ID具有映射关系的缓存信息,并基于负载均衡算法为所述客户端ID分配第二服务端。


2.根据权利要求1所述的会话处理方法,其特征在于,在基于负载均衡算法为所述客户端ID分配第二服务端之后,还包括:
将客户端ID与被分配的第二服务端的进行信息绑定,并将对应的映射关系存储至缓存区。


3.根据权利要求1所述的会话处理方法,其特征在于,所述方法还包括:
在未查找到反映所述订阅消息中携带的客户端ID与第一服务端的映射关系的信息的情况下,基于负载均衡算法为所述客户端ID分配第三服务端。


4.根据权利要求3所述的会话处理方法,其特征在于,在基于负载均衡算法为所述客户端ID分配第三服务端之后,还包括:
将客户端ID与被分配的第三服务端进行信息绑定,并将对应的映射关系存储至缓存区。


5.根据权利要求1至4中任意一项所述的会话处理方法,其特征在于,所述负载均衡算法为默认负载均衡算法或自定义负载均衡算法。


6.根据权利要求1所述的会话处理方法,其特征在于,所述订阅请求还携带有用户名信息。


7.根据权利要求1所述...

【专利技术属性】
技术研发人员:王臻刘欣魏勇戴岩梁家兴
申请(专利权)人:中国雄安集团数字城市科技有限公司
类型:发明
国别省市:河北;13

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

1