00:02
欢迎大家收看上硅谷的Linux云传视频。大家好,我是汪洋。那接下来呢,我们会带大家学习的是我们squad服务。那sque的服务呢?首先我们学习之前,我们先看一下它的学习的步骤以及分类。首先我们第一个给大家介绍的是我们的squid简介,对吧?我们要先知道squid到底是什么东西。以及它的工作类型有哪些,每种类型的特点对吧?然后我们再去构建SK的传统模式,透明模式以及反向代理模式,这是它的三种不同的工作类型,以及它的SL叫访访问控制列表的设置方式。好,那我们一点点去看,首先我们先看第一个K简介。我们在学习任何一个软件之前,我们都要知道它是什么,以及它能干什么,对吧?我们才能很好的去学习它以及掌握它。那首先对于来说呢,有这么一些比较跟它相关联的一些说明。
01:00
第一个说的是,它是一个缓存服务器的守护进程。缓存服务需要注意一下什么是缓存啊?之前我们在去讲reading的时候还记得吗?然后呢,后面我们加了my circlel对吧,然后通过PHP语言,当时给大家实现的对吧,通过PHP语言,然后呢,让Z充当了my circle的缓存服务。在我们的服务器圈里,或者在任何地方,基本上都有这么一个原则,对吧,叫二八原则。叫20%的访问量。有。叫。二八原则对吧,那有80%的访问量是由20%的数据去完成的。也就意味着,如果把所有的数据都放在后端的买卖小狗数据库中。其实没有什么含义,因为2%,80%的访问量都是其中20%去说引导的,所以为什么不把20%拿到前面的缓存服务中,那这样的话寻找起来以及它的并发是不是更大呢?
02:07
这就是缓存服务的意义所在,以及它背后的原则,就是二八原则。好。那既然当时缓存服务的话,其实它的公路逻辑比较倾向于是一个反向代理服务器,也就类似于是N反向代理服务器。那它N跟Ning比的时候,它有哪些不同点呢?首先Ning是默认是没有缓存设置的,需要注意一下,当然Ning有自己的缓存模块,这属于一个第三方模块。它可以做,但它不是专门做的,但是squid呢,它是专门去做缓存的,所以对于缓存模块来说,可能squid会比NUE的多。那我们也知道。对于。我们对于比较熟悉的例子来说呢,它支持的反向代理的模式可能只有IDDP以及TPS。当然我这里说的是我们的。普通版并不是plugin企业版对吧。
03:02
那对于square来说呢?它作为一个反向代理服务器,它有它自己支持的这么一种协议类型。那分别是我们的FTP。Itp以及SL。那FTP也就意味着它可以充当我们的VSFTP,我们之前学习到这么一个服务的前端的缓存服务。那对于FTTP和SSL来说,也就意味着它支持的是TTPTPSFTP的加密方式都是没问题的。支持他支持的反向代理的类型。那接下来我们看下一个关键,关键话语就是磁盘分居目录以及object。这个就是squ服务。对于我们的。对于我们的缓存的一个区分,或者缓存方式的一个区分。首先在不同磁盘下构建分区,分区下有不同目录,这个目录需要大家注意一下。一般来说,S squared服务器分为二级目录。
04:02
没有三级目录。也就二级目录下存的就是我们的最终的我们的object。Object。哦,这个叫对象的含义,对吧,在我们的script里呢,它叫缓存,缓存实例,这里需要注意一下,这是它的一个我们的存储的递进。那还有下面一句话,就是哈西table。这是什么含义呢?就是我们想一下,如果我需要你在。一个大米箱里去找到一个黑米,其他都是白米,让你去找到一个黑米,你觉得费事吗?那如果我告诉你在这个大米箱的第几层第几个分区里面去找。那是不是就更容易一点?对于来也来说也是一样,它里面存储了很多的一些我们的缓存数据。那如果用户请求到达我们的以后,要去寻找这些数据,并把这些数据搬移给我们的客户端。那他也需要去快速的建立这种寻找机制。
05:02
它是通过两张表就完成的,也就是我们的哈希table以及table。哈希,Table里呢?相当于存的是一个我们的书目,每个dig盖的所有信息也就大概的篇章。那DGA里存的是不同分区对应的object,大概说明也就通过这两级不同的表一级一级递进查找,就可以比较快速的去寻找到我们的。对象也就是我们的缓存了。还需要给大家说一下,这里说提到不同分区,我们就加入分区吧,那分区我们都知道它是有不同的是吧,文件系统去确定了对吧,那在这里又它在这里呢?Squi在这里呢?采用的是我们的一种比较老的微粒系统,叫ufs。UFS有不同的缩写,一个叫UNFS,一个叫我们的unix FS。第一个叫联合文件系统,就是在我们的后边,那我们的dock里会去说明的这么一个东西,那这里呢,叫unix f system,也就是我们的unix文件系统。
06:04
这个文件系统是一个比较老的这么一个文件系统,像我们的squ服务器也是跟他S处于同一个年代的,对吧,像这种老的服务差继续使用我们U。Us首先从性能上讲是没有问题的,只不过它不支持太多的一些复杂的一些权限设置,仅此而已。那对于来说,它又不需要这种特殊的权限设置,所以它采用us。更简单、更便捷、更迅速。相信通过我们刚才介绍,已经大家对SD有一个了解了,无非就是缓存服务。对吧,通过不同的表去建立索引两张。然后呢,通过两个不同的分区确定存储我们的对象。支持我们的FTP协议,支持FTP协议,支持SL。那这个其实就能对我们做一个总结了。那这里细心的同学还发现我写了一个vanish。
07:01
挖是什么?你可以理解为是squad的竞争者。他是更现代的一款竞争者,也就意味着巴尼语言诞生于落后于我们死的,我是说从时间上去说明的。那诞生的越迟,也就意味着从架构上,我们是不是可以理解为架构越新颖?功能会越多呢。至少大部分的情况是这样,对吧。好,那。也没问题,挖内确实更有异,比如它可以支持我们正能表达式的匹配方式去删除我们的缓存。它是通过我们的内存分页技术存储数据,这都会更快。但是技术的更新是需要一定时间的。那可能在几年以后我们会发现挖尼奇大规模采用,对吧?但就目前来说,Squid依然是主流。需要我们注意一下。那很多,一些同学可能会在网上听说了,或者是查找一些博客说明什么。呃,挪威的一些在线报纸业务通过1VAN顶替了过去十台square服务器,并且性能更好。
08:12
其实刚刚我刚听到这个故事的时候,其实我也觉得啊,瓦尼奇这么厉害吗。做了一个简单的测试。就是发现。其实Van在我们的。数据量或者单个文件比较小的时候,它的速度确实更快,因为它是通过我们的内存索引,想都不用想,绝对是最好的。那对于SK来说,它可能偏重于是单个文件比较大的这种类型的缓存。在我们大类型文件缓存中,Squ并不比万能级差。当然,小文件按那些更优异就是毋庸置疑的。那我们再想一下我们现在的环境中的思考。对于大部分的公司的业务来说,都是由大量的一些高清图片或高清视频去组成的。小文件其实缓存的来说不太多,可以这样理解,当然也有比如我们的什么所谓的CSS啊,成列表对吧,比如我们的一些HTML静态文件等等。
09:09
但图片类和视频类缓存服务是比较多的,所以在这种情况下,我们的是比较有优势的。好,那这是我对squid的一个总结。需要大家注意一下,好好的吸收一下。那接下来呢,我们去看一下我们的squ的工作逻辑。那先看右左下角呢,是一个s secret他们的。官方图对吧,一个大章鱼。好,首先。客户机发起请求至我们的K服务器。Squ服务器健康二货过程以后,到我们的自己的本身的存储里去寻找到底有没有这个首要数据的存储文件或者缓存文件。如果没有的话,那他会去向后端服务器发起请求。后端服务器会把这个请求返回给我们服务器。
10:00
Squ服务器把数据存储到我们的缓存中,再返回一个客户端。那下一次如果过来访问的话,如果有的话,直接返回,不需要借助我们的后端服务器。这就是我们的所谓的缓存服务。那有些人可能要去问了,对吧,那对于我们square服务器来说,那如果一直一直一直这样缓存访问的话,那是不是迟早有一天会把后端服务器的所有数据都给缓存到,那这样是不是就没有所谓的二八原则的重要性了?其实你可以这样去理解。我这里有一张表。它缓存的数据会一点一点一点一点向上增加。那最上层的是不是就证明他是最不常被访问的?那我是不是就可以把它给清除。也就意味着我会设置一个最大的缓存量。以及一些缓存的一些约束。当然,如果在网上跟帖的过程中,这个,比如这个缓存文件又一次被访问了,那他就会拿下来。
11:00
最上层的被顶替掉。需要大家注意一下。这其实就是规的工作逻辑。那接下来呢,我们去看一下SK的工作模式,有三种,分别是我们的传统代理。透明代理和反向代理。虽然分了三种不同的,但是其实它是有一定联系的,比如传统代理和透明代理都是为内网用户做的一个加速访问。反向代理呢,是对公网用户做了一个。加速访问需要大家注意一下。也就是他们的应用场景是不同的。对于传统代理和透明代理。在我们的过去。再往前倒个十年。那那时候说我们的网络带宽比较昂贵,对吧,那一般来说都是KB级别的,KB级别的。那大家比如一个公司里都去访问某个网站。那大家的速度都比较慢,那这个时候可以怎么办呢?我在前端架设一个我们的传统代理或透明代理的S服务器。
12:03
所有的请求被发到squid服务器,Squid服务器向公网中的web服务器索要数据。索要完数据以后,缓存在自己本身,如果下一次有同样的员工去访问这个数据的话,那是不是就不需要到公网中请求数据,减轻我们网就是整个我们的公司的网络带宽的消耗?有点类似于我们把DNSMSQ,也就是DNS缓存服务器构建在我们的内网一样。第二类型呢,是反向代理服务器,他做的其实是对公网用户访问的一个加速,也就意味着这里我们的外部服务器是放在内网的。给公网提供服务的,在中间架设一个s square服务器,有助于我们的公网用户的访问速度的提升。这需要大家注意的。那我们一个一个去看,首先我们先看第一个传统模式。你会发现左边呢,会有一堆的内网服务器,对吧,一堆的内网服务器。
13:05
中间呢,是我们的squid代理服务器,这边是我们的公网。公网中可能会存在我们的对应的web服务器,比如是百度啊,或者是我们的上硅谷,对吧。好。那如果里面的内网去访问的话,访问公网的话,想访问公网的话,它必须要把请求交到我们的squ服务器。死窥的服务器会向公网索要数据以后,公网返回给死窥的,死馈的再返回给我们的客户端,达到这么一个代理的过程。相当于我要什么都是别人帮我去拿的,这里需要注意一下,有点类似于我们现在的所谓的什么,呃,海淘。我去找一个海淘用户,他帮我买东西。买完东西以后,再把东西寄给我,就这么一个东西,这么一个流程。那当第一个用户可能访问的是百度下的一个1.7PG,如果我们的缓存约束约束这个是被我们的缓存的话,那下用户我来访问,假设他访问的也是一点GB1G,那s squared服务器是不是已经有了呢?
14:06
就可以返回给我们的客户端。这是不是更友好啊?是吗?那传统模式唯一的缺点是什么呢?它需要这里也底下也写了,对吧?必须在每一个内部主机的浏览器上明确指明代理服务器的IP地址和端口号。这个怎么理解啊?我们给大家看一个浏览器上面的说明。好,我们打开浏览器的这里有个Internet的选项,对吧。下来这里有一个连接,连接这里是不是有个叫局域网,那设置我们点击局域网设置。好,你会发现这里有一个代理服务器,看到了吗?代理服务器。这是什么含义呢?就是告诉我这台,告诉我这个浏览器说,哎,你要是访问公网的话。
15:02
你应该找哪台服务器的哪个端口去响应。这个就是我们所谓的必须要明确指定服务器的IP端口号的原因所在。也就意味着,其实我们每一个内网客户都必须这样配置以后才能去访问公网,不然的话你是访问不到的。那问大家一个问题。虽然已经2019年了,对吧,但是计算机小白是不是依然不少。你让你公司利益没有内,你让你公司内部的每一个员工都去这样去配置,其实是有一定的实施难度的,那最终的结果可能就是你的运维或者网络工程师各个楼层跑帮你的。员工去配置这么一个东西。非常费事对吧,所以原来员工上岗手册里面有一条写的就是squ服务器怎么配置。好,那这是我们的传统模式,那既然有这个缺点,我们能不能把这个缺点给屏蔽掉呢?大能对吧,那这就是我们透明模式。
16:02
所以你从这里去看的话,其实其实没有区别,对吧,跟我们刚才这张图是不是没有区别,只是这里写了一个IP的实现而已。也就意味着我通过我们的防火墙的设置,以及其他的一些功能的设置去让我们的浏览器自动的进行转交。也就意味着这里的工作流程依然没有变,依然是我们的客户端,数据交到我们的squ squ交到我们的公网,公网返回数据给squ s给我们的客户端。那你说跟刚才的区别是什么?区别就是在我们的客户端里,不需要不需要去配置。我们的。什么代理的端口,代理的IP了。相当于是一个无痕的。也就意味着你的内网我不知道,我在我正在经历qua的服务器去上网,但是他确实又经历了squad,这是我们可以做到的。好,那这是我们的第二种模式,相信大家已经能听得懂,对吧?那第三种模式,反向代理模式。
17:06
好,那这里有个明显的区别,就是我这里的外部服务器不再是公网了,而是内网。还是内网,并且有多台对吧。好,那这里呢,是我们两个不同的公网的客户端,通过我们的。通过我们的公网去访问到我们的squid服务器,Squ服务器再去访问到我们的web服务器。那当然这里也会有一定的算法需要注意一下。s square服务器只支持。装的手笔不许。也就意味着从后端服务器挑一台出来,诶,拿数据以后返回给更网,并且把这个数据记录在本机,也就是缓存在百分之。然后呢,下一次用户公网用户过来访问的时候,如果内容一致直接返回。能理解我意思吗?可以有效的减轻我们后端服务器的压力。这就是我们的反向代理服务器。
18:09
好,那接下来继续大家看一些别的内容,比如我们的。软件包的一些说明对吧,那现在呢,我们已经到了三点几版本了。需要大家注意一下,这是125的对吧,我们现在126能到3.1G版本了,那有什么区别呢?2.6之前使用的是高级云编译的。都是高级语言对吧,只是呃,怎么说呢,类似于。好,那接着我们去往后看词汇的简介,也就是其他的一些说明。对于服务来来说呢,这里写的是ER5对吧,如果我们升级到ER6以后,它是3.1级,那在3.1级以后有个大的变更,就是它采用C语言重新重构了,这里需要注意一下。好,服务名就叫squi主程序在正目录下,主配文件在ETC下的squi下的squi.com幕下使用的端口是TCP的3128,这是它的访问日志。
19:07
当然,如果你觉得对应的配置以及你的什么端口不合你的心意的话,也是可以继续更改,对吧?在主片过程中更改即可。那我们看一些常见的一些配置选项。首先,第一个http port指定端口为3128ACCESS log指定日志。存放路径以及你的日志的用户是谁?开ma square服务器本身能够调用的,也就是s square进程,能够调用到我们的最大的内存资源。好,开启D缓存目录对吧,使用的文件系统UFS指定缓存目录在哪里,那缓存目录能够使用的最大的。存储资源造币。第一,一级目录的最大个数,二级目录最大个数没有三级目录我们之前已经说过了,对吧,最大两级目录。
20:02
House name。这是我们所谓的叫做可见名称,也就自己的缓存服务器的名称叫什么?以及DNS test name,那这是什么含义呢?就是对于我们的缓存服务器来说,或对于square来说。他一般是不是都是代理用户请求的。如果有一天他本身自自己都已经死亡的话,还能去代理用户吗?肯定不行,对吧?所以他自己有一个自我判断自己是否死亡的机制。就是去定时的测试这些公网比较稳定的一些网站是否能够正常访问。如果能正当反应,代表他自己还活着,对吧?那如果不能呢,代表他自己已经死了。那它就会发送对应的报警信息,当然这里报警信息我们一般不配。下一个maum object。这是最大缓存对象的大小。什么叫最大缓存的量大小?假设我们的开机DR现在只能用100兆B,那我现在访问了一个文件就是99兆B,那这一个文件是不是把我缓存给吃码了?
21:08
所以没必要所有的数据我们都缓存,比如说下个电影好几个G。那你都缓存了是不是没有意义,可能下一个人或者下几十个人都不会用到。那所以这里设置的是最大缓存对象的大小。也就是超过四兆B,那这个文件我就不缓存了。当然缓存,一般缓存都是我们的静态资源。不加我们cookie和session的,因为像这种类似的文件,Quick session,包括我们的动态语言,那缓存没有什么意义,对吧,很好理解,需要注意一下。好,下一个they playy body must,那这是允许我们访问的最大文件数,最大的文件,单个文件的就是大小数量。这又是什么含义呢?我们先看一下图客户端。服务器、web服务器。
22:02
我们刚才说的max max object对吧,它是通过它S去访问,访问到W,假设现在下了一个文件,比如叫1.gpeg,这个文件有一个G。如果我这里设置的是四兆壁的话。那S依然会把它代理给客户端,也就意味着客户端依然能看到这个1.gpg文件。只不过本身不会缓存这个文件而已。那这个限制的是什么呢?允许经过我的代理的最大大小,如果我们把这个值设置为这里的十兆B的话,那只要是超过十兆B的,比如这个1.gpg有一个G,对吧,那C是看不了的。也就是这是允许通过我的数据量,这是我缓存的数据量是不一样的。大家一定要能分得清。这就是我们在squared里比较常见的一些参数了。
23:02
那。这节课呢,我们就讲到这里,给大家讲讲解了一下我们的SK的相关的一些比较重要的一些参数。以及他的一些工作方式。那下节课呢,给大家,我们带大家去构建不同的类型,以及它的一些说明。那这节课我们就到这里,再见。
我来说两句