美文网首页
《微服务架构设计模式》读书笔记---第八章:外部API模式

《微服务架构设计模式》读书笔记---第八章:外部API模式

作者: 白板时钟 | 来源:发表于2020-05-25 17:32 被阅读0次

外部API的设计难题

让客户端直接调用服务,可行且实现简单。但存在弊端:

  • 效率低,用户体验差。服务API往往颗粒度比较细,客户端需要调用多次API才能检索到需要的数据
  • 封装不足,紧耦合。客户端需要了解每个服务,服务端API接口的改变,会要求客户端一同修改。
  • 客户端使用不便。可能存在防火墙

API Gateway模式

API Gateway服务是外部API客户端进入基于微服务应用程序的入口点,负责请求路由、API组合、协议转换(隐藏微服务应用程序内部多种协议细节)和边缘功能(身份验证、流量监控、速率限制、缓存、指标手机、请求日志等功能)。

边缘功能的实现可以放在三个位置:

  • 后端服务
  • API Gateway
  • API Gateway上游的边缘服务。使用边缘服务,也可以进一步的分割问题。例如身份验证,可以建立Auth服务。

好处是,封装了应用程序的内部结构。
弊端是,1.可能成为开发的瓶颈,2.只有在更新API Gateway之后,才能提供服务的API。

API Gateway的设计难题

在设计API Gateway的时候,需要考虑以下几个问题:

  1. 性能和可扩展性。同步I/O可能会存在线程数量和并发连接数量的上限。异步I/O,更具扩展性,但是更复杂,代码更难编写、理解和调试。
  2. 使用响应式编程。在API组合的时候,需要考虑到调用服务的依赖性。
  3. 处理局部故障。一种方法是,负载均衡器后面运行多个API Gateway服实例,另一种方式是,使用断路器。

不同客户端需要不同的数据

解决这个挑战,可以

  1. 让客户端指定所需要的数据,如利用expand参数,或者基于图形的API框架GraphQL
  2. 后端前置模式,为每个客户端,实现单独的接口。

基于图形的API框架的关键思想是,服务器的API由基于图形的模式组成,。该模式定义了一组节点(类型),他们具有属性(字段)和其他节点的关系。客户端通过,查询图的节点和与其他节点的关系,检索数据。

这种基于图形的API框架的好处是:

  1. 是客户端能够控制返回的数据
  2. API更灵活,可以显著减少开发的工作量。

两种最流行的基于图形的API技术是:GraphQL和Netflix Falcor

相关文章

网友评论

      本文标题:《微服务架构设计模式》读书笔记---第八章:外部API模式

      本文链接:https://www.haomeiwen.com/subject/gcveahtx.html