您好,欢迎来到刀刀网。
搜索
您的当前位置:首页一种新型微服务网关架构设计

一种新型微服务网关架构设计

来源:刀刀网


一种新型微服务网关架构设计

刘晋强

摘要

微服务架构是当前主流系统平台的基础架构,对企业软件系统集成、开发、维护效率可大幅提升,随着spring cloud等架构的兴起,基于微服务网关的服务管理模式逐渐成为主流,微服务网关也逐渐成为微服务系统架构的核心。本文简单介绍了主流微服务网关产品原理,分析阐述了应用现状和技术特点,开发了简单的原型系统,提出了一种新型微服务网关架构方案。

关键词

微服务架构 微服务网关 网络代理

引言

微服务网关是微服务系统架构的重要组成,微服务系统架构将业务实现模块化、解耦为多个相互的微服务应用,不同的微服务应用采用不同的网络接口,而外部客户端请求事务,往往需要调用多个微服务接口才能完成。微服务网关是介于客户端和服务器端之间的中间层,外部请求经由微服务网关转发。进一步的,负责安全、性能、监控,提高业务灵活性同时确保安全性,并且简化了大型系统平台应用开发。本文介绍了主流微服务网关产品原理,分析了现状和技术特点,提出了一种新型微服务网关架构方案。

微服务网关简介

当前微服务网关产品主要有Nginx、ZUUL、Spring Cloud、Linkerd 等。

Nginx 由内核和模块组成,内核包括基础插件和默认配置,可以直接通过简单配置直接用作代理服务器,设计非常微小和简洁,处理过程清晰、简单,通过配置文件与客户端请求进行 URL 匹配,进而启动不同的模块去完成相应的处理。Nginx 采用异步、非阻塞的方式来处理请求,处理过程不需要阻塞等待,可以同时处理百万级并发的客户端请求。Nginx凭借基础功能简洁、稳定、高性能、高可靠性,在近年来快速增长很快,同时为了满足丰富功能和满足已知需求,衍生了njs、lua、openresty、apisix等多种解决方案和技术。

Zuul是一款主流的开源微服务网关组件,Zuul 的核心是一系列的过滤器。主要实现的功能包括身份认证与安全、审查与监控、动态路由、压力测试、负载分配、静态响应处理、多域弹性等。采用多线程阻塞的方式,这种方式在内部延迟严重、并发请求过多情况下会引起处理性能下降,Zuul2 的采用异步、非阻塞框架,通过事件和回调来处理的,解决了上述问题。

Spring Cloud微服务网关是面向Spring Cloud微服务框架,初期采用zuul扩展,通过组件的集成,提供了完备的通用基础功能。主要针对快速分布式系统开发设计,具有

强大的应用发现和管理能力,Spring Cloud是一种面向云环境的软件架构。

Linkerd 设计目标在于简化微服务架构下的运维,处理时间敏感的服务到服务的通信,能够提供轻量级高性能网络代理,提供微服务框架支撑。提供了负载均衡、熔断机器、服务发现、动态请求路由、重试和离线、TLS、HTTP 网关集成、透明代理、gRPC、分布式跟踪、运维等诸多功能。

新型微服务网关架构

基本原理为将基于会话的请求/响应服务转变为订阅/发布的消息处理,除了执行实际处理的扩展应用,系统内部统一采用订阅/发布的消息模式交互,适合于大批量并发应用场景,采用统一的通信模式和协议,减免了异构网络及通信方式带来的兼容性问题和重复开发。其核心为MessageBus,也即消息总线,一般采用成熟的消息中间件产品,应用集成框架组织和关联功能应用,并能通过注入插件到MessageBus的方式监控和管理消息。服务应用,既可以集成到内部本地调用,也可以扩展到外部系统。

轻量设计、弹性扩展

主流微服务网关软件基于成熟软件发展而来,在初始阶段设计精巧、功能单一、性能

