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

2020-05-25  本文已影响0人  白板时钟

外部API的设计难题

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

API Gateway模式

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

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

好处是,封装了应用程序的内部结构。
弊端是,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

上一篇 下一篇

猜你喜欢

热点阅读