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/,这就是网关的作用,帮助你进行跳转。

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

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python注入_Python——dll注入

    python注入_Python——dll注入dll攻击原理分析什么是dll动态链接库,是在微软Windows操作系统中实现共享函数库概念的一种方式。这些库函数的扩展名是”.dll”、”.ocx”(包含ActiveX控制的库)或者”.drv”(旧式的系统驱动程序)。为何有dll由于进程的地址空间是独立的(保护模式),当多个进程共享相同的库时,每个库都在硬盘和进程彼此的内存存放一份的话,对于早期的计算机来说,无疑是一种极大的浪费,于是win…

    2022年5月17日
  • 在pycharm中使用tensorflow_使用中是什么意思

    在pycharm中使用tensorflow_使用中是什么意思QtDesigner的介绍在PyQt中编写UI界面可以直接通过代码来实现,也可以通过QtDesigner来完成。QtDesigner的设计符合MVC的架构,其实现了视图和逻辑的分离,从而实现了开发的便捷。QtDesigner中的操作方式十分灵活,其通过拖拽的方式放置控件可以随时查看控件效果。QtDesigner生成的.ui文件(实质上是XML格式的文件)也可以通过pyuic5工具转换成…

    2022年8月28日
  • 天气预报代码调用

    天气预报代码调用

    2021年10月11日
  • 彩色图和深度图转点云

    彩色图和深度图转点云环境:windows10、VS2013、opencv2.49、openNi、PCL1.8opencv环境搭建参考https://www.cnblogs.com/cuteshongshong/p/4057193.htmlhttps://blog.csdn.net/u013105549/article/details/50493069PCL1.8+openNi搭建参考https://blog.cs…

    2022年4月25日
  • java 和 C 代码运行效率的比较(整理)「建议收藏」

    java 和 C 代码运行效率的比较(整理)「建议收藏」最近和朋友无意间讨论起了有关java和C的效率问题,(我是java推介者,他是c语言推介者,他做的是嵌入式)故,想通过网络查询一下,总结一下,两者到底效率如何,其有何差异,原因

    2022年8月4日
  • MySQL 字符串数字转换

    MySQL 字符串数字转换1方法一:SELECTCAST(‘123’ASSIGNED);2方法二:SELECTCONVERT(‘123’,SIGNED);3方法三:SELECT’123’+0; 1//数字转字符串2CONCAT()

    2022年5月30日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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