基于MQ的动态数据网关通信方法技术

技术编号:39253063 阅读:10 留言:0更新日期:2023-10-30 12:04
本发明专利技术公开了一种基于MQ的动态数据网关通信方法,涉及计算机数据处理技术领域,共包括10个步骤,与现有技术相比,提供了基于MQ的动态数据网关通信方法,本申请将http协议和MQ协议相结合,在数据库通讯过程中兼具速度和私密性,解决现有技术中http协议和MQ协议混合通信繁琐、复杂的问题,广泛适用于各种公共服务平台对外通讯的接口,本发明专利技术可动态管理对外接口,实现接口转发、拦截、负载均衡等功能。负载均衡等功能。

【技术实现步骤摘要】
基于MQ的动态数据网关通信方法


[0001]本专利技术涉及计算机数据处理
,尤其涉及一种MQ动态网关通信方法。

技术介绍

[0002]MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),作为除Modbus外最常用的协议之一,因其基于发布/订阅的模式,具有资源消耗少、效率高的优势,从而受到行业内的广泛使用。MQTT网关是一个可以在两个以上的节点之间通信的新型网关。MQTT网关可以将信号分别与主机与服务器之间的通信分离出来。MQTT网络节点之间通过互连来实现双向通信。在正常情况下,这两个节点的通信是通过一个或者多个互连(即 LSI/LRL)的连接进行的,即 HTPC (Hyper

to

PC)交换信息的方式。这两种形式的互连使用一个串行通信协议 RTMQ来实现,这样就可以用RTMQT

based接口与其他网络节点进行通信。因为整个网络并不是并行的(通过 MQTT网关可以实现并行数据交换),因此当需要使用多个节点时就需要通过多个互连网关去完成通信。
[0003]网络上对外提供接口多数以http请求为主,因此主要流程为:第三方发起请

网关根据不同的请求地址判断启用的拦截器(可动态配置不同接口启用不同的拦截器)

拦截器执行

MQ通过不同的请求地址转发到不同的路由

后台服务监听对应业务的路由处理业务,返回结果发送至MQ(相同服务监听同一个路由地址可以起到负载均衡的作用)

拦截器执行返回结果相关操作

将结果返回给第三方。但是MQ属于发布订阅模式,MQ监听业务处理的返回结果的线程与第三方发起的http请求的线程不是同一个,属于不同的技术体系,http请求属于同步操作,一个请求需要一个对应的执行结果,而MQ监听返回结果属于被动监听,与http请求分属不同线程,这使得整个通讯流程非常繁琐、复杂,并出现延迟。

技术实现思路

[0004]本专利技术针对现有技术中的不足,提供了基于MQ的动态数据网关通信方法,本申请将http协议和MQ协议相结合,在数据库通讯过程中兼具速度和私密性,解决现有技术中http协议和MQ协议混合通信繁琐、复杂的问题,广泛适用于各种公共服务平台对外通讯的接口,本专利技术可动态管理对外接口,实现接口转发、拦截、负载均衡等功能。
[0005]为了解决上述技术问题,本专利技术通过下述技术方案得以解决:基于MQ的动态数据网关通信方法,包括以下几个步骤:步骤1:第三方通过http协议向网关发送调用接口请求,第三方调用接口前需要进行身份验证;步骤2:网关接收到请求后封装请求信息,封装完请求信息后需要执行前置插件,需要执行的插件以平台的对应资源请求的配置为准,执行完前置功能插件以后,将封装的请求信息序列化通过MQ发送给业务端服务;步骤3:MQ发送成功后,判断当前请求为异步请求还是同步请求,如果是异步请求需要返回请求ID作为结果以便第三方通过请求ID查询执行结果,如果是同步请求则需要堵塞当前线程等待MQ返回业务端的执行结果,请求ID作为线程等待的锁对象;步骤4:业务端监听MQ对应的请求信息,业务端收到MQ请求信息后执行对应的业务操作,业务端服务可以同时部署多个监听统一MQ队
列实现业务的负责均衡来减轻服务压力提高执行效率,如果同一个业务端服务同时提供多个资源的服务,那么需要实现多个MQ的监听器监听多个不同的队列,不同的队列分别绑定不同的MQ路由;步骤5:业务端执行完结果后封装结果数据,然后通过MQ发送回网关;步骤6:网关监听来自MQ的业务端返回结果,执行对应资源的后置插件,可通过插件对返回结果进行处理;步骤7:执行完后置插件后,将结果信息放入到数据池中;步骤8:返回数据放入数据池后,通过请求ID唤醒对应的http请求线程,请求ID在返回结果中获取;步骤9:http请求线程被唤醒后,通过请求ID获取数据池中的返回结果;步骤10:将获取到的数据返回给第三方。
[0006]优选的,上述技术方案中,在步骤1中,第三方需要在平台进行注册获取相应appKey和appSecret,然后通过appKey和appSecret调用token接口获取token,第三方发送调用接口请求时需在请求头中带上token,平台根据token判断第三方是否具有权限调用相关接口。
[0007]优选的,上述技术方案中,在步骤2中,封装的字段主要有:请求ID

