InfoQ|谈谈微服务设计中的 API 网关模式
【InfoQ|谈谈微服务设计中的 API 网关模式】 作者 | Bibek Shah 译者 | 姜雨生 策划 | 田晓旭
根据 Gartner 对微服务的定义:“微服务是范围狭窄、封装紧密、松散耦合、可独立部署且可独立伸缩的应用程序组件 。 ”
与将模块高度耦合并部署为一个大的应用程序相比 , 微服务的目标是将应用程序充分分解或者解耦为松散耦合的许多微服务或者模块 , 这样做对下面几点有很大帮助:
- 每个微服务都可以独立于应用程序中的同级服务进行部署、升级、扩展、维护和重新启动 。
- 通过自治的跨职能团队进行敏捷开发和敏捷部署 。
- 运用技术时具备灵活性和可扩展性
客户端到微服务的连接
本文插图
在考虑客户端与每个已部署的微服务直接通信的问题时 , 应考虑以下挑战:
- 如果微服务向客户端公开了细粒度的 API , 则客户端应向每个微服务发出请求 。 在典型的单页中 , 可能需要进行 多次服务器往返 , 才能满足请求 。 对于较差的网络条件下运行的设备(例如移动设备) , 这可能会更糟 。
- 微服务中存在的 多种通信协议(例如 gRpc、thrift、REST、AMQP 等)使客户端很难轻松采用所有这些协议 。
- 必须在每个微服务中实现 通用网关功能(例如身份验证、授权、日志记录) 。
- 在不中断客户端连接的情况下 , 很难在微服务中进行更改 。 例如 , 在合并或划分微服务时 , 可能需要重新编写客户端部分代码 。
简而言之 , 它的行为就像 API 管理员一样 , 但重要的是不要将 API 管理与 API Gateway 混为一谈 。
本文插图
API 网关的功能 路由 网关封装了底层系统并与客户端分离 , 为客户端提供了与微服务系统进行通信的单个入口点 。
整合 API 网关整合了一些边缘的重复功能 , 无需让每个微服务都实现它们 。 它包括如下功能:
- 认证和授权
- 服务发现集成
- 缓存响应结果
- 重试策略、熔断器、QoS
- 限速和节流
- 负载均衡
- log 日志、链路追踪、关联
- Header、query 字符串 以及 claims 转义
- IP 白名单
- IAM
- 集中式日志管理(服务之间的 transaction ID、错误日志等)
- 身份的提供方 , 验证与授权
本文插图
到底需要多少 BFF BFF 的基本概念是为每种用户体验开发利基后端 。 菲尔·卡尔萨多(PhilCal?ado) 的指导建议是“一种体验 , 一种 BFF” 。 如果跨客户端(IOS 客户端、Android 客户端、Web 浏览器等)的要求有很大差异 , 并且单个代理或 API 的发布时间有严格要求 , 则 BFF 是一个很好的解决方案 。 还应注意 , 更复杂的设计需要复杂的步骤 。
推荐阅读
- 中年|把现场搬到“线上”将服务落到实处 创新交管模式
- 三易生活|剥离传统IT服务,蓝色巨人要转身All in云计算
- 服务|Waymo 向公众提供无人车呼叫服务
- |互联网保险:理赔服务
- 猎云网|医疗大数据分析服务商“脉兴医疗”获树兰俊杰资本千万级投资
- |韩国Humax推出新的移动服务平台
- 智能交通前沿科技|韩国Humax推出新的移动服务平台
- 科学,北斗卫星|北斗卫星系统,是如何做到服务全球的?
- 美军事进行时|【保障追踪】辉固公司赢得美国陆军工程兵团全国性测绘服务合同
- 领先网络|网易企业邮箱服务体系介绍网易企业邮箱服务简介2 售前技术服务3 实施对接服务4 售后维护服务