:::tips 为什么要使用网关:

    • 不同的微服务一般有不同的网络地址,而外部的客户端可能需要调用多个服务的接口才能完成一个业务需求,比如一个电影购票的手机APP,可能会调用电影分类微服务、用户微服务、支付微服务等,如果客户端直接和微服务进行通信,会存在以下问题:
      • 客户端会多次请求不同微服务,增加客户端的复杂性
      • 存在跨域请求,在一定场景下处理相对复杂
      • 认证复杂,每一个服务都需要独立认证
      • 难以重构,随着项目的迭代,可能需要重新划分微服务,如果客户端直接和微服务通信,那么重构会难以实施
      • 某些微服务可能使用了其他协议,直接访问有一定困难

    上述问题,都可以借助微服务网关来解决,微服务网关是介于客户端和服务器端之间的中间层,所有的外部请求都会先经过微服务网关
    image.png ::: :::tips 什么是SpringCloudGateway?

    • SpringCloudGateway是SpringCloud生态系统中的网关,目标是替代Netflix Zuul,Zuul是基于Servlet的实现,属于阻塞式编程,而SpringCloudGateway则是基于Spring5中提供的WebFlux,属于响应式编程的实现,具备更好的性能
    • SpringCloudGateway本身就是一个微服务 ::: :::tips SpringCloudGateway的作用:

    • 身份认证和安全:识别每一个资源的验证要求,并拒绝那些不符的请求(服务鉴权)

    • 审查与监控
    • 动态路由:动态将请求路由到不同后端集群
    • 压力测试:逐渐增加指向集群的流量,以了解性能
    • 负载均衡:为每一种负载类型分配对应容量,并弃用超出限定值的请求 :::