00:00
那么好,同学们,呃,我再给大家讲这么一个例子啊,就是这个通过request uri来这个给大家做这个负载均衡,这个request uri指的是啥?Request是请求,Uri是用户请求的资源地址。大家通过这个命名也能看出来,这cookie里边的Jason ID,这是request里边的uri啊,这是请求里的UR在这个N的变量里边呢,通过呃,Uri来做这个这个这个唯一的标识,那么这种方式有啥好处,有啥坏处,大家也可以思考一下啊,什么时候可能会用到这个request UI。呃,用这个request UI去做这个,呃流量分发的时候。它最大的一个特点就是。访问相同的URL的时候,我会被转发到固定的一台服务器上。那么这样它能带来的最大的好处。
01:03
其实就是有一些啊浏览器或者是呃,一些客户端啊,比如说手机的APP,它并不支持cookie。在不支持cookie的情况下。支持cookie,在不支持cookie的情况下,我们可以通过URL里边后边呢给它加一个参数,后边直接把这个Jason ID给它写在URL上。啊,那这样的话,呃,也可以做到这个绘画的保持,我不知道大家写过这种程序没有。啊,就是在呃,请求我们的某一个资源地址的时候,比如说这个index JSP。如果支持cookie的话呢,你的这个URURL里边呢,什么都不需要带对吧?啊,就直接写你想要请求这个资源地址就可以,你带什么点JSP,然后配置number等于100,如果它不支持cookie,那这个绘画它就保持不了了。
02:04
那么我们可以通过另外一种办法,就是在后边呢再加一个end。Jason。ID。等于什么?呃,直接写在URL里边啊啊,这种方式就是那JID不就是一个比较长的一段字符串吗?我们看这浏览器。里边儿。嗯。就这个东西,我可以把这个value直接给它跟在URL上。这么慢。这样。它也能保持会话对吧?那么它不支持cookie,我就可以通过这种方式当用户请请求的UR。I uri指的就是这个斜杠后边的这这一堆东西,相同的uri呢,给它指向相同的服务器上,那你访问呃,这个index JSP,那前边这个可能和我都一样,但后边的JID它肯定就不一样了,这样也能区分开不同的用户,针对于不同的用户呢,去呃,给他指到不同的这个呃服务器上,也能达到负载均衡啊这种效果。
03:22
这就是不支持cookie的情况下啊,这是呃,它比较适用的一种场景啊,不支持cookie第二种情况呢。这种情况就是在在我们的资源啊分配的时候就已经有了倾斜的情况下,比如我的后端呢,它已经不是集群了,每台服务器上存放的东西呢,它可能不一样。那这会儿我就可以通过这种针对于你想访问的资源,也就是uri,比如说你想访问某一个文件,具体的。呃。比如电影吧,比如电影就成龙演的什么。成龙电影吧,我也没没怎么看成龙第2MP4。
04:04
和这个周星驰点MP4,但是这这这这抽象了一点啊,能理解这意思就可以。这两个uri,这是urii啊,这前面的,这不这不叫urii,后边这叫URI这两个UI是不是不一样,那么相同的U是不是就会被打向后端的具体的一台服务器上啊,对吧,那么它打向另外一台服务器,它有可能它不存在。这个能理解吧。是吧,那这种方式呢,也是有可能啊,我们在呃,做一些系统的时候可能会用到的,因为这些文件来的太大了,我不可能把它。分发到所有的这个服务器里边,让他做完全的复制。啊,其实也没有这个必要。对吧,那我可以比如搞出来三两台机器啊,装装这个呃。一样的文件啊,另外的几台机器的装这装这个不太一样的文件,那装的时候我怎么能知道,你看我请求我知道我请求这个文件的时候,我知道它能够定位到哪台服务器上,对吧,你试一下其实就知道,或者你跑一下那哈希算法。
05:07
那我放的时候怎么放?对吧,我不能把这个啊,比如它成零点MP4,它会指向这个,比如第零号服务器。这个呢,会被指向第一号服务器。对吧,你访问的时候你才知道是吧,那么你这个。放的时候怎么放,我怎么知道它访问的时候,它会访问到哪台服务器呢?你跑一下这哈希算法其实也就可以了,那你就能求出来具体它应该放到哪台机器上了,在你的上传程序里边加入这个哈希算法,直接就给扔上去了啊。这是这个呃,通过uri去取这个哈希,然后再去做定向的流量的转发一些这个呃,一些场景哈。这是资源。呃。不平均分配。
06:00
这种情况下我们可以用这个request UI,还有就是不支持cookie的情况下。那么用它的话呢,其实也不难啊,跟跟跟这个。前面这个都一样,把这个哈希的这个后边具体的。哈希的内容给它配到我们的配置文件里,其实就可以了。这会哈希的是request uril了啊,然后还是这两个tomcat吧。我重新load一下。帮我访问一下看看效果101对吧,来刷新。你看SERVER05对吧,再刷新是不是还是零五。啊,因为我现在请求UI实际上是啥啊,其实啥也没请求嘛,对吧,那么如果加一个呢。他是index.jsp吧,走。是不是还是零五那。呃。我们这样后面加个问号。
07:01
注意注意看啊。index.jsp和index.jsp后边跟个问号,这是两个不同的UI。啊,也就是在请求的时候,可能取出来的哈奇值就不一样了,来走,你看。这会儿就到零四了,大家注意看。啊,刚才的这个不带问号的是在零五。带问号的就是在零四了,当然你问号后边就可以跟一些参数了,跟啥都可以跟叉叉叉是吧,这还是在零四叉叉叉二。还是叉叉二十一零五相同的uri。会被分发到相同的服务器上,不同的呢会分发到啊不同的服务器上啊,这就是通过request uri来做这个负载均衡啊,呃在这呢再多说一嘴,还有另外一种方式,就可以通过NG个二次开发,我们呢在这套课程里呢,给大家主要是呃,通过lur语言去做二次开发,也可以通过撸啊去做更加复杂一点的这种定向流量分发,或者是负载均衡的逻辑,这在我们后边给大家讲到open re的时候,会给大家详细讲解。
08:11
啊,这就是我们通过水平扩展,然后集群化的这种方式来提升我们整体集群的性能,服务的性能,啊里边所涉及到这个绘画管理的问题,NG格呢,可以有这些这个呃,可配置或者说可以这个调整的一些选项来供我们来使用。呃。在我们做这种水平扩展的时候,也就做集群化的时候,教大家的这几个这个呃,配置的方式做到负载均衡了,其实这会儿已经能够应付90%以上的项目了。其实呃,我们把这个服务啊,后端正常你的这个项目运行在一台服务器上,就已经能够支撑一部分用户的请求了啊呃,当真正有了瓶颈之后,你直接在NG格里做这种定向的这种转发,而不需要改代码,其实最快最有效啊这个嗯,最低成本的能够提升我们整体的性能,也无非就是再开一台机器,把那个代码再扔上去,什么都不需要动,啥都不需要改。
09:15
就可以做这个集群化了啊。这种能够应付,再说一下,已经能够应付90%以上的场景了,就是你现在手里做的项目,给他搞个搞个集群,它的并发量就可以做到这个成倍的增长,你加几台机器就能涨多少倍。这是水平扩展里边给大家讲的集群化的方式,去提升我们整体的集群化,集群的性能。
我来说两句