api-gateway介绍和分析

网关架构模型

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

参考

  • http://www.scienjus.com/api-gateway-and-netflix-zuul/
  • zuul压测和性能优化
    https://mp.weixin.qq.com/s?__biz=MzAxOTg2NDUyOA==&mid=2657554861&idx=1&sn=5de35bd5f46608505eaa4b1a0dc724a3&scene=0#wechat_redirect
  • 全解析
    http://tech.lede.com/2017/05/16/rd/server/SpringCloudZuul/
  • 日志规范
    http://tech.lede.com/2017/06/30/rd/server/loggingHabit/
  • 复杂模型业务处理方式 http://tech.lede.com/2017/02/13/rd/server/ChainOfResponsibilityForActivity/ 【类似注册形式】
api-gateway介绍和分析_第1张图片
image.png

演变

api-gateway介绍和分析_第2张图片
image.png

开源产品

  • kong,go方面的
  • zuul

spring cloud zuul

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

zuul组件

  • ribbon https://yq.aliyun.com/articles/61823 [可选]
  • Hystrix [熔断器 可选]
  • eureka 【注册中心 可选】

zuul整体架构

api-gateway介绍和分析_第3张图片
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和权限方案

  • 网关层进行权限管理 ;
  • 各服务独立实现校验;
  • 校验逻辑实现在各服务上,通过共享数据或者授权中心等方式实现;
  • 参考:https://my.oschina.net/crazyFeng1/blog/867428

协议解析

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

  • 思考
api-gateway介绍和分析_第4张图片
image.png
  • 验证

  • 运维和发布,灰度Fenix

自建网关

你可能感兴趣的:(api-gateway介绍和分析)