一种基于MQTT协议的反向代理系统技术方案

技术编号:34775541 阅读:69 留言:0更新日期:2022-08-31 19:46
本发明专利技术公开了一种基于MQTT协议的反向代理系统,包括公网和内网;所述公网中部署有Broker集群和公网物理网系统,所述公网物联网管理系统作为Pub l i sher接入到Broker集群中,同时作为公网Subscr i ber订阅一个回应消息的Top i c;所述内网中部署有内网物联网管理系统和代理模块,所述代理模块作为内网Subscr i ber接入到Broker集群中,且订阅内网物联网管理系统的Top i c;通过该反向代理系统,公网能够直接访问内网HTTP服务。优点是:采用MQTT协议作为通信协议基础通道,整体系统开销非常小,并且MQTT提供了TLS加密,通信的安全性也得到了保证。性也得到了保证。性也得到了保证。

【技术实现步骤摘要】
一种基于MQTT协议的反向代理系统


[0001]本专利技术涉及内外网物联网管理系统间信息交付、反向代理
,尤其涉及一种基于MQTT协议的反向代理系统。

技术介绍

[0002]随着信息安全和网络安全的要求越来越高,特别是在学校内使用的物联网管理系统,都是部署校园网络中,只能在校内局域网使用,但是通过公网进行远程管理是刚需。
[0003]常见的内网穿透技术,比如SSH、花生壳、VPN等,都可以实现内网系统的服务映射到公网访问的效果,但是这些技术存在一些问题:比如系统资源开销过大、商用的费用过高、甚至因为网络安全原因被禁止使用等。
[0004]因此,需要有一个轻量级的技术来实现内网穿透,既能满足安全需求,又能将内网的接口反向代理到公网使用,还能够方便后续扩展。

技术实现思路

