00:00
那接下来呢,我们看一下反向代理服务器在我们的系统架构当中的一些应用场景啊呃,在这儿呢,给大家找一张这个系统架构图,这是我事先给大家画好的。我们先从简单的来看,呃,这是传统项目当中的这个系统架构图,前面是用户,然后经过自己的网络,然后域名解析,经过互联网,然后打到我们的机房内部的这个网关,到这个网关的时候呢,会中转请求,在这里边呢,还会有防火墙,这是一道又一道的必有的这些角色啊,那我们的NG在这这个NG呢,就起到了反向代理的作用,用户想要访问我内网的任何的资源,都必须得通过这个反向代理服务器,像这种案例呢,非常非常的多,我们在呃呃2008年的时候,刚开始做了一个比较大型的英语培训在线教育的这么一个APP,现在也是上市的公司了。呃,那会儿呢,就是以NG代理了,后边的三台tomcad,性能呢非常的,呃,哇塞,给我们的这种满意程度非常高,也是我们刚刚开始初步尝试用NG做反应代理时候给我们带来的惊喜,后边三台他mca的服务器能扛住同时的300多的并发量,但要知道这个并发量也就是QPS。
01:13
不要看网上的文章啊,动不动就上万上亿,其实真实的这个企业级的项目啊,并没有那么高,这传统的互联网公司里边的项目啊,但是它也是互联网项目啊,这互联网项目对外是提供这些呃服务的有学生啊,学生家长可以登录到我们的系统里边,同时呢,并发量有300,已经非常非常的可以了。就是嗯,并发量有300的时候呢,这一个英语产品的项目,它的价值已经非成观了啊,就是同时在线,这不是同时在线啊,这是同时的点击量,每秒之内有300个人同时去点击,那你想我们同时平时上网的时候,可能打开一网页会看一会儿,对吧,你点的时候你不是上网就为了点,对不对,是为了看,看的时间要比这个点的时间更多一些,所以QPS等于300,这已经非常还可以了,很哇塞了,这还是互联网项目啊,那我们看这NX在当中起到作用就是他把几乎所有的请求全部都转发给了后端的服务器。
02:13
在这后端的服务器呢,我给大家细分了一下,这个back server啊,这基本这意思就是这个我们的后端的服务器getway,这是属于这个网关路由服务器,呃,在里边会有很多这种其他的业务服务器,比如说去管理用户注册登录的呀,管理这个商品价格的呀,呃,管理库存的呀,然后展示商品的等等等等。有非常多啊,然后数据库的这个,呃,服务器啊,还有这个。呃,测试用的服务器,文件存储服务器,一些逻辑业务服务器啊,还有这个保证高可用的ha啊,Ha的这个服务器,还有这个权限管理的服务器,这getway服务器呢,是把所有的这个呃业务服务器呢统一的管理起来,在中间呢起到的这个查找,这个寻找的作用啊,还有这个嗯,一定的这个权限建这个建群的作用,并不是说所有的请求都能访问某些服务的啊,你得经过这个get位路由服务器去做一次权限认证,也就是我们这个所有的业务逻辑呢,是放在后端的,在Tom cat上跑,然后这个NG呢,只做这个业务中转请求中转,所有的请求全都打到我们的后端服务器上啊,这是最简单的应用,也是最传统应用,这种技术架构呢,比较适合小型项目,传统项目以及这个传统的互联网项目啊。
03:33
像传统项目的一些ERP呃,CRMCMS等等这些虽然看起来非常庞大啊,动不动呢,一个压缩包就就有一两个G大小的这种源代码,对吧?啊,看起来非常庞大,但是它的这个并发量其实并不高,如果并发量并不是特别高的话,尤其是给一些内网用户使用的话啊,那我们这种直接代理过去就可以了,这是在传统项目当中,我们这个返佣代理的作用啊,来再我们再往下看。在接入到这种中小型互联网项目的时候呢,呃,前面咱们先不说啊,等等以后咱们再慢慢说我们的这个,呃,In作为返型代理服务器,它要起到更多的功能了,比如说呃,我要帮我们去伪装一下呃,当前访问的这个地址,真实地址,比如我们想要请求这个item service ID等于100,这请求呢,URL打给本来是要给我们的tomcat的,对吧?啊,然后呢,你直接给了NGNG能把这个请求直接给我转发过去,让用户正常访问,这是没有问题的,对吧?但是这种暴露URL的缺点呢,其实也是,嗯,无关大雅的,但是有时候让人看起来好像并不是那么高级,对吧?那我们可以把它换成一种展现形式,比如说斜杠item,再斜杠100,那跟这个呢,Item service,这service其实。
04:48
我没必要暴露给我们的用终端用户不是不需要让他知道这是一个什么什么服务,对吧,然后ID是啥这个呃,也不需要让他去传递了,这样看起来更好记一些对吧?这是urri这个功能,可以把原本这个URL呢,它变成这个,也是用户在请求这个请求这个URL的时候呢,通过NG可以帮我们去转换成这个。
05:12
呃,真实的URL,然后把这真实的URL呢,再转发给我们后端的服务器。这样做呢,还有另外一个好处,就是面向于一些搜索引擎啊,他可能会看起来你这是一个独立的页面对吧?啊也也有这个这么高的,你像京东淘宝都是变成了点HTML。那它真的有这么多HTML文件吗?很明显它不可能有那么多的HTML文件啊,你看京东都有数以10亿计的这种呃,单独的商品了,呃,就是单独的这个这个这个。呃,叫SKU对吧,我们在做电商的时候,淘宝要比京东更多,你不可能生成出来这么多静态,真正的静态文件,对吧?但是让浏览器上的用户看起来啊,它会比较直观好记,给我们的这个搜索引擎看起来呢?啊,这就是一个独立的页面,你给搜索引擎看,你看这个东西啊,那你这就这是一个页面,后边只是ID不一样而已,对吧?那在收录的时候,可能它的权重的就不会那么高了,但是对大型的网站,像京东和淘宝来说,这是无所谓的,他们一定会权重不会太低,当我们自己做一些初创的项目的时候。
06:18
那还是可以把这个东西呢,给它稍微的伪装一下,让它嗯,让人看起来好像是一个独立页面,它权重会更高一些,然后N这个呢,在这里边呢,不光是起到反向代理的作用了,对吧?诶还可以起到什么呢?一些额外的这些功能上,业务逻辑上的作用,比如说转发一下这个请求,改变一下URL是吧。那这是对于业务逻辑的这种转发,业务逻辑的转发呢,它的数据包不会特别大,比如说我就想要一个Jason数据,我就想去提交一下,呃,我修改的密码,这份数据那几K大小也就够了,所以在这儿的这个NG啊,它比较能扛,它可能一台这个NG后边对应了数十台这个业务逻辑服务器。
07:03
那下面这种情况就不一样了,同样是业务逻辑转发对吧,那转发到我们的NG上之后,N这个后边代理的是文件服务器,那这会儿的NG很明显就成了瓶颈了,对吧?因为你后端的呃,数据存储服务器存存储的是嗯,非常非常多的这种数据,而且数据呢非常大,比如说一些电影啊,呃,一些软件啊,非常大的这种数据包,那它在传这个传递数据的时候呢,就像我们上节课给大家讲的,这NG呢,就会成为网络的瓶颈,那么这会如果你想要用NG做反向代理的话,那你就得多配一些NG,然后去分组去代理就可以了。啊,分成好几组,然后这NG呢,怎么去分成好几组啊,其实在这这会儿呢,就可以给大家引入这个负载均衡的概念了,这是我们接下来正好要给大家讲的。负载均衡器啊。
我来说两句