[微服务]API网关(API Gateway)

工作中使用了微服务架构,接下来的一段时间里,我会写一系列的文章来介绍微服务架构,同时我也会在github上写一个microservices的应用框架(地址会在后续文章给出)。

这篇文章主要讲述了微服务架构中的API Gateway。

翻译和整理自:

  • http://microservices.io/patterns/apigateway.html

一、问题

微服务架构应用的客户端如何访问个体的service?

二、强制条件

  • 微服务提供的API的粒度与客户端所需要的不一样。微服务一般提供细粒度的API, 意味着客户端需要与多个服务进行交互。

  • 不同的客户端需要不同的数据。比如说,桌面浏览器比手机版本的APP需要更细粒度的数据。

  • 服务的数量和地址动态改变。

  • 服务的分割会随着时间改变,这对于客户端应该是隐藏的。

三、解决方案

实现一个API Gateway, 这是所有客户端的唯一入口点。

API Gateway用两种方式来处理请求,一种是直接把请求转发到合适的service,另一种是写一些业务逻辑,跨多个service。

与一刀切的API对应的是,API Gateway可以暴露给不同的客户端不同的API。API Gateway也可以实现安全机制,验证客户端是被授权的。

示例:

四、结果

优点:

  • 把客户端与应用是怎么分割成微服务相隔离
  • 客户端不需要知道service实例的地址
  • 提供给不同的客户端优化的API
  • 减少请求环路、简化客户端逻辑。比如说,API Gateway使得客户端用一次请求就可以从多个service处获取数据。

缺点:

  • 增加了复杂性

应用场景举例:

猜你喜欢

转载自blog.csdn.net/qq_35394891/article/details/82962338