1.背景
浅析如何设计一个亿级网关
1.1 什么是API网关
API网关可以看做系统与外界联通的入口,我们可以在网关进行处理一些非业务逻辑的逻辑,比如权限验证,监控,缓存,请求路由等等。
1.2 为什么需要API网关
RPC协议转成HTTP。
请求路由
统一鉴权
统一监控
流量控制,熔断降级
1.3 统一API网关
统一技术组件升级
统一服务接入
节约资源
2.统一网关的设计
2.1 异步化请求
Tomcat/Jetty+NIO+servlet3
Netty+NIO
2.1.1 全链路异步
2.2 链式处理
在我们的各个框架中对此模式都有实现,比如servlet里面的filter,springmvc里面的Interceptor。
在Netflix Zuul中也应用了这种模式
这种模式在网关的设计中我们可以借鉴到自己的网关设计:
preFilters:前置过滤器,用来处理一些公共的业务,比如统一鉴权,统一限流,熔断降级,缓存处理等,并且提供业务方扩展。
routingFilters: 用来处理一些泛化调用,主要是做协议的转换,请求的路由工作。
postFilters: 后置过滤器,主要用来做结果的处理,日志打点,记录时间等等。
errorFilters: 错误过滤器,用来处理调用异常的情况。
2.3 业务隔离
2.3.1 信号量隔离
2.3.2 线程池隔离
2.3.3 集群隔离
2.4 请求限流
2.5 熔断降级
2.6 泛化调用
2.7 管理平台