导图社区 微服务架构设计模式(第八章)
微服务架构设计模式思维导图,详细描述微服务架构的拆分原则及使用方式。
社区模板帮助中心,点此进入>>
安全教育的重要性
个人日常活动安排思维导图
西游记主要人物性格分析
17种头脑风暴法
如何令自己更快乐
头脑风暴法四个原则
思维导图
第二职业规划书
记一篇有颜又有料的笔记-by babe
伯赞学习技巧
微服务架构设计模式
8 外部API模式
8.1 外部API的设计难题
移动应用程序
多次客户端端请求导致用户体验不佳
缺乏封装导致前端开发做出的代码修改影响后端
Web应用程序
在浏览器中运行的JavaScript应用程序
由第三方开发人员编写的应用程序
API组合效率比较低下
由于在第三方因此接口更新比较困难,业务发展过程中需要不停的向下兼容
8.2 API Gateway模式
外部世界进入应用程序的入口点,负责请求路由、API组合和身份验证等各项功能
什么是 API Gateway
请求路由:查询路由映射,将请求映射到对应的服务上
API组合:对外提供不同颗粒度的API
协议转换:将RESTful外部API和内部的gRPC API进行转换
为每个客户端提供他们专用的API
实现边缘功能:身份验证、访问授权、速率控制、缓存、指标收集、请求日志
API Gateway架构
API层
有一个或者多个独立的API模块组成。每个API模块为特定的客户端实现API
公共层:实现共享功能,包括边缘功能,如身份验证
API Gateway模式
所有者模式:API Gateway团队负责公共API研发及运维;其他团队可以控制发布属于自己的API。同事API Gateway的部署流水线必须完全自动化
使用后端前置模式:为每种类型的客户端实现单独的API Gateway
优缺点
优点:封装了应用程序的内部结构,减少了客户端和应用程序之间的往返次数,简化了客户端
缺点:另外一个必须开发、部署和管理的高可用组件,但是存在成为开发瓶颈的风险
API Gateway的设计难题
性能和可扩展性:同步和异步
使用响应式编程抽象编写可维护的代码
处理局部故障
成为应用程序架构中的好公民:确定服务实例的网络位置
API Gateway的实现
AWS API Gateway:不支持API组合
AWS Application Load Balancer:没有实现API组合和身份验证
使用产品化的API Gateway:不支持API组合
使用Netflix Zuul仅仅是基于路径的路由
Spring Cloud Gateway 可以支持API组合
使用GraphQL:使用灵活支持各种客户端