00:00
呃,下边我们说一下这个网关。网关。网关。那个这个东西起什么作用哈,咱们对照一下spring cloud的。呃,一个总的图哈。算了,那咱们咱们从从从从浏览器。这看哈。呃,这个网关呢,不加的话,它这个也也行是吧,我们前面就没有加这个功能也能够实现。然后这个加上有这么一个网关呢,它能够实现一个效果,就是提供一个统一的入口。啊,提供一个统一的入口。哎呀,这挺慢哈。有了这个统一的入口的话呢,我还真的没有这个图,还真的不好说哈,这个事儿。
01:06
换一个是吧。拿这儿,拿这儿来说吧。就是我们,呃,如果没有网关的话,没有这个东西访问是先访问的consumer consumer去访问。这是隐含的哈,这底层的我们对我们来说就是访问provider。啊,再去访问别的啊。那如果有了这个统一的入口的话。它是这么样一个效果哈。这个图应该是在。这个笔记里边哈。这儿也有了吗?哎呀,这个脑子也越来越跟不上了。嗯。
02:00
这是一个网关。网关呢,其实是一个gateway哈。Getaway。然后呢,他去访问我们的consumer。呃。就是怎么怎么个意思啊,就是说网关呢。呃,后边它网关的后边哈,是我们整个的这个项目。是这个整个的这个项目。啊,这个项目呢,它是有很多个微服务的模块所组成的。这个模块呢,有很多的,这个你可以认为是consumer,很多consumer调用provider。呃,这些是consumer。然后呢,访问provider。
03:01
然后呢,这个请求呢,让他从我们这个网关这儿过来。啊,请求。哎,先从网关这儿过。然后呢,网关是一个统一的入口,经过网关。然后呢,再去访问后边的,比如说这个consumer的。啊,或者是这个provider的啊。呃,都可以。啊,就是这个网关的话呢,它进行相关的配置,通过网关访问provider也是可以的。啊,只不过呢,我们正常的话,那肯定请求过来经过网关呢,是先去找consumer consumer去找provider啊基本上它是这么一个关系。那下一个问题就是说呢,为什么我们要整这么一个网关,诶这个项目呢,我们为什么要整一个统一的入口。啊,这个咱们来看一些个文字性的介绍。
04:04
呃,不同的微服务一般有不同的网络地址。啊,这个我们觉得,哎,这个对,就是很容易接受,而外部的客户端可能需要调用多个服务的接口才能完成一个业务需求。哎,举个例子,比如说买电影票。这个APP啊,这个APP呢,它会需要去调用电影分类的微服务啊,把分类的信息查出来。呃,用户的微服务。诶看这用户能不能登录,哎,这个支付的微服务,你选好电影票,选好座位以后,你得能够你下单的时候,你得能够支录啊,如果客户端直接和为服务进行通信,存在以下的这样的问题。客户端会。会多次请求不同的微服,增加客户端的复杂性。啊,那。你想如果我们这儿没有这个网关的话,这个请求过来呢,他要去找他。哎,他得考虑去找他啊,去找他。
05:02
哎,这个时候呢,他得去考虑每个微服务呢,有不同的这个地址啊是吧,哎,这个访问的方式也不一样啊。然后存在跨域请求的可能性啊,应该说存在跨域请求的可能。呃,有的时候呢,跨域会给我们带来一些麻烦,说什么叫跨域呢。这个域呢,我们可以认为就指的是域名啊,你3w.a.com。3w.b.com这就是两个不同的域名,代表两个不同的网站。如果你在这个A域名的网站下边进行相关操作的时候,你要跳转到这个B这个域名这个网站的下边,这个就叫做跨域。浏览器呢,其实它对跨域呢,有诸多的阻碍。啊,浏览器给跨域呢,设置了很多的障碍,也可以叫阻碍。他浏览器是好心,因为他觉得呢,你要是万一中了木马什么的啊,或者说你不小心访问了一个钓鱼网站。
06:02
哎,那么这个这个时候呢,这个页面上可能会有些个脚本啊GS脚本,然后呢,它替我们去跳转到就是它,它自动的背着你不知道跳转到他的一些个,呃,不怀好意的这个网站啊。就是这个浏览器呢,出于这个安全的考虑,他尽量的阻止这个去跨域啊,就是他的意思说呢,那你在一个网站下边能做的事就在一个网站下边,就你就好好就做呗,就完事了,你就别去别的网站了。啊,去别的网站你点超链接这样跳转是吧,你别用这个脚本去跳转。它也是为了安全,可是我们程序写的时候呢,呃,有的时候可能还,呃有的时候得考虑说不一定能够这个完全不跨域啊,有可能说这个项目太复杂。啊,你这个a.com和你这个b.com其实是同一个公司旗下的两个不同的项目,他们两个可能还有点关系。这个有的时候还有可能啊,所以说这个跨域呢,也是有相关的技术呢,去解决这个跨域的问题。
07:06
啊,我们现在呢,就是如果如果你的这个不同的微服务跑起来以后,他们是运行起来是用不同的域名访问的。而且这个域名呢,其实跟大家说哈。你比如说3w.a.com哈,和这个log.a.com。这个其实是没问题的,这个这个还不算跨域。因为这个时候人家看的是这个后半截。其实这个就是说域名有几级啊。有有几级这个什么这个点com这个呢,是顶级域名。啊,这也叫这个一级域名,这个A这个呢是二级域名。我们要是去网站上申请一个域名啊,咱们去申请一个域名,要用的话,咱们申请的都是这种这个二级域名。啊,二级域名。这个。嗯,点com呀点呀等等这些呢,就是说相当于是全人类共有的吧,啊,你申请的是你需要花钱的是这个二级域名啊,你申请的是这个。
08:07
然后在你的二级域名下边这个三级域名,你可以有很多,这个再怎么变的话,它算同一个域名。他算同一个网站,这个不算跨域啊。就是说呢,你如果说你部署了以后,你是3w.a.com和3w.b.com等等啊,你你就是类似这样的,你二级域名都不一样的。你这访问的话,他们就同一个APP过来发请求去访问他和访问他这就是跨域的啊,这就会有一些个跨域的问题。嗯,然后认证会比较复杂,每一个服务都需要独立的认证。那比如说什么叫认证呢?咱们咱们提过这个事儿,还记得啥叫认证不?认证啊。英文叫authentication。认证。认证。
09:00
对权限里边有一个需要认证的认证和授权嘛,还有主体是吧。啊,啥叫认证?这个烂的挺,忘的挺彻底啊。哈哈,但是咱们班依然是最棒的。嗯嗯。就是登录嘛。不记得了是吧。啊,就是登录嘛。所以说呢,你来这儿登录了,你下次你来这儿是不是还是登录的。肯定得让他还是登录的,但是你怎么做到。对吧,哎,我们在众筹,咱们后半截呢,咱们是用的是一种这个赛身共享的方式啊。我们就你在这儿登录了,我把你的登录状态存到session里面,然后30是共享的,你再访问它呢。访问的是同共享的session,那就还是登录的,咱们是这么处理的,然后咱们后边再往后大家做电商项目的时候,我们是使用呃,单点登录的方式去解决这个问题的啊。
10:05
但他也需要这个三人共享,就是大家到电商项目里边再去详细的去体会,反正呢,就是你得额外的采取一些个办法去解决这个问题啊,就这里边会有一个认证的问题。然后难以重构啊,随着项目的迭代,可能需要重新划分为服务。呃,如果客户端直接和维服务通信,那么重构会难以实施。哎,就是说我一直就我没有这个网关,我就访问这个具体的这个consumer。然后这个consumer随着我项目升级,有的发生了变化了,有的可能再拆又拆分了,有的可能又合并了,那你这个跟着你的客户端你就得就得改啊,那你这时候就是动静比较大,但是如果我有一个网关,有一个统一的一个入口。呃。哎,可能这个consumer这边的变化,那么就能够减少,对于我们APP啊,这边的一个,呃。这个一减少这样的一些个影响啊。
11:01
某些微服务可能用了其他的协议啊,访问都有一定的困难,总之呢,就是说我们没有这个网关的话,这些个consumer呢,他们就各自为政,彼此都不一致啊,就有可能会给我们客户端的开发啊,APP啊这个或者页面的开发带来一些个麻烦。所以说我们需要一个统一的入口。这个作用呢,包含了对请求的路由和过滤啊,这样的两个最重要的功能。其中,路由功能负责将外部请求转发到具体为服务实例上。过滤呢,就可以做这个类似于登录检查这样的功能,诶他们大致上的工作是这样的,有一个请求过来先去找我们的做。哎,然后呢,这个请求哈。呃。这个所谓请求的这个特征呢,其实是我们给他给这个微服务的这个名称呢,起的一个别名啊,我们不想把微服务的名称暴露出去。然后这个微服务的这个别名呢,就是微服务的名称哈,微服务的名称呢,它去借助于这个rib本啊,到有瑞卡里边找到具体的这个微服。
12:08
所以说这个zoo呢,Zoo里边其实也是用到了,是这个也是有ribbon的啊。它也是有ribon的,哎,所以说这个ribon呢,我们不直接操作ribbon,但是呢,其实我们嗯请求里边呢,基本上很多地方都用到了ribon。哎,反正就是说这个就是一个统一的一个入口啊,下边咱们通过具体的实际的例子,咱们来体会一下。
我来说两句