00:00
好,了解了单一架构,我们很自然的会想到一个问题,我们项目的架构呢,为什么会从单一架构演变到分布式架构,哎,其实很简单,就是因为我们这个时代呢,给我们提出了更高的要求,哎,我们这个时代的特点呢,就是我们进入到了互联网时代。哎,互联网时代的新挑战有哪些新挑战呢?一个叫高可扩,一个叫做高性能,哎,一个叫做高并发,哎,咱们来探讨一下啊,首先这个高可阔指的是什么意思呢?所以我们这个项目呀,它设计架构的时候,就要考虑到这个功能的持续更新,互联网我们互联网圈子里边有一句话叫做小步快跑啊,就说每次呢迈一小步,但是呢,我要呃加快我迈步的这个频率啊,我要飞速的往前跑,但是不是说我憋大招,说我过了好长时间呢,然后就。
01:12
再有一个大的更新不是这样的哈,它只是说我们这个,呃,那样的话,你就像咱们在介绍这个敏捷开发的时候啊,你这样的话很就是对用户的体验,对于市场的变化呢,就会很反应很迟钝,就不能够非常及时的了解到这个市场和用户呢,新最新的这个动向,而是持续的啊,不断的要有小的功能去推出来,让用户能够体验到,所以说呢,我们这个是要持续的更新,可是持续的更新呢。你一个项目哈,随着你开发的,开发的功能越来越多,它里边的这个东西呢,会越来越多,它们彼此之间的这个耦合度呢,其实也会越来越高,彼此之间的这个依赖啊,他们互相之间有越来越复杂的这个调用的关系,所以说呢,其实项目越开发,它这个绑的就越紧啊,所以这个时候其实是设计上让我们这个项目啊,是一个有弹性的这么一个架构,其实这个还是有很大的这个难度的啊,需要综合考虑方方面面的这个因素,举一个例子,比如说你想设计一个汽车。
02:20
这个汽车呢,这是它的轮胎。那么轮胎之间的这个距离,我们说这个叫做轴距啊,轴和这个车轴的这个距离,这个轴距呢,其实我们不仅仅是这个,不仅仅是它本身的这样一个含义,它还会决定到我们整个这个底盘的这个尺寸啊,会决定到底盘的尺寸呢,就会去决定我们呃,发动机放在哪儿,变速箱放在哪儿,传动桥怎么去安排啊,然后怎么去呃,怎么去传动,然后这个油箱,整个系统里边这个油的设计,包括我们电路的设计啊,然后包括我们车的内饰啊外壳呀,哎等等等等啊,这个后备箱等等所有的这一切啊,这些参数,其实再往下去追的话,跟这个底盘跟我们轴距都有很大的关系,这个时候如果呃。
03:16
产品经理过来给你提一个要求,说哎,你能不能够把这个轴距给我加宽三厘米啊,我想让这个车里边的空间大一点啊,这个时候这设计师就一口老血就喷在屏幕上啊,因为这个牵一发而动全身,这儿一改,后边所有的参数啊,方方面面的都要跟着改啊,这个时候差不多等于要重新设计一遍啊,这个就非常的困难了,所以我们这个项目也是一样啊,里边的功能越复杂,他将来他想做一些个越底层的修改就会越麻烦啊,所以说高可阔其实这个不是很容易能做到的。高性能,什么是高性能,是说我们整个这个系统啊,啊就是说嗯,系统去处理一个请求的时间。
04:07
哎,要尽可能啊,尽可能的短啊,就是说这个每个请求的时间啊,尽可能的去缩短这个时间的话,就减少用户等待的时间啊,去优化我们用户的体验,这个说简单,我们只是说你看我把这个用户等待的时间呢,以前可能是这个零点呃六七秒啊,那现在呢,我们要把它去缩短到零点呃四八秒啊,你看看仅仅只是说我们去缩短这个0.1秒左右的这个时间啊,这个这个看上去是一件很很小的事儿,但是其实我们在背后可能要做非常大的这个努力。
05:00
啊呃,有这个里边呢,涉及到很多的方面,一个服务器,可能我为了提高性能,我去用更好的CPU,用更大的这个内存啊,有可能呢,我需要去呃,加缓存,加red加集群啊,然后哎,MYSQ这边呢,我们查数据库呢,进行这个相关的这个优化,甚至于说呢,一个请求里边的操作太多,我们要把它转成一个异步的啊,就是说哎,有的操作呢,不让他们顺序的去执行了,按顺序顺序去执行,步骤太多的话,他就要等的时间比较长,那么我们把它拆开,让它好多个步骤可以并发的去执行啊,这些呢,都是提高我们响应速度的一些个办法啊,所以说这个提高响应的这个速度,哎也是哈,要综合考虑到项目架构里边的方方面面,然后呢,去综合的去解决这样一个问题啊,他这个事儿说实在的也不是那么容易能做到的。
06:00
啊。哎,就是说这个叫做提高我们的响应速度,哎,处理一个请求的时间尽可能的的,然后呢,还有这个高并发是什么呢?是说呃用户访问量,访问量非常大啊,呃,会增加我们系统的并发,这个啥叫并发呢?啊说这个并发和用户访问量是不是一码事呢?哎,这个事儿我觉得大家一定要去分清楚啊,并发和这个访问量其实还不是一回事儿,为啥呢?呃,假设这是咱们他们CA,你过来一个请求啊,你过来一个请求,然后这个tomca呢,你就算这个时间再短啊,你这个就是呃,20毫秒,十毫秒,五毫秒啊是吧,一毫秒去处理这个请求,那你一毫秒也是一毫秒啊,我们人。
07:02
但可能感觉不到一毫秒是多长时间是吧,不知道是不是一眨眼的时间,但是这个对于程序来说,它确确实实处理一个请求是需要花时间的,那么这个请求没处理完的时候,这个时候又有了别的请求过来。他肯定是要去,哎,每个请求都需要花时间,那么每个请求,这个请求没处理完呢,我们又来新的请求了,新的请求也要处理,那么这个并罚呢,就是他同时处理的这个请求啊,同时处理的就说都是处在这个正在执行的这个过程,都在这个过程里边啊,你是五毫秒也好,你是三毫秒也好,哎你是20毫秒,是60毫秒啊,哎,那你这个时候都是在这个过程当中,哎,那没有处理完正在处理的这些请求,同时现在看他有多少个,有多少个的话,就是有多少的并法,那么我们汤姆K呢。汤姆猫啊,它不经过优化的话啊,它的并发能力是多少呢?大概是这个300~500这样。
08:07
300~500的这样的病房啊,这个时候这个也不是一个特别准确的数字哈,因为它跟你这个硬件服务器什么的,跟你的操作系统啊,都会有一定的这个关系,跟你的带宽其实也有一定的关系,所以这个只是大概的这样一个数。经过优化以后呢,具有的资料说呢,它能够达到2000,所以说呢,其实一个汤MKT呀,它的一个并发能力啊,并不是特别强,那么前面如果我们加了这个N尼克斯的话,哎,那么哎如果加了N尼克斯的话,一个N尼克斯呢,它能够去支撑5万的并话,哎要说的话呢,5万并发已经这个哎对对,后边不能加大发量了啊,5万的并发已经是已经是这个挺大的发问量了啊,但是呢,和我们说这个双11啊12306呀,春晚摇红包啊对吧?等等这些哈,他们还不能比啊,所所以说呢,这个如果说还扛不住的话,像恩尼X这样的也需要再去配机群啊,甚至于说我们用这个LVS呀,用这个F5啊是吧?哎,F5是一个硬件的负载均衡服务器啊,那这个LVS呢,是它能够它是一个软件的负载均。
09:22
系统它能够实现硬件负载均衡服务器的大概60%的性能,哎,就是总之呢,就是要需要用类似这样的这个办法去提高我们这个系统并发的这个能力啊,不然的话,同时一下子有。多少万这个用户过来,然后一下子就会可能并发量一大,把我们这系统整个给压垮啊,因为你这个项目呢,它是暴露到了互联网上,互联网只要能上网的人,别人知道你这个域名,知道你这个网站,他就都能够来访问你啊,所以说这个。这个并发的呢,是所有互联网应用啊,都有可能会遇到的啊,但是这个当然从这个呃,商家的角度来讲,从从我们这个老板的角度来讲哈,肯定用户访问量越越大越好啊,用户量越大,他就越可以从投资人那边呢,融到更多的钱,对企业的发展是有好处的啊,但是这个时候话说回来,从我们技术的这个角度上来讲,用户的访问量越大,他这并发量相应的也就会越大啊,就需要我们去相应的采取一定的措施呢,去解决这个问题,哎嗯,所以说这个互联网应用啊,它是必须要考虑这个并发的问题的,而我们传统的软件开发呢,其实不太需要考虑这个问题啊,一个企业管理系统,你一个公司才多少人,你同时所有人都上,它这变发量也也到不了哪儿去啊,所以这是所这些都属于我们互联网时代给我们呃发出的新的挑战啊,就是为了应对这样的挑战,我们的架构啊,架构整体的设计,包括。
10:55
我们模块之间的调用。包括我们的。哎,中间件的使用啊等等,都是为了去应对这样的挑战。
我来说两句