我面试电商行业的经历-负载均衡

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zxh19800626/article/details/50190761
一、发发牢骚

  转眼之间,在IT行业的道路上已经走过了8载,虽然每天没日没夜的辛苦的工作,辛苦的学习,加上年龄越大,学习越吃力,但是仍然跟不上新技术涌现的脚步,有种被技术抛弃的感觉,这是一个技术更新换代日新月异的时代。

知识的积累很重要,从事了很久的编程,但是仔细想起来,没有那一项技术真正很透彻的了解其原理,每天机械的coding,很少去思考事情的本质。最近,下定决心利用辞职这段时间来梳理一下自己的知识,只有这样才有所沉淀,才有所积累。

我以前没有接触过电商平台,最近一段时间去其它公司面试,和同行交流了一下,发现自己对前端知识一知半解。同时,也对电商网站发生了很大的兴趣。其实面试也是一个和同行很好的交流的机会,通过面试可以发现自己知识结构的缺陷,自己的优势所在,能让自己更清醒认识自己,选定适合自己的技术方向前进。

最近的面试,发现面试官经常会问到你的职业规划是什么?这也是很多程序员经常思考的问题,毕竟写程序是个青春饭,大多数程序员一般会想,将来做管理,做架构师。对于不擅长交流的、技术痴迷的程序员,每天专注于技术的程序员,有个更好的警醒作用,更好的思考自己10年以后,当自己成为一个老程序员应该做的事情。

二、服务器负载均衡

  电商平台还是其它平台,都存在系统优化的问题,系统优化大体上而言,主要从网络、磁盘IO、内存和CPU资源几个方面考虑。我最近的学习路线也是从这4个方面入手。每一个方面包含的知识太多,我只捡我最近面试时,回答的不是很好的地方来谈一谈。先谈谈负载均衡了,有兴趣的同行,大家可以互相交流一下,下面是我搜集资料的一点体会。

     web 负载均衡的作用就是把请求均匀的分配给各个节点,它是一种动态均衡,通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把请求理分配出去。对于不同的应用环境(如电子商务网站,它的计算负荷大;再如网络数据库应用,读写频繁,服务器的存储子系统系统面临很大压力;再如视频服务应用,数据传输量大,网络接口负担重压。),使用的均衡策略 (算法)是不同的。 所以均衡策略(算法)也就有了多种多样的形式,广义上的负载均衡既可以设置专门的网关、负载均衡器,也可以通过一些专用软件与协议来实现。   在OSI七层协议模型中的第二(数据链路层)、第三(网络层)、第四(传输层)、第七层(应用层)都有相应的负载均衡策略(算法),在数据链路层上实现负载均衡的原理是根据数据包的目的MAC地址选择不同的路径;在网络层上可利用基于IP地址的分配方式将数据流疏通到多个节点;而传输层和应用层的交换(Switch),本身便是一种基于访问流量的控制方式,能够实现负载均衡。

 

三、负载均衡的算法

服务器的负载均衡算法很多,包括持续性的和非持续性的。基于负载均衡的算法主要有下面几种:轮循(Round-Robin)、最小连接数(Least Connections First),快速响应优先(Faster Response Precedence),散列算法。

1、轮循算法

   就是将来自网络的请求依次分配给集群中的节点进行处理。

2、最小连接数算法

就是为集群中的每台服务器设置一个记数器,记录每个服务器当前的连接数,负载均衡系统总是选择当前连接数最少的服务器分配任务。 这要比"轮循算法"好很多,因为在有些场合中,简单的轮循不能判断哪个节点的负载更低,也许新的工作又被分配给了一个已经很忙的服务器了。

3、快速响应优先算法

根据群集中的节点的状态(CPU、内存等主要处理部分)来分配任务。 这一点很难做到,事实上到目前为止,采用这个算法的负载均衡系统还很少。尤其对于硬件负载均衡设备来说,只能在TCP/IP协议方面做工作,几乎不可能深入到服务器的处理系统中进行监测。

四、负载均衡的方式

上面是负载均衡常用的算法,基于以上负载均衡算法的使用方式上,又分为如下几种:

1、DNS轮询

最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。

DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。当使用DNS负载均衡的时候,必须尽量保证不同的 客户计算机能均匀获得不同的地址。由于DNS数据具备刷新时间标志,一旦超过这个时间限制,其他DNS服务器就需要和这个服务器交互,以重新获得地址数 据,就有可能获得不同IP地址。因此为了使地址能随机分配,就应使刷新时间尽量短,不同地方的DNS服务器能更新对应的地址,达到随机获得地址,然而将过 期时间设置得过短,将使DNS流量大增,而造成额外的网络问题。DNS负载均衡的另一个问题是,一旦某个服务器出现故障,即使及时修改了DNS设置,还是要等待足够的时间才能发挥作用,在此期间,保存了故障服务器地址的客户计算机将不能正常访问服务器

2、反向代理服务器

     使用代理服务器,可以将请求转发给内部的服务器,使用这种加速模式显然可以提升静态网页的访问速度。然而,也可以考虑这样一种技术,使用代理服务器将请求均匀转发给多台服务器,从而达到负载均衡的目的。

   这种代理方式与普通的代理方式有所不同,标准代理方式是客户使用代理访问多个外部服务器,而这种代理方式是代理多个客户访问内部服务器,因此也被称为反向代理模式。虽然实现这个任务并不算是特别复杂,然而由于要求特别高的效率,实现起来并不简单。

使用反向代理的好处是,可以将负载均衡和代理服务器的高速缓存技术结合在一起,提供有益的性能。然而它本身也存在一些问题,首先就是必须为每一种服务都专门开发一个反向代理服务器,这就不是一个轻松的任务。

代理服务器本身虽然可以达到很高效率,但是针对每一次代理,代理服务器就必须维护两个连接,一个对外的连接,一个对内的连接,因此对于特别高的连接请求,代理服务器的负载也就非常之大。反向代理方式下能应用优化的负载均衡策略,每次访问最空闲的内部服务器来提供服务。但是随着并发连接数量的增加,代理服务器本身的负载也变得非常大,最后反向代理服务器本身会成为服务的瓶颈。

3、地址转换网关

支持负载均衡的地址转换网关,可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的。很多硬件厂商将这种技术集成在他们的交换机中,作为他们第四层交换的一种功能来实现,一般采用随机选择、根据服务器的连接数量或者响应时间进行选择的负载均衡策略来分配负载。由于地址转换相对来讲比较接近网络的低层,因此就有可能将它集成在硬件设备中,通常这样的硬件设备是局域网交换机。

 

没有更多推荐了,返回首页