messageId、请求地址

url、请求方式

method、请求头

headers、请求体

body。
[0008]优选的,上述技术方案中,在步骤2中,封装的请求信息序列化通过MQ的topic模式发送,MQ的路由地址为资源编码

resourceCode。
[0009]优选的,上述技术方案中,在步骤5中,封装的结果数据主要有:消息ID、返回数据,其中消息ID可以在请求信息中找到。
[0010]优选的,上述技术方案中,在步骤6中,插件对返回结果可进行如下处理:数据脱敏、数据加密、数据缓存、日志记录,具体需要执行哪些插件可通过平台针对不同的资源一一配置。
[0011]优选的,上述技术方案中,在步骤7中,当前监听MQ返回结果执行线程和http请求线程不是同一个,无法直接将返回数据传给http请求线程,需要公共的数据池暂存返回结果。
[0012]优选的,上述技术方案中,在步骤9中,如果等待超时还未被唤醒,那么将无法获取到返回结果,因为数据没有被存入数据池中,获取返回结果后,删除数据池中的返回数据释放存储空间。
[0013]HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。客户与服务器之间的HTTP连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回本次请求的应答后便立即关闭连接,下次请求再重新建立连接。故服务器不会让一个连接处于等待状态,及时地释放连接可以大大提高服务器的执行效率。但HTTP协议是纯文本协议,没有任何加密措施。通过HTTP协议传输的数据都可以在网络上被完全监听。因为在访问部分数据库时需要采用更具私密性的MQ协议,但是MQ协议适用于分布式计算环境或异构系统之中,MQ协议中消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走,通过消息队列,应用程序可独立地执行。但是MQ协议访问数据库时速度慢,因此本申请采用HTTP和MQ结合的方式访问数据库,在整个通讯的过程中既能保证访问的速度,又能保证数据传输的私密。
[0014]在本申请中主要通讯结构包括数据开放平台(以下简称平台)和数据网关(以下简称网关)。平台的主要功能是实现对外服务提供对外接口资源(本质是http请求)的管理,例
如:教育行业的数据开放平台可以提供学校教师学生等信息查询的接口、医疗行业数据开放平本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于MQ的动态数据网关通信方法,其特征在于,包括以下几个步骤:步骤1:第三方通过http协议向网关发送调用接口请求,第三方调用接口前需要进行身份验证;步骤2:网关接收到请求后封装请求信息,封装完请求信息后需要执行前置插件,需要执行的插件以平台的对应资源请求的配置为准,执行完前置功能插件以后,将封装的请求信息序列化通过MQ发送给业务端服务;步骤3:MQ发送成功后,判断当前请求为异步请求还是同步请求,如果是异步请求需要返回请求ID作为结果以便第三方通过请求ID查询执行结果,如果是同步请求则需要堵塞当前线程等待MQ返回业务端的执行结果,请求ID作为线程等待的锁对象;步骤4:业务端监听MQ对应的请求信息,业务端收到MQ请求信息后执行对应的业务操作,业务端服务可以同时部署多个监听统一MQ队列实现业务的负责均衡来减轻服务压力提高执行效率,如果同一个业务端服务同时提供多个资源的服务,那么需要实现多个MQ的监听器监听多个不同的队列,不同的队列分别绑定不同的MQ路由;步骤5:业务端执行完结果后封装结果数据,然后通过MQ发送回网关;步骤6:网关监听来自MQ的业务端返回结果,执行对应资源的后置插件,可通过插件对返回结果进行处理;步骤7:执行完后置插件后,将结果信息放入到数据池中;步骤8:返回数据放入数据池后,通过请求ID唤醒对应的http请求线程,请求ID在返回结果中获取;步骤9:http请求线程被唤醒后,通过请求ID获取数据池中的返回结果;步骤10:将获取到的数据返回给第三方。2.根据权利要求1所述的基于MQ的动态数据网关通信方法,其特征在于,在步骤1中,第三方需要在平台进行注册获取相应appKey和appSecret,然后通过appKey和appSecret调用token接口获...

【专利技术属性】
技术研发人员:钱凯杨雄周康盈
申请(专利权)人:宁波鑫义信息科技有限公司
类型:发明
国别省市:

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

1