文档介绍:一种新型微服务网关架构设计
刘晋强
摘要
微服务架构是当前主流系统平台的基础架构,对企业软件系统集成、开发、维护效率可 大幅提升,随着spring cloud等架构的兴起,基于微服务网关的服务管理模式逐渐成为主 流,微服务网关也逐渐成的集成,提供了完备的通用基础功能。主要针对快速分布式系统开发设计,具有强大 的应用发现和管理能力,Spring Cloud是一种面向云环境的软件架构。
Linkerd设计目标在于简化微服务架构下的运维,处理时间敏感的服务到服务的通信, 能够提供轻量级高性能网络代理,提供微服务框架支撑。提供了负载均衡、熔断机器、服务 发现、动态请求路由、重试和离线、TLS、HTTP网关集成、透明代理、gRPC、分布式跟踪、 运维等诸多功能。
新型微服务网关架构
基本原理为将基于会话的请求/响应服务转变为订阅/发布的消息处理,除了执行实际处 理的扩展应用,系统内部统一采用订阅/发布的消息模式交互,适合于大批量并发应用场景, 采用统一的通信模式和协议,减免了异构网络及通信方式带来的兼容性问题和重复开发。其 核心为MessageBus,也即消息总线,一般采用成熟的消息中间件产品,应用集成框架组织和 关联功能应用,并能通过注入插件到MessageBus的方式监控和管理消息。服务应用,既可 以集成到内部本地调用,也可以扩展到外部系统。
授投认征
i(寄事
轻量设计、弹性扩展
主流微服务网关软件基于成熟软件发展而来,在初始阶段设计精巧、功能单一、性能稳 定,采用插件技术提供了优越的扩展能力,提供更加全面的应用支撑,但随着功能的越来 越多,为了更快适应市场变化满足市场需求,大量引用第三方软件,软件变得也来越复杂。 并且通讯协议、通信数据处理方式等底层技术的更新升级开发和测试工作量也很大;因此, 对于主流微服务网关产品能够长期稳定发展,功能框架的确定性和功能实现的灵活性是很重 要的,而且由于大部分应用项目一旦运营后,往往存在新旧版本过渡、共存等情况,微服务 网关技术的发展,有必要、也有能力对服务的动态切换和多版本并存提供支持。
提升性能
负载均衡技术、服务集群部署等对互联网软件平台并发服务提供近乎完美的支撑,NIO 技术应用是的微服务通信处理能力也大大增强,机器性能提升技术,如硬件性能提升、虚拟 机、内存优化等技术也越来越强大。然而软件逻辑性能的提升对现在及未来仍然很有意义; 减免重复处理、一致的接口协议、优化的功能布局,可大幅降低重复的数据处理,对提高性 能也十分重要。
基于业务场景的支持环境
随着功能需求的增长,微服务网关需要整合的通用功能越来越多,而对于不同的业务场 景,简单的应用领域只需要少量的基础功能,对于复杂的应用领域,现有的微服务网关产品 又远远不能满足需求,插件化的设计有极大的灵活性,同时也造成软件逻辑复杂,配置管理 繁琐。采用针对应用领域的定制化配置,能大幅降低使用难度,同时也能使得软件系统轻量、 稳定。Nginx派系实际上仍在遵循这一原则,基础的、可靠的、高性能的基础功能,配置简 单、使用方便。同时也形成了多种多样的功能集成产品,女Dopenresty、apisix等,然而这 些扩展方案,均是在nginx内部运行,功能扩展的越来越多对运行的可靠性和性能有负面影 响,并且有些插件的变更,需要停机维护。