[0005]本专利技术的目的在于提供一种基于MQTT协议的反向代理系统,从而解决现有技术中存在的前述问题。
[0006]为了实现上述目的,本专利技术采用的技术方案如下:
[0007]一种基于MQTT协议的反向代理系统,包括公网和内网;
[0008]所述公网中部署有Broker集群和公网物理网系统,所述公网物联网管理系统作为Publisher接入到Broker集群中,同时作为公网Subscriber订阅一个回应消息的Topic;
[0009]所述内网中部署有内网物联网管理系统和代理模块,所述代理模块作为内网Subscriber接入到Broker集群中,且订阅内网物联网管理系统的Topic;
[0010]通过该反向代理系统,公网能够直接访问内网HTTP服务;访问的具体过程为:
[0011]S1、公网物理网系统负责对外提供统一业务,将HTTP请求消息基于MQTT协议通过Publisher发送到目标内网物理网系统的Topic,并且在该HTTP请求消息中指定回应消息的Topic,之后进入等待回应消息模式;
[0012]S2、Broker集群接收到Publisher发送来的HTTP请求消息之后,将HTTP请求消息发送给代理模块;
[0013]S3、代理模块在接收到Broker集群发送的HTTP请求之后,解析HTTP请求消息内容,并向内网物联网管理系统发起HTTP请求消息;
[0014]S4、内网物联网管理系统收到HTTP请求消息后进行处理,并向代理模块返回处理结果;
[0015]S5、代理模块接收到处理结果后,作为Publisher的角色向Broker集群发送一个回应消息,该回应消息的目的Topic为公网物理网管理系统发送的HTTP请求消息中携带的目的Topic;
[0016]S6、Broker集群接收到Publisher发送来的回应消息后,将回应消息转发到公网
Subscriber;
[0017]S7、公网物联网管理系统接收到回应消息后,返回数据给前端;进而实现公网直接访问内网HTTP服务。
[0018]优选的,采用Topic规则设计Topic,所述Topic规则具体为,将Topic设计为4级分层规则,每一层的定义为节点类型/消息类型/节点ID/消息ID;
[0019]节点类型:用于区分该节点是内网物联网管理系统的节点、公网服务节点、设备节点;通过节点类型获知消息节点主体;
[0020]消息类型:对于每个节点来说,将该节点接收到的所有消息,消息包括输入消息、输出消息和响应消息;
[0021]节点ID:每个接入Broker集群的节点具有唯一的节点ID,通过节点ID进行唯一性识别,进而实现消息的定点发送;
[0022]消息ID:表示Topic内承载具体消息的ID,通过消息ID能够明确消息的格式,从而进行业务处理;将消息ID放入Topic中,能够通过解析Topic识别消息函数的处理。
[0023]优选的,消息类型中,
[0024]输入消息:表示其他节点主动发给该节点的请求消息;所有的节点在接入Broker集群之后,都需要订阅Topic,从而订阅输入消息;
[0025]输出消息:表示当前节点主动对外推送的消息;由于当前节点不关注是有其他节点关注这些信息,所以这些消息统一对外推送即可,由其他节点根据业务需求自行订阅输出消息;
[0026]响应消息:表示当前节点主动请求其他节点后,其他节点回应的消息;所有响应消息统一发布到Topic中,节点根据当前业务需求明确是否需要订阅响应消息。
[0027]优选的,在所述MQTT协议中增加4字节的协议头,该协议头中包含协议头版本号、是否请求消息、消息SequenceID、消息处理错误码;
[0028]协议头版本号:表示解析协议头的版本号,为后续调整协议头预留;
[0029]是否请求消息:对于请求消息,需要将该bit位设置为1,对于回应消息,设置为0;
[0030]消息SequenceID:表示同一个节点对外发送消息的序列号,每次发送消息的时候,自动加1,允许翻转;在收到请求消息并且处理之后,需要将回应消息的SequenceID设置为请求消息的SequenceID值,然后返回数据;请求方根据回应消息的SequenceID明确该回应消息应该响应给哪个同步调用;
[0031]消息处理错误码:表示收到请求消息之后进行处理,如果处理中出现特殊异常,需要回应错误消息给对方;
[0032]优选的,在加入Topic规则以及协议头之后,公网直接访问内网HTTP服务的具体过程为:
[0033]A1、公网AIP服务初始化一个UUID启动,初始化MQTT Client,并且订阅a/i/uuid1/#和a/r/uuid1/#这两个Topic;
[0034]A2、代理模块获取内网物联管理系统的UUID,初始化MQTT Client,并且订阅s/i/uuid2/#以及s/r/uuid2/#这两个Topic;
[0035]A3、公网API收到API请求后,查询内网物联网管理系统的UUID得到uuid2,调用底层库通过Publisher发送HTTP请求消息给Broker集群;
[0036]A4、Broker集群收到Publisher发送的HTTP请求消息之后,将HTTP请求消息发送给代理模块;
[0037]A5、代理模块在收到来自Broker集群的HTTP请求消息之后,由底层库统一处理;
[0038]A6、代理模块的上层服务通过注册的函数进行处理,识别HTTP请求消息,然后调用内部的Web服务接口;
[0039]A7、Web服务接口处理HTTP请求消息,然后将处理结果返回给底层库,由底层库统一回应消息;
[0040]A8、Broker集群收到Publisher发送的回应消息之后,将回应消息转到公网Subscriber;
[0041]A9、公网API服务收到来自a/r/uuid1/#的回应消息,底层库统一处理Topic并且识别是回应消息后,获取回应消息的SequenceID,查询该Seq本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于MQTT协议的反向代理系统,其特征在于:包括公网和内网;所述公网中部署有Broker集群和公网物理网系统,所述公网物联网管理系统作为Publisher接入到Broker集群中,同时作为公网Subscriber订阅一个回应消息的Topic;所述内网中部署有内网物联网管理系统和代理模块,所述代理模块作为内网Subscriber接入到Broker集群中,且订阅内网物联网管理系统的Topic;通过该反向代理系统,公网能够直接访问内网HTTP服务;访问的具体过程为:S1、公网物理网系统负责对外提供统一业务,将HTTP请求消息基于MQTT协议通过Publisher发送到目标内网物理网系统的Topic,并且在该HTTP请求消息中指定回应消息的Topic,之后进入等待回应消息模式;S2、Broker集群接收到Publisher发送来的HTTP请求消息之后,将HTTP请求消息发送给代理模块;S3、代理模块在接收到Broker集群发送的HTTP请求之后,解析HTTP请求消息内容,并向内网物联网管理系统发起HTTP请求消息;S4、内网物联网管理系统收到HTTP请求消息后进行处理,并向代理模块返回处理结果;S5、代理模块接收到处理结果后,作为Publisher的角色向Broker集群发送一个回应消息,该回应消息的目的Topic为公网物理网管理系统发送的HTTP请求消息中携带的目的Topic;S6、Broker集群接收到Publisher发送来的回应消息后,将回应消息转发到公网Subscriber;S7、公网物联网管理系统接收到回应消息后,返回数据给前端;进而实现公网直接访问内网HTTP服务。2.根据权利要求1所述的基于MQTT协议的反向代理系统,其特征在于:采用Topic规则设计Topic,所述Topic规则具体为,将Topic设计为4级分层规则,每一层的定义为节点类型/消息类型/节点ID/消息ID;节点类型:用于区分该节点是内网物联网管理系统的节点、公网服务节点、设备节点;通过节点类型获知消息节点主体;消息类型:对于每个节点来说,将该节点接收到的所有消息,消息包括输入消息、输出消息和响应消息;节点ID:每个接入Broker集群的节点具有唯一的节点ID,通过节点ID进行唯一性识别,进而实现消息的定点发送;消息ID:表示Topic内承载具体消息的ID,通过消息ID能够明确消息的格式,从而进行业务处理;将消息ID放入Topic中,能够通过解析Topic识别消息函数的处理。3.根据权利要求2所述的基于MQTT协议的反向代理系统,其特征在于:消息类型中,输入消息:表示其他节点主动发给该节点的请求消息;所有的节点在接入Broker集群之后,都需要订阅Topic,从而订阅输入消息;输出消息:表示当前节点主动对外推送的消息;由于当前节点不关注是有其他节点关注这些信息,所以这些消息统一对外推送即可,由其他节点根据业务需求自行订阅输出消息;响应消息:表示当前节点主动请求其他节点后,其他节点回应的消息;所有响应消息统
一发布到Topic中,节点根据当前业务需求明确是否需要订阅响应消息。4.根据权利要求3所述的基于MQTT协议的反向代理系统,其特征在于:在所述MQTT协议中增加4字节的协议头,该协议头中包含协议头版本号、是否请求消息、消息SequenceID、消息处理错误码;协议头版本号:表示解析协议头的版本号,为后续调整协议头预留;是否请求消息:对于请求消息,需要将该bit位设置为1,对于回应消息,设置为0;消息SequenceID:表示同一个节点对外发送消息的序列号,每次发送消息的时候,自动加1,允许翻转;在收到请求消息并且处理之后,需要将回应消息的SequenceID设置为请求消息...

【专利技术属性】
技术研发人员:刘光华汪洋杨元松
申请(专利权)人:深圳市艾迪思特信息技术有限公司
类型:发明
国别省市:

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

1