微服务为什么要使用网关服务

Posted by Yezhiwei on July 5, 2018

在没有网关服务时,是怎么工作的

不同的微服务一般会有不同的网络地址,但 web 端或 APP 端需要调用多个服务的接口才能完成一个业务需求。在这种客户端直接与各个服务通信的架构时,会有以下问题:

  • 客户端需要维护很多服务的请求地址;
  • 客户端会多次请求不同的微服务,增加了客户端的复杂性;
  • 存在跨域请求,处理相对复杂;
  • 认证复杂,每个服务都需要独立认证;
  • 随着项目的迭代,可能需要重新划分微服务(多个微服务合并成一个或将一个服务拆分成多个),在客户端直接与微服务通信时,重构将会难以实施;

网关服务可以解决以上问题

网关服务是介于客户端和服务端之间的中间层,所有的外部请求都会先经过微服务网关,客户端只须与网关交互,无须直接调用特定微服务的接口。这样客户端开发就得到简化。使用微服务网关有以下优点:

  • 客户端只与网关打交道,不用再考虑哪个功能接口在哪个微服务地址中;
  • 可在微服务网关上进行统一认证,然后再将请求转发到后端的微服务,无须在每个微服务中进行认证;
  • 减少客户端与各个微服务间的交互次数;
  • 易于监控,可以微服务网关中收集监控数据并将其推送到外部系统进行分析;
  • 服务编排;
  • 动态路由,将请求路由到不同的后端集群;
  • 负载分配,并丢弃超过限定值的请求(流程控制);
  • 面向合作伙伴开放 API;

总之,基于这种网关服务可以对 API 统进行一管控,如:认证、鉴权、流量控制、协议转换、监控等等。