什么是 API Gateway?
API Gateway 是微服务架构体系中的一类型特殊服务,它是所有微服务的入口,它的职责是执行路由请求、协议转换、聚合数据、认证、限流、熔断等。
一个系统可以有一个或多个 API Gateway,例如
Gateway 职责之1: 请求路由和版本控制
API Gateway 是微服务的入口,可以根据不同的请求路由到不同的 microservice 上,也可以在 Gateway 上进行路由的版本控制,这样即使后端 microservice 发生了变化,Gateway 的路径依然可以不改变。
Gateway 职责之2: 方便单体应用到微服务的过渡
借助 Gateway 你可以很方便的在 Gateway 之后部署不同的服务,也就是可以同时存在两种不同的服务,这样可以帮助单体应用向微服务渐进式的演化。
Gateway 职责之3: 权限认证
不同的服务之间常常有一些共有的逻辑需要处理,比如权限认证,由于 Gateway 恰巧在各个微服务的前端,可以在 Gateway 实现权限的认证,比如可以在 Gateway 层实现 cookie 或 token 的认证。
Gateway 职责之4: 数据聚合
由于不同的客户端往往需要的数据完全不同,而这些数据又是不同的 service 提供的,借助 Gateway 我们可以方便完成来自不同 service 的数据聚合,以达到根据不同 client 进行数据定制的目的
Gateway 职责之5: 协议转换
鉴于不同的团队采用的数据协议可能完全不同,Gateway 可以根据场景需要对不同的微服务之间进行协议转换。
Gateway 职责之6: 缓存和限流
Gateway 可以做限流和缓存
常见的 API Gateway 开源解决方案
转载自 http://www.do1618.com/archives/783/
Tyk
Go 实现,有企业版和社区版
kong
Github地址 nginx + lua (openresty)
当前版本:Kong 0.9.5 文档
api-umbrella
nginx + lua (openresty)
- apiumbrella分析—Revisiting, speeding up, and simplifying API Umbrella’s architecture
- apiumbralla同类产品分析
apiaxle
Node.js 实现
Netflix zuul
WSO2 API Manager
OpenSource, Java