基于网关,我们可以实现 限流,认证,监控,路由 等功能,这样说,我们可能觉得很生硬,那我们反过来推一下, 假如没有网关会怎么样?
1 :客户端需要访问多个后端服务,则前端得存储多个后端的地址(ip+port+xxx),每次调用之前得先确认接口对应的IP+port , 然后在加上后面的url , 复杂性无疑增加了很多(网关可以动态路由,客户端不需要知道哪个服务部署在哪个机器上,只需要统一访问网关IP+port +后面的url 即可)
2 : 也是基于前面说的,客户端需要访问多个后端服务 , 因为前端和后端不在一同一个机器上,则客户端访问后端则存在跨域访问的问题,每个服务都需要是跨域访问的设置,现在只需要对网关设置一次即可。 .
3 :难以重构,比如我们将某个微服务拆分或者聚合,ip地址发生变化,则对应的客户端都得统一修改。
3: 客户端访问每个后端服务,后端服务都得自己实现认证机制。(统一认证解决的问题)
4: 实现整个系统的监控实现复杂。