Zuul网关_zuul网关的作用

Zuul网关_zuul网关的作用首先我们要知道为什么要使用网关呢?先复习一下之前说过的微服务的知识,最开始我们运行微服务就是三个重要部分1.服务端2.消费端3.注册中心首先用户在消费端发出消息,这个时候就需要负载均衡器Ribbon去调配服务,而且要使用到Hystrix去保护服务器,以免访问过多出现服务器过载,及时进行服务降级,然后我们通过消费端访问服务端的方法在最开始的时候使用的是RestTemplate去访问,当时是直接调配这个方法去访问,现在改进了一下,有Feign的出现,把Ribbon,Hystrix,还有RestTemp

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

首先我们要知道为什么要使用网关呢?

先复习一下之前说过的微服务的知识,最开始我们运行微服务就是三个重要部分
1.服务端
2.消费端
3.注册中心

首先用户在消费端发出消息,这个时候就需要负载均衡器Ribbon去调配服务,而且要使用到Hystrix去保护服务器,以免访问过多出现服务器过载,及时进行服务降级,然后我们通过消费端访问服务端的方法在最开始的时候使用的是RestTemplate去访问,当时是直接调配这个方法去访问,现在改进了一下,有Feign的出现,把Ribbon,Hystrix,还有RestTemplate都包含了,所以我们可以直接用Feign去访问服务端,但是我的服务器不可能说随便谁都可以访问,至少要经过登录验证才可以访问,以前我们是在controller里面直接编写登录方法,但是现在如果我们在一个大平台比如滴滴平台上,不可能说每一个消费端都去编写一个controller,这样代码量太多而且冗余,占用内存量大,因此,网关的出现解决了这个问题。

zuul网关的工作示意图:
在这里插入图片描述
网关在负载均衡器那边,网关是由什么集成的呢?首先我们要知道,一个网关它是不是也要调用用户管理,对吧?所以它也是需要负载均衡器Ribbon去调用管理工具,还有就是网关如果出现了故障或者出现了访问量过多导致系统过载,那么网关也是需要熔断和服务降级的,所以网关也需要Hyrix去保护它。蓝色部分的是外层服务,外层服务收到请求之后会调用内层服务,这个调用的组件就是Feign,然后一切都是在注册中心中进行,

如果不使用网关会造成什么影响呢?

不使用网关的话,我们将会面临两个问题:

1.用户不需要经过网关,也不需要权限管理,直接就可以访问我们的微服务
用户不用经过审核,也就是不需要走登录流程,直接就可以访问你的微服务,这样听起来是不是挺可怕,因为你的各种用户的信息,用户管理,购物车,甚至下单地址什么的信息都可以随便被别人访问,这就对用户的隐私造成很大的破坏,导致了用户没办法保障自己的隐私问题。
2.代码的冗余
为什么代码会冗余呢?如果没有网关,我们的每一个微服务是不是要自己建一个controller的权限对吧,那如果我们在每个微服务那里建立一个访问权限的话,这个代码量就很大,你很难保证你有多少个微服务,比如电商网站,你不仅需要用户管理微服务,还需要购物车,商品详情等等微服务,每个都配置一个访问权限,这个量就很大了,而且最重要的是,这还只是对外的权限管理配置,如果微服务自己之间也是不是也需要配置呀?那么我们不可能又要在每个微服务的controller那里再加上对其他微服务的权限管理,这样一来代码量太大了,造成代码冗余。

因此服务网关的作用非同小可,服务网关做的功能有三个:
1.路由
2.负载均衡
3.权限控制

我们可以通过网关向外界提供一个Rest API,这里说一下什么是Rest API呢?就拿登录界面来说,API就是你所看到的登陆界面的前端部分,而Rest就是实现这些前端部分的方法,因此网关对外提供一个Rest API其实也就是提供一个登录页面让外界进行登录验证,才能访问微服务。

zuul说白了就是一序列的过滤器,用来过滤各种信息

总结一下,zuul有这些功能:
1.身份验证。可以进行对用户的身份验证
2.审核。也可以对用户传来的信息进行审核与排查。
3.路由。根据不同的地址路由到不同微服务,,比如用户管理这个微服务的controller写的地址师order开头的,那用户就可以通过输入order去访问用户管理页面的这个微服务。
4.压力测试。因为所有的请求都会经过zuul网关,所以zuul就可以趁这个机会进行测试请求的数量多不多,而且得到相对应的数据,来决定是否需要运行。
5.负载均衡。也就是分配到微服务的实例进行运行
6.静态响应。静态响应就是如果是访问一些静态网页的话可以直接在zuul网关处进行访问了,就可以不进入内部资源里面进行访问了。

