负载均衡第一篇-介绍篇
系列文章索引:
负载均衡第一篇-介绍篇
负载均衡第二篇-负载均衡基础知识普及
前言:相信朋友们对负载均衡应该不陌生了!特别是对搞运维的朋友!可能很多的技术人员认为,负载均衡不是搞IT运维的人管的吗,关我们开发人员什么事情?曾经,我也是这样想的,但是后来发现我错了。开发人员,需要懂性能方面的问题,而负载均衡也是属于性能的范畴,so…!如果开发人员想继续不断的提升自己,走向设计,架构的角色,那么,你就必须对技术的有全面的把握和整体的评估,才能在项目中从软件和硬件多方面考虑,真正的实现可用性,扩展性,灵活性。
曾经经历过很多的项目,特别实在做外包的时候,基本上涉及不到什么性能的问题,极少涉及到负载均衡。当我接触了互联网之后,常常被人笑话我是搞企业开发的,不懂性能,于是我开始关注性能,也知道有负载均衡,那时候,感觉思维一下子被打开了,发现了一个不一样的天地!但是负载均衡缺少很多的资料,网络上很多的地方和文章都只是讲了点皮毛,刚要深入的时候,就没了!
技术,入门容易,学精难!不精,就没有核心竞争力,因为谁都懂,谁都可以替代你!所以要精!
在这里,我将会深入的剖析负载均衡的原理,使用!甚至你可以感觉到,之后,你可以自己写一个负载均衡的软件出来!之后,在分析问题,思考问题的时候,你会游刃有余!
….
负载均衡已经不是什么新的概念了,负载均衡也不仅仅就指的把一些服务器放在一起实现分压。负载均衡是一个统称。而我们平时谈的最多的就是服务器负载均衡,全球负载均衡,防火墙负载均衡,缓存负载均衡!(在后面,会慢慢的讲述各个方面)。
就拿服务器负载均衡而言,它主要是把请求分摊在多个服务器资源上面。负载均衡还可以实现很精确的服务器健康检查机制,请求的转发。另外,因为负载均衡部署在服务器的前端,所以,它也可以包含服务器免受恶意用户的***,提高安全。同时,还可以基于IP数据包中的信息进行智能的选择不同的程序,不同的服务器来处理!
负载均衡的必要性
随着互联网的普及,越来越多的人开始在线使用服务。同时,也不能容忍网络突然崩溃或者网速、服务的性能超低,特别是对于涉及到网上交易的应用而言,任何一点问题的出现,都是重大的经济损失。为了保证提供更好,更稳定的服务,我们会不断升级服务器的相关设备。
虽然说根据摩尔定律:计算机的处理速度每18个月会翻一番。但是这个速度依然赶不上互联网放在的速度和用户对服务的需要,并且购买更好的设备,不仅仅昂贵,性价比也不理想。
那么这里其实就已经涉及到了一个可伸缩性的挑战。下面,我们就来看看一些常用的可伸缩性方案。
正如之前所说的,计算机的更新速度无法赶上用户需要,这个时候集群技术就应用而生了,这个技术主要是那些大型计算机厂商提供的,集群技术的提出在一定的程度上面缓和了之前的问题。下面,我们就来看看两种比较典型的集群技术:松耦合系统,对称多处理器系统。
松耦合系统
松耦合系统是由很多的完全相同的计算机块组成,这些计算机块之间通过系统的总线连接。其中,每一个块都包含各种的处理器,内存,磁盘控制器,磁盘驱动,网络接口等。其实,每个块都可以看出是一个独立的计算机,只不过现在他们被聚在了一起。下面的草图显示这个关系:
这个图,非常熟悉,我这里只是简述一下!OSI,就是开放的网络协议的标准了。从图中可以看到,这OSI模型,定义了七层,从物理层一直到最上面的应用层。网络协议,例如Tcp,UDP,IP,Http等分别对应模型中的不同层。其中IP协议处于第三层,TCP,UDP处理第四层。
大家就要问了?这个有啥用呢?
我们又知道:传统的路由器和交换器会位于OSI的第二或者第三层。也就说,它们决定了一个数据包必须如何被处理以及必须发往何处。尽管第二、三层的交换器做了非常了不起的事情,但是,其实在数据包的头信息中,有更多的有价值的信息没有被使用。如果我们在这个时候,将数据包获取,然后分析里面的头信息,然后将请求按照我们的需要进行转发,那么就可以在第二、层实现负载均衡等技术。这也是我们常常看到或者听到的Layer 2/3 Switching。
另外,如果在第四层到第七层中获取数据包,分析头信息,然后按需转发请求,就是所谓的“Layer 4 through 7 Switching”。在第四层中,TCP和UDP的头中包含了大量的信息,而这些信息可以使得我们更加智能的实现请求的转发。例如,当用户发送Http请求到部署到Tcp 80端口的站点的时候,我们可以分析通过分析头信息得到这个信息,从而可以将请求转发到其他的服务器上去。
今天先到这里,东西不多,废话可能一大堆 J!