什么是网关?
之前,我一直觉得对这个概念理解的不够清晰,使用了微服务后,大概总结了一下,通俗来讲可以理解如下,某个应用平台一旦需要为外界提供开放接口服务,平台为了对开发的接口做统一管理,权限认证,路由分配等,需要通过某种机制来实现,说白了就是有一道闸口一样的东西,你有通过闸口的权限,就可以进行接口访问,当然,应用平台出于安全考虑,会对不同类别的服务进行更加细致的划分,由此,调用者通过这样的形式调用接口,就形成了网关的概念,这是我个人的理解。
实际工作中那些地方用到网关了呢?
1、nginx
2、微服务模块
nginx一般作为反向代理服务器,提供应用接口访问的第一道关口,不同模块的web端通过配置不同的路由跳转地址访问后端不同的微服务模块,可以理解成网关;
微服务治理中,比如像springcloud,通过zuul进行服务调用,也是属于网关范畴,不同的是,zuul属于本地网关,整体架构简图如下,
为什么要使用微服务网关?
不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求,如果让客户端直接与各个微服务通信,会有以下问题:
1、客户端会多次请求不同的微服务,增加了客户端的复杂性。
2、存在跨域请求,在一定场景下处理相对复杂。<