单体转向微服务架构-网关篇(一)


背景

如果我们打开天猫APP想购买一件商品,从搜索、商品展示、购物车、下单、支付、订单中心、物流详情等等一系列的功能,前台一气呵成,用户不需要关心后端到底做了什么,但是后端可能会调用不同的服务才能完成这一系列的操作需求。

如果客户端直接和微服务进行通信,会存在以下诸多问题:

  • 客户端会多次请求不同微服务,增加客户端的复杂性
  • 存在跨域请求,在一定场景下处理相对复杂(特别是分布式session认证)
  • 每一个微服务都需要独立认证逻辑、无疑增加了复杂度和重复工作
  • 难以重构,随着项目的迭代,可能需要重新划分微服务,如果客户端直接和微服务通信,那么重构会难以实施

网关

于是微服务网关应运而生,以上问题,都可以通过网关解决。网关是介于客户端和多个微服务的中间层,所有的客户端请求都会先经过网关,如下图所示:

API网关.png

Zuul介绍

Zuul是从设备和网站到Netflix流应用的后端的所有请求的前门。 作