网关的理解与微服务网关
参考地址:https://developer.aliyun.com/article/1002990
https://www.bilibili.com/read/cv22904284/
一:什么是网关
1.网关简介
网关是系统的唯一对外的入口,介于客户端和服务器端之间的中间层,处理非业务功能,提供路由请求、鉴权、监控、缓存、限流等功能。无论你查看任何一个微服务项目架构,你都会发现在客户端和服务器端之间有一个网关,移动端的任何请求都必须经过网关才能到达服务端,见下图:

2.使用网关的意义
试想这样的情景,小崩同学要在一个网站上面购买东西,首先他输入了网址A访问了网站首页,然后小崩需要登录进行购买,但是这时候网站并不会自动跳转登录页面,因为这时候小崩需要访问的是登录微服务,需要另外输入新的网址B来进入登录界面。这时候小崩说,我只知道www.jd.com啊,我哪里知道京东的登录网址是什么。这时候小崩进行了一番搜索,终于获得了京东的登录界面网址,然后小崩成功登录了京东账号,点击结算,这时候需要访问的是订单微服务,而系统又提示小崩需要输入网址C进入订单微服务,这时候小崩实在蚌埠住了,一怒之下放弃了剁手,直接省下999。
假如没有网关,你就可能会遇到像小崩那样的情景,相信这样你也会绷不住的,因为每一个微服务都有自己的访问地址,我们完成一个业务需求可能需要调用多个微服务,没有网关的场景是这样的:

这样的结构存在如下问题:
- 我们完成一个业务需求需要访问很多个微服务,而这些全部都要我们自己一个个手动完成,增加了客户端的复杂性。
- 存在跨域请求问题,处理相对复杂。
- 订单微服务需要依赖于用户已经登录的情况,这时候就存在一个认证问题,因为每个微服务都需要单独进行认证。
这时候引入网关,场景发生了变化:

这时候我们有业务需求我们只需要直接访问网关即可,然后网关会根据实际请求再去访问不同的微服务,这样我们只需要与网关进行交互,只需要记住网关的地址,这样就解决了用户交互复杂问题;同时所有的认证请求都统一在网关进行认证,这时候就解决了认证困难问题;最后,我们还能通过网关对所有微服务进行监控,实时掌握各个微服务的运行状况,便于管理。
二:常见API网关
- nginx
- Zuul
- Spring Cloud GetWay
- Kong
- Traefik
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号