下面的回答多种多样,但总结起来便是:一个高性能的web系统须要从无数个角度去考虑他,大到做事器的布局,小到软件中某个文件的实现,乃至于某个循环内的运算如果涌现不严谨都可能导致通盘崩溃。

上面提到web性能优化须要多个角度去考虑,我们无法考虑到所有的优化细节,但可以从我们已知的层面去优化,我们就先从网络层面提及。

①网络要求路径:

jsp小红叉干货负载平衡u0026CDN技巧 Bootstrap

(客户端输入URL定位符)→(DNS做事器探求映射)→(进入做事器,处理数据)→(返回数据至客户端) 

在这个用例中我们可以很清晰的看出网络要求到返回的过程,虽然非常抽象,但足够我们以他为根本来进行优化了。

1)负载均衡

BOSS一次给了小明好多项任务,小明创造怎么安排韶光也做不完,于是乎他盯上了在阁下偷偷看电影的小强,小强溘然以为背后有一股凉气,一转头小明一脸坏笑看着他

“这几个任务交给你,晚上请你用饭,要不然…嘿嘿嘿”,小强虽然不宁愿,但是在小明的要求(威逼)下,只能服从。

第二天,小明顺利的完成了任务,给小强买了袋辣条。

在打算机上负载均衡也类似如此,我们的大BOSS客户端将要求发送至做事器,然而一台做事器是无法承受很高的并发量的,我们就会将要求转发到其他做事器。

当然真正的负载均衡架构并不是由一台server转发的另一台server,而在客户端与做事器端中间加入了一个卖力分配要求的负载均衡硬件(软件)。

DNS

名词:DNS是客户端发送要求中一个非常主要的中转,他的浸染是将用户要求的URL映射为详细的IP地址,全天下有13台根做事器,但常日为我们进行域名解析的并不是根做事器,而是直接访问我们的 LDNS(Local DNS Server),常日由网络运营商掩护。

最早的负载均衡便是利用搭建本地DNS做事器实现的,实现办法大略易懂,为同一个主机名分配多个映射 ,可采取轮循,随机等办法分配要求。

看上去没什么问题,但是在利用过程中会创造,如果个中一个地址down机,我们是无法及时创造的,如果有用户被分配到这个主机就会涌现访问失落败的状况,同时我们也无法判断每个server的负载,可能会涌现,某个server险些闲置,其余一个server负载压力极高的情形。

硬件设备

名词:负载均衡器(Load Balancer),负载均衡器常日作为独立的硬件置于客户端与做事器之间。

负载均衡设备拥有非常好的负载均衡性能,他拥有浩瀚的负载均衡策略(权重,动态比率,最快模式,最小连接数等),可以担保以相对较优的办法分配要求。

不过好的东西总是有代价的,那便是价格,一台负载均衡器的售价每每高达十几万乃至几十万,许多企业并不愿意为它买单。

反向代理

名词:Nginx。
高性能,轻量级,已经成了人们对Nginx的第一印象,Nginx可作为HTTP做事器,在处理高并发要求的时候拥有好比今主流的Apache做事器更高的性能,同时Nginx也是一个精良的反向代理做事器。

第一次听到“反向代理”,可能有些陌生,但如果理解与之对应的正向代理就很好理解了,正向代理常日由客户端主动链接,比如我们的科学的上网办法便是利用正向代理,以达到间接访问网站的目。

而反向代理在做事器端,无需主动链接,当我们访问拥有反向代理的网站时,实际访问的是其反向代理做事器,而非真正的做事器,当要求到达反向代理做事器时,反向代理做事器再将要求转发至做事器。

反向代理是实现负载均衡的主流手段之一,常日利用Nginx等做事器搭建,Nginx同样拥有浩瀚的分配策略,以担保均匀分配压力。

Nginx反向代理:

                

BIGIP(硬件)负载均衡:

2)CDN

视频总在缓冲,图片各种加载不出来,几年前是再正常不过的事了,在当时大家也没以为是回事,但把这种情形放在现在,我想人们绝对直接就小红叉了吧,那么我们如何避免这样的情形呢?这便是我要说的,内容分发网络(Content Delivery Network),简称:CDN。

CDN大略的来说便是存储一些静态文件的一台或多台做事器,通过复制,缓存等办法,将文件保存个中。

1.哪些是静态文件?

css,html,图片,媒体都属于静态文件,也便是说用户发送的要求不会影响静态文件的内容,而jsp,php等文件就不属于静态文件,由于他们的内容会因我们的要求而发生改变。

2.CDN如何实现加速?

常日情形下,我们所要的数据都是从主理事器中获取,但如果我们的主理事器在南方,而访问用户在北方,那么访问速率就会相对变慢,变慢的缘故原由有很多,例如传输间隔,运营商,带宽等等成分,而利用CDN技能的话,我们会将CDN节点分布在各地,当用户发送要求到达做事器时,做事器会根据用户的区域信息,为用户分配最近的CDN做事器。

3.CDN数据从哪里来?

复制,缓存,CDN做事器可以在用户要求后缓存文件,也可以主动抓取主理事器内容。

分布在各地的CDNS: