论文部分内容阅读
随着物联网技术和微服务架构的快速发展,越来越多的基于Mina框架的现场终端设备需要通过TCP通信机制与基于HTTP通信的Spring Cloud微服务系统进行数据交互。而网关Zuul作为外部设备访问微服务系统的唯一入口,并不具备对Mina客户端传送过来的TCP请求进行路由转发的功能,因此本文对服务网关Zuul进行了TCP通信功能扩展。为了保障服务网关Zuul在高并发下的稳定性,结合令牌桶算法实现了限流策略,但该策略无法确保核心服务在高并发情况下的高可用性,并且限流开关无法动态更新,为此本文提出了相应的改进方法并进行了实验分析。主要研究工作内容如下:(1)针对服务网关Zuul不支持TCP通信机制的问题,本文对网关Zuul进行了TCP功能扩展,其主要工作内容分为三个方面:1)由于网关Zuul并没有与Mina客户端建立连接的功能,本文设计了Mina服务器的通信框架,并通过接口实现的方式构建了Zuul-Mina服务器,成功与Mina客户端建立了通信连接;2)为了解决Mina客户端与微服务实例之间存在通信协议不同的问题,本文设计了Mina客户端与微服务实例之间的通信流程,并通过自定义通信协议及编解码器实现了协议转换;3)对于协议转换后的请求,Zuul-Mina服务器并不具备将其转发到具体的服务实例上的消息代理功能。因此本文通过构建请求转发类,对解析之后的请求进行了重构,并将重构后的请求通过负载均衡转发到了具体的服务实例上。(2)针对网关Zuul使用令牌桶算法进行限流操作时,存在着无法保障核心服务在高并发情况下的可用性的缺陷,提出了基于URI配置文件的拦截策略,该策略能够对核心URI与非核心URI进行不同的过滤处理,并通过自定义网关过滤器将该拦截策略应用到传统令牌桶算法中,实现了令牌桶算法能够针对不同请求采取不同限流操作的改进,保障了核心服务在高并发下的可用性。该限流策略存在的另一个缺陷在于限流功能的开启与关闭之间的切换,只能通过修改配置文件并重启网关服务来实现,无法做到动态的更新。因此本文在改进的限流策略基础上,通过在自定义的限流过滤器中设置不同的时间段来开启和关闭过滤器,实现了限流开关的动态更新。(3)对服务网关Zuul的TCP功能扩展进行了功能性测试,通过测试结果分析扩展的TCP通信功能能够正常工作。对改进的限流算法进行功能测试和性能测试,并与传统的令牌桶算法进行实验对比,分析了改进的令牌桶算法在核心服务的请求响应时间上具有明显的性能优势。对限流开关的动态更新进行功能测试,验证了其有效性。