00:00
接下来我们创建一个项目作为我们的API网关。好,我先来右键new一个model,我们还是使用spring的初始化向导来选择。下一步我们的包名呢是com enter硅谷,那我们的模块名呢,是我们鼓励mail的getway我们的网关,好,我把下边呢改一下,这个是我们的API网关。下一步来,首先要选中我们的网关,我们来搜索gety,好,直接来选中网关,在这一块呢,我们这个网关就选中了。那选择下一步。Finish。同样,我们网关呢,还是要来依赖我们的common工程们在这儿来编写我们dependency,我们依赖鼓励mail common。这个common工程里边呢,引入了我们的服务的注册发现以及配置中心,而且呢,我们网关也需要把自己注册到注册中心中去,他呢同时也要发现其他服务所在的位置,这样我们请求移过来,我们的网关就可以找到我们的目标服务都在哪些机器里边可以帮我们把请求。
01:17
路由的指定位置,同时呢,我们来修改一下我们网关的spring boot以及spring cloud对应的版本,那我们之前创建项目呢,使用的都是spring boot218好,它boot版本呢改为218,包括我们使用的是spring cloud的这个greenish版本,好把它改成greenish好。把它呢复制过来。接下来我们配置和测试一下网关,首先呢,我们来打开网关的整个慢方法。我们要使用网关呢,首先我们要使用第一个功能,我们让网关开启服务的注册发现,开启服务注册发现,这样我们网关想要将请求路由的其他服务,他就知道其他服务在哪了,我们要使用enable discovery client,那要使用服务的注册发现,由于我们网关引入的是我们common里边的NAS,那我们NAS呢,就先得启动,我们这个NAS呢启动起来了,同时呢,我们要使用NAS,得配置NAS的相关地址,所以在服务的注册发现里边,我们主要配置NAS,那咱们这个注册中心地址,好,我们在application properties里边,我们来配置NUS discovery的address,来找一下server a drr,那是本机的127.0.0.1,冒号8848,同时呢,配置我们当前应用的名字spring DR application。
02:50
我们当前应用的名字呢,就是我们的网关,当然我们还引入了配置中心,我们以后网关的所有配置都可以放到配置中心中,那配置中心的配置文件呢,我们也来加上是bootsrip。
03:06
第2PROPERTIES在这一块呢,主要让加上我们配置中心的地址NAS的config,诶config server a DR是127.0.0.1,冒号8848。然后按照我们以前的约定,每一个项目呢,都有它自己的名称空间,诶,我们NAS,我们config namespace,我们来找到我们当前这个项目的名称空间,我们在nacos中为我们。我们在NAS中为我们的get外项目创建一个名称空间,我们在这儿名称空间里边新建名称空间,以后每一个项目呢,都有自己的名称空间,好我们就叫get外这个网关,网关的这个名称空间,网关所有的配置呢,我们都放到这个名称空间下,那来到配置列表,那我们网关的这个名称空间get外在这,那我们希望呢,就以后网关的配置,比如我们在这添一个data ID,我们就叫鼓励mail。
04:14
杠KY点,哎,那我们以后呢,网关整个用压面配置比较合适,那么后来呢,再说,那先写一个压面,我们先配上最简单的,比如当前应用的名字spring application冒号下边的name,好把这个名字呢配上,就叫古励mail-getway。来发布一下。好,我们网关的这个配置呢,我们先填上了,那我们在这呢,Name space就来指定上get外的名称空间的这个唯一ID来复制过来,复制过来,如果我们有多个配置文件,还可以像我们以前的这种写法一样,那在这同时加载多个配置文件这样来写,当然我们现在呢,目前只有一个配置文件,而且分组还是默认分组,那我们这一块呢,就可以先不写它的分组配置信息。
05:11
当然我们项目一启动,连接配置中心也要得知道项目的名字,所以我们将项目名字同时在这儿配置一下,好我们来复制过来,那接下来呢,我们就来启动咱们这个网关,来启动我们的网关,来测试一下它现在能否正常启动,好我们让起来。我们发现呢,这一块的单元测试有些不对,这是因为我们之前创建get外项目的时候,Spring boot用的是高版本,高版本的不是这样子的,好,我们把它切换为低版本以后,让它重新导入单元测试,诶,这就行了,我们呢让它重新运行。启动起来。来看网关项目的启动。
06:00
哎,我发现呢,网关项目在这儿出现了问题,说我们这个启动的时候呢,他在报数据库相关的没有放在类路径下,也就是跟数据库的URL地址没有配置,那为什么呢?这是由于我们在引入common的时候,那么同时呢,引入了我们MY贝蒂相关的操作,那引入了马贝斯相关的操作,就有了数据源相关的自动配置,所以我们网关呢,暂时没有用到什么数据源,那我们就可以在网关引入我们common的时候,排除马贝蒂斯plus相关的配置,或者用最简单的方式,那么在这呢,让它排除掉跟数据库有关的自动配置,我们来写一个exclude exclude什么呢?我们就叫data source auto configu,好,我们排除跟数据源有关的配置,好我们来重新运行起来。那我们这个网关呢,就在8080端口启动了,我们呢以后给他编排一下网关所使用的端口呢,来写一个server.port网关的端口就是八八。
07:08
以后所有请求呢,都发给我们项目的八八端口,有网关路由到其他服务,我们重新启动。好,现在呢网关启动成功,而且我们整个网关呢,它不是使用tomcat做的,它是使用net来做的,Net呢具有非常高的网络性能,我们来直接访问网关local cost,我们现在网关是八八项目,那现在呢,由于我们网关想要做的功能是将我们请求转给其他服务,那么就来测试一个,测试一个什么请求呢?我希望来发送,发送hello的时候,我们带一个URL地址,如果我带的是百度,那就给我们转到3W点百度点com,如果我带的是QQ,他就给我们转到qq3w.qq.com想要做这个功能呢,我们需要对网关做一个配置,所有的配置呢,都要参照网关的官方文档,那配置呢,还是写在压麦里边好,我们将我们的配置写在压面里边,后来上线我们都可以搬到配置中心,好,我们先写在这儿,Application压面,那我们的配置怎么写呢,先来。
08:18
看我们的第一个spring cloud getaway,首先Rose就是多种路由规则,那我们就先来写上spring.cloud.getaway getaway。我们先来配置肉字,这是路由规则,由于它里边呢是一个数组,所以我们需要配一个数组,那数组在压面里边的配法呢是杠,那数组里边是一个对象,接下来就在这来写对象的相关信息。首先第一个信息,我们说每一个路由都得有一个唯一ID,诶我们就随便叫一个,比如叫test root,我们来测试我们网关的路由功能。接下来我们说网关的工作原理是满足某种断言给你去哪个地方好,我们来看一下我们要去的地址,好,我先来写一下uri,比如我们要去的地址呢,是3HTTVS3W点百度点。com什么时候要去百度呢?我们就得满足某种断言规则,你就可以在这儿配置我们的断言,这个配置呢,也可以参照官方文档home,我们来到诶,我们是按照参数的,这有一个叫query root predict factory,我们的这个参数的路由的这个断言工程。
09:34
在这一块呢,我们写个predict case,这是所有的断言规则,断言规则里边呢,其中有一个规则叫quary,因为断言规则里边也是一个数组,有多个规则,我们可以看一下,诶它还是一个list数组,那写数组呢,我们来写第一个断言杠好,第一个断言呢,我们用的是quary这种断言方式,所以这一块呢,固定写法,先写一个quary意思我们用这种断言,这种断言呢是什么?我们是希望有一个参数叫URL,如果它等于百度就去呢,那我们就写一个叫URL,那接下来怎么做呢?来看这一块,我们第一种写法,Query等于什么?那就是如果我们有这个参数我们就去这,但是我们还要参数等于指定值,那么接下来就是这个query等于for逗号八点,那它的意思呢,就是如果我们包含了这个参数,而且呢,这个参数的值匹配这个正则表达式,也是后边的这个值还可以是正则表。
10:34
凡式,那我们现在是精确PP,那我们就直接来写百度,诶如果呢,你带了百度我们就去这同样的我们继续来写,如果带了QQ,我们就去QQ啊ID,那接接下来是路由到QQ的地方来写个root,同样uri。我们路由给QQ qq.com然后呢,我们的规则是什么来写上,我们是按照参数的方式走,参数呢,现在URL等于QQ,哎,那我们就路由到QQ服务,好,我们现在来启动我们这个网关。
11:13
测试一下,我们现在是否能发送我们想象的这些请求来到达我们指定的位置来看一下好网关呢?现在正在启动过程中。好,网关已经在八端口启动,我们先来访问QQ,我们来访问hello,带一个QQ回车。诶,我们发现呢,现在确实是跳到QQ,只是呢,什么页面不存在,那我们再来访问百度,好,如果我们再来百度回车,然后呢,那就访问到百度,为什么不存在,是因为我们转发请求的时候,我们。跳到QQ的hello地址,也就是说我们网关会跳给QQ的hello,所以我们最终相当于访问的是3w.qq.com诶,因为我们的访问路径它也会转过去,诶访问的是这个叫哈,所以QQ会说不存在,最终呢,就出现的是QQ之前的那个404页面。
12:13
好。那网关的更多配置呢?我们在项目里边用的时候,直接参照文档进行配置就行了,我们在这先做一个简单示例。
我来说两句