外部API指的是服务对外提供的公共API
- 难点
- 细粒度API
- 客户端需要多次请求,才能拿到数据,体验不好,效率低
- 调用方的API封装
- 客户端关心了服务端的知识,导致耦合
- 服务端可能采用了不友好的通信机制
- 比如grpc,不太容易让客户端使用
- 细粒度API
API Gateway
-
一个服务,客户端使用微服务的入口点
-
负责请求路由、API组合、身份验证
- 个人觉得API组合还是由专门的API聚合服务来做比较好,这里的API Gateway做通用的操作,单纯的转发请求,身份验证
-
边缘功能
- 身份验证
- 访问授权(权限验证)
- 速率限制
- 缓存
- 请求指标收集
- 请求日志
-
问题
- 职责不明确,需要确定哪些是API Gateway团队负责的
- 有种解决办法:每种客户端都实现单独的API Gateway
- 职责不明确,需要确定哪些是API Gateway团队负责的
-
好处
- 客户端直接与API Gateway通信,提高效率,简化客户端代码
-
弊端
- 可能存在成为开发瓶颈的风险(因为都要经过它)