深圳易捷网络科技财税咨询网-neatmaster518.com 返回首页

公司网站制作的负载均衡解决方案

信息来源:深圳市易捷网络科技有限公司
信息发布时间:2024/9/19

互联网早期,业务流量比较小并且业务逻辑比较简单,单台服务器便可以满足基本的需求;但随着互联网的发展,业务流量越来越大并且业务逻辑也越来越复杂,单台机器的性能问题以及单点问题凸显了出来,因此需要多台机器来进行性能的水平扩展以及避免单点故障。但是要如何将不同的用户的流量分发到不同的服务器上面呢

早期的方法是使用DNS做负载,通过给客户端解析不同的IP地址,让客户端的流量直接到达各个服务器。但是这种方法有一个很大的缺点就是延时性问题,在做出调度策略改变以后,由于DNS各级节点的缓存并不会及时的在客户端生效,而且DNS负载的调度策略比较简单,无法满足业务需求,因此就出现了负载均衡。

客户端的流量首先会到达负载均衡服务器,由负载均衡服务器通过一定的调度算法将流量分发到不同的应用服务器上面,同时负载均衡服务器也会对应用服务器做周期性的健康检查,当发现故障节点时便动态的将节点从应用服务器集群中剔除,以此来保证应用的高可用。

当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题。为了解决这些性能压力带来问题,我们需要在Web系统架构层面搭建多个层次的缓存机制。在不同的压力阶段,我们会遇到不同的问题,通过搭建不同的服务和架构来解决。

Web负载均衡

Web负载均衡(LoadBalancing),简单地说就是给我们的服务器集群分配“工作任务”,而采用恰当的分配方式,对于保护处于后端的Web服务器来说,非常重要。

负载均衡的策略;

1.HTTP重定向

当用户发来请求的时候,Web服务器通过修改HTTP响应头中的Location标记来返回一个新的url,然后浏览器再继续请求这个新url,实际上就是页面重定向。通过重定向,来达到“负载均衡”的目标。例如,我们在下载PHP源码包的时候,点击下载链接时,为了解决不同国家和地域下载速度的问题,它会返回一个离我们近的下载地址。重定向的HTTP返回码是302,如下图:

如果使用PHP代码来实现这个功能,方式如下:

这个重定向非常容易实现,并且可以自定义各种策略。但是,它在大规模访问量下,性能不佳。而且,给用户的体验也不好,实际请求发生重定向,增加了网络延时。

2.反向代理负载均衡

反向代理服务的核心工作主要是转发HTTP请求,扮演了浏览器端和后台Web服务器中转的角色。因为它工作在HTTP层(应用层),也就是网络七层结构中的第七层,因此也被称为“七层负载均衡”。可以做反向代理的软件很多,比较常见的一种是Nginx。

Nginx是一种非常灵活的反向代理软件,可以自由定制化转发策略,分配服务器流量的权重等。反向代理中,常见的一个问题,就是Web服务器存储的session数据,因为一般负载均衡的策略都是随机分配请求的。同一个登录用户的请求,无法保证一定分配到相同的Web机器上,会导致无法找到session的问题。

解决方案主要有两种:

配置反向代理的转发规则,让同一个用户的请求一定落到同一台机器上(通过分析cookie),复杂的转发规则将会消耗更多的CPU,也增加了代理服务器的负担。

将session这类的信息,专门用某个独立服务来存储,例如Redis/memchache,这个方案是比较推荐的。

反向代理服务,也是可以开启缓存的,如果开启了,会增加反向代理的负担,需要谨慎使用。这种负载均衡策略实现和部署非常简单,而且性能表现也比较好。但是,它有“单点故障”的问题,如果挂了,会带来很多的麻烦。而且,到了后期Web服务器继续增加,它本身可能成为系统的瓶颈。

3.IP负载均衡

IP负载均衡服务是工作在网络层(修改IP)和传输层(修改端口,第四层),比起工作在应用层(第七层)性能要高出非常多。原理是,他是对IP层的数据包的IP地址和端口信息进行修改,达到负载均衡的目的。这种方式,也被称为“四层负载均衡”。常见的负载均衡方式,是LVS(LinuxVirtualServer,Linux虚拟服务),通过IPVS(IPVirtualServer,IP虚拟服务)来实现。

在负载均衡服务器收到客户端的IP包的时候,会修改IP包的目标IP地址或端口,然后原封不动地投递到内部网络中,数据包会流入到实际Web服务器。实际服务器处理完成后,又会将数据包投递回给负载均衡服务器,它再修改目标IP地址为用户IP地址,最终回到客户端。