以下就是一个完整的服务请求过程
在这里插入图片描述
无论是电脑端还是手机端发送过来的请求都会经过zuul网关的处理,如果进行练额身份验证和审查通过后,就可以直接访问里面的服务,如果不通过,将会被拦截在外面。然后访问服务就是直接向微服务发送请求,微服务再在Eureka注册中心进行注册,然后拉取相关的服务进行对用户的服务

具体如果要实现什么服务,Eurka会通过具体的地址去调用

还有一点需要说明一下,就是路由和负载均衡的区别:

1.路由
路由是用户请求访问网关的时候,网关根据用户输入的地址进行调取相关的微服务,(因为用户地址和微服务地址一样,所以被调用),也就是顺着路径找到家。
2.负载均衡
要理解负载均衡,首先你要知道的是,微服务由三个组件组成,服务端,注册中心,消费端,你在调取一个微服务时,相当于消费端向注册中心发送了一个请求,那有很多个服务端,我们该调用哪一个服务端呢,这个问题就交由Ribbon去解决,Ribbon会帮你随机调用一个服务端进行服务,这就是负载均衡。就像滴滴平台,你向滴滴平台发送了打车请求,滴滴平台就相当于一个注册中心,你发送请求后,滴滴平台的Ribbon负载均衡器就会进行功能,优先给你安排服务等级比较高的滴滴师傅。以上便是负载均衡的介绍

好接下来让我们进行实操

首先创建一个zuul模块

在这里插入图片描述
在这里插入图片描述
只选择这个即可

我们配置组件还是要记得那三个步骤:
1.配置启动器
2.覆盖配置
3.添加到引导类

然而我们在配置上图选项后,它已经自动帮我们配置了启动器依赖
然而我们只需要在yml中去配置就可以了

在这里插入图片描述
配置端口号,配置微服务名字

接下来我们需要配置引导类
在这里插入图片描述
这个便是zuul的组件配置,配置在引导类这边

我们接下来还要对yml进行配置
在这里插入图片描述
这个配置的意思就是网关的路径配置,routes后面写的是服务端或者消费端的微服务名字
然后path配置的就是网址路径
url配置的也是网址

如果引导类没有被我们加载进来可以手动加载进来
在这里插入图片描述
这里已经配置好了,先详细说明一下

在这里插入图片描述
这个path和url是什么含义呢?
我先从操作上跟你们描述一遍它的作用,我们上面配置的端口号是10010嘛,所以如果我们去访问网址,localhost:10010/service-provider/user/2,(解释一下后面为什么是user/2,因为我们在服务端配置的controller的地址访问就是user/2这样子去访问的),然后网页会跳转到这个网址:
http://localhost:8082/user/2

看懂了吧?也就是说你只要输入了端口号还有service-provider还有相关controller配置地址和id,就可以访问到http://localhost:8082/,这就是网关的作用,帮助你进行跳转。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/170621.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 三大通信协议(二):IIC通信协议

    三大通信协议(二):IIC通信协议1.概念是什么?I²C(Inter-IntegratedCircuit),中文应该叫集成电路总线,它是一种串行通信总线,使用多主从架构,是由飞利浦公司在1980年代初设计的,方便了主板、嵌入式系统或手机与周边设备组件之间的通讯。由于其简单性,它被广泛用于微控制器与传感器阵列,显示器,IoT设备,EEPROM等之间的通信。优点仅需要两条总线即可通讯(大大的节约了IO口资源)最大主机数量:无限制。最大从机限制:理论127(一个主机多个从机,一对多,多对一,多对多)2.硬件连

  • 开启新征程[通俗易懂]

    开启新征程[通俗易懂]开启新征程

  • pycharm2021.7.20激活码(注册激活)

    (pycharm2021.7.20激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.htmlMLZPB5EL5Q-eyJsaWNlbnNlSW…

  • SecureCRT 设置超时自动断开连接时长

    SecureCRT 设置超时自动断开连接时长SecureCRT 设置超时自动断开连接时长

  • Java基础:instanceof用法详解以及注意事项

    Java基础:instanceof用法详解以及注意事项Java基础:instanceof用法详解以及注意事项instanceofinstanceof使用注意事项instanceof使用示例instanceof应用场景instanceofinstanceof是Java的一个保留关键字,左边是对象,右边是类,返回类型是Boolean类型。它的具体作用是测试左边的对象是否是右边类或者该类的子类创建的实例对象,是,则返回true,否则返回false。instanceof使用注意事项先有继承关系,再有instanceof的使用。当该测试对象创建时右边的声明

    2022年10月30日
  • 串口服务器中文使用文档,MOXA 串口服务器中文使用文档.doc

    MOXA串口服务器中文使用文档MOXA串口联网服务器NPORT5130特点-以太网口支持100/10M自适应,串口支持RS-422,RS-485(2w/4w)-低成本、信用卡大小-支持Windows/LinuxCOM串口驱动程序模式-提供包括TCPServer、TCPClient、UDPServer/Client和EthernetModem在内的不同socket操作模式-…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号