一 定义
是位于客户端和API之间的一个单点入口 , 它作为反向代理将客户端请求路由到后面的一组API
二 三种模式
1 路由
API Gateway作为反向代理将客户端的请求路由到API , API Gateway作为单点入口对
客户端和API进行解耦
2 聚合
当客户端的某个操作需要调用多个API时 , API Gateway可以把多个API请求聚合为
一个请求
步骤: 客户端发送一个请求到API Gateway
--->>API Gateway分发多个请求到各个API
并且将各个API返回到应答聚合成一个应答返回给客户端
作用: 降低请求交互次数的作用
3 卸载
API Gateway可以卸载API的功能 , 尤其是一些crossing cutting交互功能 , 因此我们
可以在API Gateway单点实现功能 , 而不是在各个API上重复实现 , 尤其是一些专业
性要求高的 , 如安全的实现
三 两种API Gateway产品
1 AWS API Gateway
1)AWS API Gateway支持客户端包括
(1)移动端应用
(2)网页应用
(3)Web服务
2)AWS API Gateway支持后端包括
(1)部署在amazon EC2上的服务
(2)使用 AWS Lambda实现的serverless服务
(3)以及其他部署可以通过公共网络访问的接口
3)API Gateway依托AWS平台及其丰富的组件
(1)基于amazon CloudWatch提供监控相关功能
(2)基于AWS Lzmbda提供Serverless功能
(3)基于AWS CloudTrail提供审计功能
4)配置静态应答
AWS API Gateway可以提供MOCK集成 , 这样 , 只需要确定后端服务的接口定
义 , 即使后端服务没有开发完成 , 也可以通过配置API Gateway的Mock应答 ,
使得客户端的开发和测试可以顺利进行 , 从而解耦了客户端可API的开发测试过
程
5)主要功能
(1)Security and Authorization
—>>AWS API Gateway可以保护后端API免受DDos攻击
—>>通过AWS Cloudtrail记录审计日志并持续监控服务调用情况
—>>通过AWS IAM , AWS COGNITO , AWS SIGNATURE V4等组件提供安全支持
—>>通过AWS Lambda实现可定制的授权访问
—>>通过配置trusted relationship , 以白名单方式进行访问控制
—>>支持客户端调用代码的自动生成 , 包括认证授权的相关代码
(2)Monitoring , Metrics and Logging
—>>AWS API Gateway通过AWS Cloudwatch对API的调用情况 , 性能指标和
错误率进行监控 , 并提供控制面板 , 我们可以通过AWS控制面板监
测API的调用 , API调用延迟 , API集成延迟 , 调用时出现的客户端错
误及服务端错误
—>>针对AWS Cloudwatch提供的日志功能 , AWS API Gateway支持基于部署
阶段和API方法的配置
(3)Throttling and Caching
—>>AWS API Gateway提供缓存及流量管理功能
当请求到达AWS API Gateway , API Gateway首先检查请求资源是否存在于缓
存中 , 如果存在 , 则直接返回缓存中的内容 ; 如果不存在 , 则检查当前的请求
速率 , 如果超过了允许的最大速率则返回HTTP status 429 , 只有速率检查通过 ,
才真正执行后端调用
--->>AWS API Gateway通过缓存后端返回的应答 , 可以有效减少后端调用 ,
通过流量管理 , 可以保护后端API经受峰值流量的考验
--->>AWS API Gateway 支持部署阶段级别的缓存和流量管理配置 , 支持API
方法级别的流量管理配置
(4)Payload Modeling and Transformation
—>>在API Gateway中 , 客户端发送的请求负载格式可能与后端API接受的
请求负载格式不同
同样 , API返回的响应负载可能不同于客户端接受的响应负载
AWS API Gateway 提供映射模板将负载从客户端请求映射到API接收的
请求 , 以及从API响应映射到响应的客户端响应
(5)Native Code Generation
—>>AWS API Gateway 提供自动代码生成功能来生成客户端调用代码
6)AWS API Gateway 的优势
(1)依托于AWS cloudFront的全球边缘网络作为基础设施 , 为API调用提供尽
可能低的网络延迟
(2)基于请求和应答数目计费 , 没有请求则无费用产生
2 Kong API Gateway
1)版本
(1)社区版
特点: 开源的
(2)企业版
2)主要功能
和AWS API Gateway的区别并不大
3)特点
通过插件实现API Gateway的可扩展性 , 我们可以通过配置插件来实现上述的功
能 , 另外除了Kong本身提供的插件 , 我们也可以自定义插件