上述的方式叫LVS-NAT,除此之外,还有LVS-RD(直接路由),LVS-TUN(IP隧道),三者之间都属于LVS的方式,但是有一定的区别,篇幅问题,不赘叙。

IP负载均衡的性能要高出Nginx的反向代理很多,它只处理到传输层为止的数据包,并不做进一步的组包,然后直接转发给实际服务器。不过,它的配置和搭建比较复杂。

4.DNS负载均衡

DNS(DomainNameSystem)负责域名解析的服务,域名url实际上是服务器的别名,实际映射是一个IP地址,解析过程,就是DNS完成域名到IP的映射。而一个域名是可以配置成对应多个IP的。因此,DNS也就可以作为负载均衡服务。

这种负载均衡策略,配置简单,性能极佳。但是,不能自由定义规则,而且,变更被映射的IP或者机器故障时很麻烦,还存在DNS生效延迟的问题。

5.DNS/GSLB负载均衡

我们常用的CDN(ContentDeliveryNetwork,内容分发网络)实现方式,其实就是在同一个域名映射为多IP的基础上更进一步,通过GSLB(GlobalServerLoadBalance,全局负载均衡)按照指定规则映射域名的IP。一般情况下都是按照地理位置,将离用户近的IP返回给用户,减少网络传输中的路由节点之间的跳跃消耗。

实际过程是LDNS(LocalDNS)先向根域名服务(RootNameServer)获取到顶级根的NameServer(例如.com的),然后得到指定域名的授权DNS,然后再获得实际服务器IP。

CDN在Web系统中,一般情况下是用来解决大小较大的静态资源(html/Js/Css/图片等)的加载问题,让这些比较依赖网络下载的内容,尽可能离用户更近,提升用户体验。

例如,我访问了一张imgcache.gtimg.cn上的图片(腾讯的自建CDN,不使用qq.com域名的原因是防止http请求的时候,带上了多余的cookie信息),我获得的IP是183.60.217.90。

相关行业资讯

1、深圳营销网站建设,营销型网站怎样建设才能吸引访客?
2、当一个程序员写不出代码了,该怎么办
3、深圳网站设计公司哪家好|睿思网站设计公司
4、网站建设价格是由什么决定的
5、如何做一份高质量的网站策划方案
6、企业资讯页面的内容设计思路是什么
7、百度再次告诉我们:站长做好你的用户体验
8、云无限seo优化软件有何功能
9、网站应不应该购买外部链接
10、2017年企业推广优化玩法前瞻
11、如何通过设计提升网站的气质和品质
12、网站建设时要注意哪些问题的呢
13、网站中用户点击的主要原因
14、网站制作中如何打造完美的导航
15、网站建设对企业发展有何价值
16、企业网站制作在哪里插入验证码功能才适合
17、不同设计类型需要怎么去表现
18、为何推广专员纷纷转型,推广优化真已穷途末路
19、网站友情链接:文字or图片
20、如何根据网站建设的类型选择空间
21、BlueHost主机开启CloudFlareCDN服务教程
22、做网站其实不只是网站,还有这些
23、企业做网站有什么好处
24、网站结构该怎么去优化
25、网站微调优化技术你知道多少
26、优质的网站要备什么样的要素呢
27、网站优化思路方法之个人见解
28、桥页是什么意思
29、海南网站建设正确的流程有哪些
30、怎么样选择和布局网站关键词
31、做网站内链起什么作用
32、网站被降权后的该如何进行补救_深圳网站制作公司
33、网络媒体编辑的操守在哪里
34、评判一个网站好坏的5大因素
35、怎么做网站最便宜
36、浅谈怎么找出网站的核心关键词
37、关于网站建设未来的发展
38、营销网站建设的核心内容是什么
39、优化:选择关键词不可不注意的4大原则
40、做独立博客坚持写博的五种态度
41、网站建设的前期准备工作很重要
42、如何做好网站设计色彩搭配
43、网站制作浅谈伪原创怎么做的
44、网站过度优化导致堆砌的问题
45、网站头部Meta标签优化方法
46、百度天级收录api的最佳提交方案
47、谈谈博客建设那点事
48、乐山网站建设不可忽略的三大优化要点
49、社区运营常见的三大错误
50、什么样的文章能够吸引用户转发
深圳市易捷网络科技有限公司版权所有    粤ICP备2022153140号