一个可快速落地的微服务网关架构实现一个可快速落地的微服务网关架构实现
随着应用与技术越来越复杂,无论研发过程或者是运维过程都面临更多困难,为了应对上述困难,马丁提出了微服务概念,这
几年微服务应用逐渐流行开来。微服务应用建设,应当是先建设微服务基础设施,然后在这个基础上拆分应用,可见微服务基
础设施建设是实施微服务的核心,而微服务网关就是其中最重要的微服务基础设施之一。
传统网络层的网关主要作用是链接和协议转换,而微服务网关处于应用层,其主要功能是路由转发,当然在微服务环境中,网
关作为外部请求和内部系统的桥梁(外部网关)或者内部系统之间转发的桥梁(内部网关),一定会面临很多新的挑战。比
如:
请求流量挑战,流量随着时间推移不断增长,或者流量的峰值超出系统处理极
系统稳定性,由于网关关联了多个系统,无论哪个系统出现延迟或者异常都可能导致网关不稳定
微服务网关职责划分,正确的职责划分可以优化整个微服务体系,使得整个系统最优雅
微服务网关分析
从外部环境看微服务网关面对上述挑战,因此需要深入分析。首先面对流量的挑战,导致流量变化可能是正常请求也可能是异
常请求,这时需要系统自动感知到,如果是异常流量而且接近峰值时,能自动降级或者限制该类请求,如果是正常请求则应该
自动扩容,当流量下降后能自动缩容。
其次面对稳定性挑战,导致网关不稳定可能是网关自身问题,也可能是网关依赖的其他系统,因此在网关设计中要加入异常处
理、熔断、监控以及故障转移,从程序到运维多个层面解决稳定性问题。
最后面对职责划分挑战,需要从多个视角收集网关的功能点,其核心功能是路由,辅助功能有:数据安全加解密、业务无关数
据验证,另外网关还可以实现通用业务功能例如计费、用户验证等。
架构设计原则与方法
微服务网关设计与其他系统设计一样,需要按照关注点不同进行分层、分离,关注点分离技术是人们广泛使用的解决复杂问题
的一种系统思维方法。通过上面的分析可知微服务网关包含了核心功能还包含了大量的其他功能,涉及到运维和开发过程,既
包含功能要求也包含非功能要求,因此是个复杂的系统。
为了使系统清晰,把微服务网关分成四层,从下往上分别是运维层、服务治理层层、非核心功能层、核心功能层。在每一层内
部再根据不同的关注点分离,例如在服务治理层又分离成限流、降级、监控三个部分。
微服务网关的架构设计方法,根据微服务网关面对的并发性,以及为了维持自身的高可用性,所以采用以下的方法:监控、负
载均衡、限流与降级、故障转移、集群、自动扩缩容、熔断,才能满足系统设计要求。
架构设计与实现
网关总体架构设计,如上图。上面两层给出了微服务网关的路由功能和路由表管理,下面两层从运维和服务治理指出了如何实