网关的理解与微服务网关

参考地址:https://developer.aliyun.com/article/1002990

https://www.bilibili.com/read/cv22904284/

一:什么是网关

1.网关简介

       网关是系统的唯一对外的入口,介于客户端和服务器端之间的中间层,处理非业务功能,提供路由请求、鉴权、监控、缓存、限流等功能。无论你查看任何一个微服务项目架构,你都会发现在客户端和服务器端之间有一个网关,移动端的任何请求都必须经过网关才能到达服务端,见下图:

2.使用网关的意义

       试想这样的情景,小崩同学要在一个网站上面购买东西,首先他输入了网址A访问了网站首页,然后小崩需要登录进行购买,但是这时候网站并不会自动跳转登录页面,因为这时候小崩需要访问的是登录微服务,需要另外输入新的网址B来进入登录界面。这时候小崩说,我只知道www.jd.com啊,我哪里知道京东的登录网址是什么。这时候小崩进行了一番搜索,终于获得了京东的登录界面网址,然后小崩成功登录了京东账号,点击结算,这时候需要访问的是订单微服务,而系统又提示小崩需要输入网址C进入订单微服务,这时候小崩实在蚌埠住了,一怒之下放弃了剁手,直接省下999。

       假如没有网关,你就可能会遇到像小崩那样的情景,相信这样你也会绷不住的,因为每一个微服务都有自己的访问地址,我们完成一个业务需求可能需要调用多个微服务,没有网关的场景是这样的:

这样的结构存在如下问题:

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

这时候引入网关,场景发生了变化:

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

二:常见API网关

  1. nginx
  2. Zuul
  3. Spring Cloud GetWay
  4. Kong
  5. Traefik

 

posted @ 2024-08-21 23:40  远洪  阅读(37)  评论(0)    收藏  举报