作者 | 吴纹羽

来源丨https://www.cnblogs.com/mokafamily/p/4402366.html

曾经见到知乎上有人问“为什么像facebook这类的网站需要上千个工程师维护?”,下面的回答多种多样,但总结起来就是:一个高性能的web系统需要从无数个角度去考虑他,大到服务器的布局,小到软件中某个文件的实现,甚至于某个循环内的运算如果出现不严谨都可能导致全盘崩溃。

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

①网络请求路径:

(客户端输入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:

公众号后台回复【2T】有惊喜礼包!

2T架构师学习资料干货分享

简述负载均衡CDN技术相关推荐

  1. 两小时搞定负载均衡51CTO技术沙龙现场视频2

    田逸田老师幽默风趣的案例讲解 7月5日下午,51CTO技术社区主办的"两小时搞定负载均衡 全真实战案例解析"活动圆满结束.参加沙龙的100多位用户和嘉宾相聚近三个小时,生动的课程. ...

  2. 网络负载均衡相关技术-DNS

    DNS负载均衡技术是最早提出的用来解决负载平衡的技术,它的实现方式是通过DNS 服务中的名称随机的来解析,进而实现负载平衡.即同一个名字可以用于多个不相同的地址,当用户查询这个名字时,随机得到其中的一 ...

  3. 关于负载均衡点点技术总结

    1.最常见 nginx 2.还有linux虚拟服务器 简称LVS 3.还有一个收费技术Radware 维基百科:https://zh.wikipedia.org/wiki/%E8%B4%9F%E8%B ...

  4. mysql 高并发 集群架构_一种高并发的GPU集群架构及其负载均衡方法技术

    [技术实现步骤摘要] 一种高并发的GPU集群架构及其负载均衡方法 本专利技术属于GPU集群架构及其负载均衡方法 ,特别是涉及一种高并发的GPU集群架构及其负载均衡方法. 技术介绍 GPU因其高性能的并 ...

  5. 网络负载均衡相关技术-第四层交换功能

    第四层交换功能的实现,也就是我们经常提到的虚拟IP 地址( VIP) 方法,这个地址并不是与特定的计算机相连,也没有与计算机中的网络接口卡相连.它的实现过程是当数据包发送到这个VIP 地址时,通过第四 ...

  6. 网络负载均衡相关技术-服务器负载

    服务器负载均衡( SLB) 是目前最常用的,它是通过将一台服务器虚拟化,表示成一组服务器,即一个服务器群,用来平衡各个服务器的信息量,控制对某一台服务器的访问量.

  7. 网络负载均衡相关技术-七层负载

    第七层是web 内容交换技术,即对访问流量的高层控制方式,通过对应用层内容的切换,将这种真正有意义的信息,结合我们对负载均衡设备的特定设置,进行服务器的选择.

  8. DNS负载均衡与CDN内容分发技术

    负载均衡:负载均衡技术能平衡服务器及群众所有的服务器和请求应用之间的通信负载,根据实时响应时间进行判断,将任务交由负载最轻的服务器来处理,以实现真正的智能通信管理和最佳的服务器群性能,从而使网站始终保 ...

  9. 服务器负载均衡 链路负载均衡 《CDN技术详解》

    1. 服务器负载均衡 服务器负载均衡是将客户端请求在集群中的服务器上实现均衡分发的技术.按照位于七层网络协议栈的不同层的划分,服务器负载均衡可以分为四层(L4)负载均衡和七层(L7)负载均衡两种. 1 ...

  10. 负载均衡原理与技术实现

    负载均衡(Load Balance,简称LB)是一种服务器或网络设备的集群技术.负载均衡将特定的业务(网络服务.网络流量等)分担给多个服务器或网络设备,从而提高了业务处理能力,保证了业务的高可用性.负 ...

最新文章

  1. MySQL视图的创建、修改与删除
  2. 多层感知机MLP、RBF网络、Hopfield网络、自组织映射神经网络、神经网络算法地图
  3. Python_Nginx
  4. python 利用 for ... else 跳出双层嵌套循环
  5. spring原始注解
  6. 对于初学者而言!如何处理 Python 入门难以进步的现象?
  7. 2018.12.08 codeforces 939E. Maximize!(二分答案)
  8. 如何在Linux下创建与解压zip, tar, tar.gz和tar.bz2文件 .
  9. ExtJs2.0学习系列(2)--Ext.Panel
  10. div是html5新元素,HTML5编码新元素的介绍
  11. java8实战教程,[JAVA] 汪大神Java8新特性及实战视频教程完整版
  12. 树莓派I2C控制DLPDLCR230NPEVM(python改写c)+注意事项
  13. Kali Linux 详细安装步骤
  14. 学校计算机室应该配备哪种灭火器,学校教学楼应配备哪种灭火器
  15. 青云科技以开放姿态打造低代码平台
  16. Please sign in with an app-specific password
  17. 【小工具】自定义键盘快捷键切换音频播放设备、快速开关切换静音
  18. 互联网摸鱼日报(2022-11-24)
  19. 一个不错的培训班,廊坊师范学院信息技术提高班
  20. GitCode创建项目仓库并上传代码(git)

热门文章

  1. Java 读取文件方法大全
  2. XP系统下如何把FAT32转换成NTFS格式的?
  3. 19. 删除链表的倒数第N个节点【双指针经典应用】详解
  4. Git 报错:error: The requested URL returned error: 401 Unauthorized while accessing
  5. UNIX环境高级编程之第6章:系统数据文件和信息-习题
  6. nuke软件功能有哪些?苹果Mac影视后期特效合成软件NUKE 13
  7. indesign教程,如何创建和编辑图层?
  8. 矢量绘图软件Sketch 82 for mac
  9. 如何在 Mac 上修复丢失的鼠标光标?
  10. 如何在Mac上合并日历