美文网首页Spring Boot
api-gateway介绍和分析

api-gateway介绍和分析

作者: jey恒 | 来源:发表于2017-07-12 22:05 被阅读858次

    网关架构模型

    • 没有网关之前,面对后端服务,前端要对接n个系统
    • 没有统一入口所以,鉴权,监控,熔断等都要重复实现

    参考

    image.png

    演变

    image.png

    开源产品

    • kong,go方面的
    • zuul

    spring cloud zuul

    • 功能
      动态路由
      监控
      安全
      认证鉴权
      压力测试
      金丝雀测试
      审查
      服务迁移
      负载剪裁
      静态应答处理
    • 可扩展性
    • 鉴权,监控,路由,灰度
    • 如何快速落地到我们的业务中

    zuul组件

    zuul整体架构

    image.png

    流程分析

    • @EnableZuulServer 普通网关,只支持基本的route与filter.
    • @EnableZuulProxy 配合上服务发现与熔断开关的上面这位增强版,具有反向代理功能 【我们需要的】

    zuul filter

    • PreDecorationFilter:该过滤器根据提供的RouteLocator确定路由到的地址,以及怎样去路由。该路由器也可为后端请求设置各种代理相关的header。

    • RibbonRoutingFilter:该过滤器使用Ribbon,Hystrix和可插拔的HTTP客户端发送请求。serviceId在RequestContext.getCurrentContext().get("serviceId") 中。该过滤器可使用不同的HTTP客户端,例如

    Apache HttpClient:默认的HTTP客户端
    Squareup OkHttpClient v3:如需使用该客户端,需保证com.squareup.okhttp3的依赖在classpath中,并设置ribbon.okhttp.enabled = true 。
    Netflix Ribbon HTTP client:设置ribbon.restclient.enabled = true 即可启用该HTTP客户端。需要注意的是,该客户端有一定限制,例如不支持PATCH方法,另外,它有内置的重试机制。

    • SimpleHostRoutingFilter:该过滤器通过Apache HttpClient向指定的URL发送请求。URL在RequestContext.getRouteHost() 中。

    动态路由【避免网关发版本】【灰度】(api-getway admin or restapi)

    • 继承SimpleRouteLocator 类 重载locateRoutes方法
    • 获取请求上下文得到用户id,根据redis或者db配置规则 进行路由转发到特定的机器
    • 如何上线【walle上简单操作分开发特定机器结合开发手动更新路由】实现简单灰度方案

    微服务中sso和权限方案

    协议解析

    如何在现有业务系统中落地

    • 思考
    image.png
    • 验证

    • 运维和发布,灰度Fenix

    自建网关

    相关文章

      网友评论

        本文标题:api-gateway介绍和分析

        本文链接:https://www.haomeiwen.com/subject/ukmnqxtx.html