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)
blank

相关推荐

  • pycharm减少缩进快捷键_怎么取消整段缩进

    pycharm减少缩进快捷键_怎么取消整段缩进Pycharm整体缩进:选择要缩进的段落,按tab整体取消缩进tab+shift

  • arm rootfs定制[通俗易懂]

    arm rootfs定制[通俗易懂]最近在做rk3288的OS定制,因此将过程中遇到的问题记录下来。本文主要记录ubuntu18.04rootfs制作过程。参考文档:http://opensource.rock-chips.com/wiki_Distribution1.准备步骤获取ubuntubase18.04.3,路径:http://cdimage.ubuntu.com/ubuntu-base/releases…

  • SpringCloud系列之使用Feign进行服务调用

    SpringCloud系列之使用Feign进行服务调用

    2020年11月19日
  • 串口通信-MSComm控件使用详解

    串口通信-MSComm控件使用详解MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 MicrosoftCommunicationsControl(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通…

    2022年10月30日
  • 关于 ioctl 的 FIONREAD 参数[通俗易懂]

    关于 ioctl 的 FIONREAD 参数[通俗易懂]ioctl是用来设置硬件控制寄存器,或者读取硬件状态寄存器的数值之类的。而read,write是把数据丢入缓冲区,硬件的驱动从缓冲区读取数据一个个发送或者把接收的数据送入缓冲区。 ioctl(keyFd,FIONREAD,&b)得到缓冲区里有多少字节要被读取,然后将字节数放入b里面。接下来就可以用read了。read(keyFd,&b,sizeof(b))清

  • 实验室仪器管理系统_实验室设备管理系统代码

    实验室仪器管理系统_实验室设备管理系统代码实验室设备管理系统主要包括:实验室设备信息的管理模块,实验室设备信息的浏览查询模块,设备事故记录模块,设备资料管理模块设备的损坏管理模块,设备损坏信息浏览查询,设备类别设置,系统用户的管理。通过本系统,可以更加有效的管理学生实验室设备信息开发技术:php,mysql,apache课题名称:实验室设备管理系统1)系统简介每学年要对实验室设备使用情况进行统计、更新。其中:(1)对于已彻底损坏的做报废处理,同时详细记录有关信息。(2)对于由严重问题(故障)的要及时修理,并记录修理日期、设备名、编号

    2022年10月13日

发表回复

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

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