稳定,采用插件技术提供了优越的扩展能力, 提供更加全面的应用支撑,但随着功能的越来越多,为了更快适应市场变化满足市场需求,大量引用第三方软件,软件变得也来越复杂。并且通讯协议、通信数据处理方式等底层技术的更新升级开发和测试工作量也很大;因此,对于主流微服务网关产品能够长期稳定发展,功能框架的确定性和功能实现的灵活性是很重要的,而且由于大部分应用项目一旦运营后,往往存在新旧版本过渡、共存等情况,微服务网关技术的发展,有必要、也有能力对服务的动态切换和多版本并存提供支持。

提升性能

负载均衡技术、服务集群部署等对互联网软件平台并发服务提供近乎完美的支撑,NIO技术应用是的微服务通信处理能力也大大增强,机器性能提升技术,如硬件性能提升、虚拟机、内存优化等技术也越来越强大。然而软件逻辑性能的提升对现在及未来仍然很有意义;减免重复处理、一致的接口协议、优化的功能布局,可大幅降低重复的数据处理,对提高性能也十分重要。

基于业务场景的支持环境

随着功能需求的增长,微服务网关需要整合的通用功能越来越多,而对于不同的业务场景,简单的应用领域只需要少量的基础功能,对于复杂的应用领域,现有的微服务网关产品又远远不能满足需求,插件化的设计有极大的灵活性,同时也造成软件逻辑复杂,配置管理繁琐。采用针对应用领域的定制化配置,能大幅降低使用难度,同时也能使得软件系统轻量、稳定。Nginx派系实际上仍在遵循这一原则,基础的、可靠的、高性能的基础功能,配置简单、使用方便。同时也形成了多种多样的功能集成产品,如openresty、apisix等,然而这些扩展方案,均是在nginx内部运行,功能扩展的越来越多对运行的可靠性和性能有负面影响,并且有些插件的变更,需要停机维护。

基本的思路是,确保底层支持轻量、稳定、可靠的情况下,允许针对行业领域应用,定制不同的应用集成框架,支持插件管理、服务接口、管理控制台等,对典型应用场景业务提供全面的定制化支持。

基于消息/事件的数据处理模式

该微服务网关将请求/相应模式的数据会话,转化为事件/消息模式,异步处理数据,不再使用TCP/UDP/HTTP/HTTPS等基础通信方式,而是直接使用更加可靠、稳定、高效的消息中间件,如Redis、memcache、activeMQ等所提供的方式。这样任何数据处理单元或集群,均无需直接响应消息,而是在处理完消息后,将结果包装为新的消息,北向数据处理完全转变为事件/消息模式,支持序列化处理大批量并发请求。

对于静态资源的请求

接口方式采用支持高并发、高性能的QUIC技术方案,集群服务软件剥离常规、通用功能,只需进行业务数据处理,从而提高处理性能并且能提高开发效率。静态资源的缓存处理在客户端仍然遵循HTTP1.1/HTTP2/HTTP3规定,而在微服务网关处理上采用服务端主动通知的模式,也即资源变化后,服务端发送消息到微服务网关,微服务网关在空闲时自动同步资源,这样大幅降低静态资源的重复传输,并且在静态资源更新后,能够及时更

新。这种策略也可在HTTP1.1/HTTP2.0静态资源传输上,避免静态资源重复传输,并且保证客户端静态资源最新,然而实现起来相对复杂。

总结

微服务网关是微服务系统平台架构的重要组成,将业务实现模块化、解耦为多个相互的微服务应用,该设计方案中,将请求/响应模式的会话通信,转化为事件/消息模式,直接采用可靠、稳定、高效的消息中间件产品构建消息总线异步处理数据,高并发处理能力依赖于NIO模式的并发访问数量和基本消息处理逻辑,不依赖于扩展功能,对于实现高性能、高可靠性产品很有意义。对于全新开发的系统,能够提供更高性能、可靠性、灵活性和稳定性。然而既有产品难以迁移适配,仍然需要进一步交流、探索、发展才能形成优秀产品。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.com 版权所有 湘ICP备2022005869号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务