00:01
各位同学大家好,欢迎继续收看上硅谷视频课程,我们继续来开发上一通项目,下面呢给大家来讲解服务网关,首先介绍一下什么是网关,大家注意,其实网关串的原因是什么呢?就是因为咱们的微服务架构出现。因为咱们出现的微风之后。我们不同的服务一般都会有不同的网络地址,而这个时候呢,一个客户端发送请求完成功能,可能需要调用不同的接口,或者说不同服务中的接口才能实现我们的功能,在这过程中呢,会存在很多问题,比如说我们客户端多次请求不同的维护,会增加客户端的复杂性,另外存在一个叫跨域的这么一个问题,之前咱们提到过什么叫跨域,另外这个过程中认证就会特别复杂,因为每个部分都需要认证,另外你的代码重构也会特别不方便。
01:01
所以这些问题呢,咱出现网关就可以做这么一个解决,网关就是在这种情况下产生的这么一个内容,那网关到底是什么呢?大家想一下,之前呢,给各位曾经用了这么一个东西,叫做N这个词,其实这个N这次呢起到的就是一个网关作用。那大家可以想一下咱之前N这个词是怎么用的,那我下面给大家做个说明。大家想一下啊,比如说我现在啊发送一个请求,那请求呢,最终是要到达到服务器中啊,而我们的服务器,咱是不是有多台服务器,就是我们有多台微服,然后每台用不同的端口,假如说第一台我们用的是8201,第二台我们用的是8202,这时候有多台服务器。而我们在发送请求的时候,咱们并不是直接到服务器中吧,咱们到哪里,首先是不是到咱到N这里边,就是这个位置N这个,然后N这个呢,根据你的请求的地址给我们转发到不同的目中去,比如说你访问内容中包含好披,那我们到820欧洲去。
02:18
比如说你那种中包含这个D口,就是数于字典。那咱们到8202中去,所以咱们之前N这个起到的就是一个保温作用,包括我们当时在N这个词配置文件中,大家看到咱是不是加了这个配置。对外统一暴露的是901端口,然后里边根据请求路径让它转发到不同的服务中去,这是我们当时做法,而现在呢,我们用这个,可里面一个技术叫getway,也能实现跟之前in这相同效果,但是它比in这的功能更加强大,比如说咱之前解决了一个叫跨域,而现在用getway之后,在里边能直接解决跨域,而不需要在每个CTRL上边都来加上那个cross这个注解。
03:07
所以我们下面咱就开始用一下润口里边这个getway,用它来实现网关作用,从而替代我们的NEX,因为它比NEX更加简洁,功能更加方便,那咱下面给它用一下啊,首先做个说明,Getway呢是W可里边一个组件,它是基于。5.0和2.0开发的一个网关技术,然后它为了解决微服里边的各种问题提供了简单有效的处理方式。而这个getway呢,其实它的目标是替代一个早期技术,叫这个zoo,里边能实现统一的路由方式,另外还基于这个field实间里面的功能,比如说我们做限流,比如做安全权限控制等等,这个叫getway,然后getway怎么用的,大家看一下里面这张图,这张图中清晰的标注出来了。
04:03
我们看一下啊。首先里边有个地方叫NAS,就是咱们之前说这个注册中心,然后咱们把网关和咱的服务在中都进行注册,注册之后呢,我们进行请求,请求的话首先到地位网关,网关里边呢,因为咱们有各种服务,所以它会根据我的服务的地址到na中找到它的路径,然后进行这个访问,跟之前N这是相同效果,统一到网关,然后去启动你的服务。当然我们现在网关和服务都需要在na code中进行注册,所以这个是它一个最基本的一个结构,各位先知道咱现在用的是死人考里边的getway网关,用网关能实现之前inex效果。但是它比in更加简洁,功能更加强大。比如说咱的跨域,目前在网关中就可以统一做个解决,而不需要在每个坎块上面加上那个注解。
05:03
这是一个介绍啊,那这个怎么用呢?我们先看一遍,然后给大家快速实现一下,比如大家一块用网关,第一步咱可以创建一个模块,假如说我们叫server it way,然后在里边引入依赖,引入依赖之后加上配置文件,配置你的相关内容,然后最后添加启用类,咱把它一启动就可以实现一个为网关实现请求转发相应的这个效果,所以咱们下面呢,就用这个,这是各位网关把这个效果给他最终弄一下。首先按照步骤,咱们先创建一个新的模块。那我现在在里边我做个创建,比如现在我建一个模块,然后咱们给模块,我们用微问工程给它起个名字,这个名字呢,比如我们就叫这个server,哦,就叫service啊,这个way。
06:01
这是我们创建的一个模块,把它我们先做搞创建。然后创建之后呢,咱们首先在这个getway的这个模块中先引入相关的依赖,那这个依赖呢,我就从我的课件中把它就直接入过来,咱们看一下里边需要的这些依赖,那我现在在里边引入我们加一个dependence,然后里边加上这两个dependent,大家看到啊,第一个依赖就是这个it way,然后第二个叫这个NAS,因为它需要在na中进行注册。所以这个依赖我们就完成引入,这是里边的第一步,咱做到了。然后做到之后呢,第二步呢,咱需要干什么呢?我们就需要编写它的这个配置文件,在配置文件中配置它的相关的内容,那下面我们来写一下。现在里边我把这个配置文件我们先做创建,咱们先给它创建出来,那咱可以先看一下啊,在配置文件中,第一部分是它的端口号,然后第二个呢是word的名字,包括你的NAS的IP地址,端口号,以及里边一些你的配置规则,比如咱们配置这个service hospital,然后根据路径做个匹配,如果能匹配到,那就到na中找到这个服务,然后完成访问。
07:28
比如说你访问的是CMN,当这个路径能匹配到,然后咱们到那中找到服务,最终完成请求,所以这是我们的第二步,咱就创建一个配置文件,那我现在把它创建一下,我们来写一下。Properties。在里边加上配置,这个配置呢,我就把这个内容要给它就直接复制过来,因为刚才我们都说到了里边这么一段固定的配置,在配置中端口号服务名字NAS,然后这句话表示开启那个服务的发现路由,如果你不开启,因为不能用在下面过程中一个结构大家看啊。
08:14
首先有个routes。这是一个数组,这是它的第一部分,这是第二部分,当然你可能有第三部分,第四部分,我们意思根据下标来加,第一部分呢,这加的是服务名字,然后这是你路由那个ul,包括LB冒号杠杠固定的,然后后面加上服务名字,这是你的叫路由段代言,也就是我们的一个路径的匹配。假如说咱路径中包含这个hospital,那咱根据它找到这个服务进行访问,如果你包含CMN,找到服务进访问,注意它的路径特点,一个星号那肯定表示一层目录,你两个星号表示多层目录,因为后面可能会有多层,所以咱们现在把配置文件就写出来了,然后写完之后呢,最后再在里边加上一个启动类,那我们先写个包。
09:09
com.at硅谷我们叫这个预约挂号,点上这个位。这是我们写的这么一个包,然后在包里边,咱们把这个启动类给它创建出来,那我们来创建一下啊,比如说给它起个名字,我就叫这个。So getway OB跟这个啊,我就起成一个名字,然后写完之后在上面加上注解,加上一个main方法就可以了,把这个代码我就直接分过来,因为这个结构咱之前都写过类似的。咱把依赖给它引入,这样的话呢,这个getway这个类我们就完成了啊,包括里边这个配置文件依赖,还有它的启动类,这咱就写完了,然后写完之后,咱下面把这个way这个网关的服务启动起来,我们就可以完成使用,所以这是它的一个基本做法,那在下面把这个服务给它,就做一个启动。
10:10
我们来。最终做测试,咱们先启动一下啊这个服务。我们先启用之后,然后我说一下我们要怎么进行测试。等等的,先启用起来,先验证一下它是否正确,如果启用成功,我们往下来做,如果失败,咱们来排查一下里边是什么问题啊,所以大家看目前应该是启动成功了,我这个端口号用的是八零端口,为了方便啊,当然你可以改一个不一样的端口,然后启动之后,咱们把另外的两副启动,一个是CMN,一个是好披,我们先启动起来。咱们等它启动,这是CMN,我们稍等一会儿。再找到这个。好的皮草。这个也启动,然后这两个如果都启用之后呢,我们怎么测试呢?其实咱们可以在前端中测试,大家应该记得啊,当时咱们写这个前端项目的时候呢,我们曾经啊改过这么一个文件。
11:14
不知各位是否有印象,当时咱是不是改过这个地方,这里边写的是咱们N这个里边监听的901端口,而目前咱把这个要换成什么,是不是咱这个网关的地址啊,而网关地址咱是一个八零端口,而八零端口默认是不是能省略,所以现在我们就改成这个地址,让他用咱的网关境访问,也就是说你每次发送请求先到咱的getway网关,网关中根据你的请求路径,然后给你转发到你na中的不同服务中去,比如说你CMN拿到这个CMN服务中去,你是hospital,那就到这个hospital医院的服务中去,所以现在咱们把这个改一下,改成你这个网关这个路径,就是八零的这个端口号。
12:00
那现在我把前端也给它重启一下。这些呢,如果都重启之后,咱们最终做一个测试,就看一下最终的效果到底怎么样,因为目前这些应该都可以了,那我们看一下前端。前端目前也启动了,然后咱们做个测试啊,我把F12打开,咱们排查一下啊,首先比如我点击这个医院列表。然后大家看啊,医院列表中数据是不是出来了,咱们看一下他请求的路径是谁,我们到下面找一下啊,大家看是不是这个路径。叫local house of mean SN,这里边local house是不是用到咱们网关的路径,而没有用到901这个路径,比如说咱可以再试一个,假如现在我是这个医院设置列表。各位看到数据是出来了,然后这里边请求的是不是也是local house里边这个hospital set,所以大家看目前这个网关是不是生效了,咱用网关就成功替代了我们之前这个N用网关,实际上里边这个请求转化功能,所以这就是。
13:13
Way网关在我们项目中一个使用,咱们把它就最终做到了。
我来说两句