负载均衡的一些思考

2018年06月03日 09:06 | 927次浏览 作者原创 版权保护

对于 Web 站点的水平扩展,负载均衡是一种常见的手段,在介绍负载均衡的多种实现方法之前,我们先来思考一些问题。 我们先将目光转向一个类比的例子,假如某公司有一个小型团队,需要承担一定的工作量,开始的时候,大家各尽其能,非 常轻松地就可以完成工作,不亦乐乎。但是,随着公司的发展,这个团队的工作量逐渐增大,超出了团队成员的承受能力, 工作完成质量开始下降。 

外包 

出于一些考虑,这个团队决定将一部分工作任务外包给其他公司来做,以减轻自己的负担,同时由团队中的一个人负责与外 包公司进行长期沟通,这里我们称他为外包接口人。 显然,外包使得团队承载能力的扩展成为可能,而且随着工作任务的继续增加,一家外包公司无法应付,这个团队又找到了 更多的外包公司同时进行合作,外包接口人负责与这些公司分别进行沟通。 这样一来,公司只需要花费一个人力和一些费用,就可以完成大量持续增加的工作任务。 

接口人

 突然有一天,外包接口人由于病假没能来公司上班,这下公司着急了,因为与外包公司的沟通工作需要时刻进行,而只有这 名外包接口人熟悉这个工作,这使得原本有序的外包工作不得不受到严重影响,多家外包公司暂时停了下来,直到第二天这 位外包接口人回到公司后,外包工作才恢复正常。

显然,这位外包接口人非常关键,他的缺席将会影响整个外包工作的正常进行,这也许是致命的,我们将这种情况称为单点 故障(Single Point of Failure),如果公司只依赖一个因素、系统、设备或人,就会暴露出单点故障的隐患,所以,我们应该尽 量避免单点故障。 

为此,公司为这位外包接口人配备了一名助理,全力协助他的工作,并且当他偶尔不在公司的时候,助理可以很好地充当他 的角色继续工作。

工作量分配 

刚才说到,外包接口人需要跟多个外包公司进行沟通,并且将工作任务持续不断地分配给他们,那么,在任务分配过程中, 可能发生这样一些情况:

     给有些外包公司分配了太多的任务,其中一些任务没能按时完成; 

    有些外包公司比较闲,可是却没能及时给他们分配任务; 

    有些外包公司业务能力差,却给他们分配了高难度的任务,花费了大量的时间,最后还可能无法完成;

    有些外包公司业务能力强,却给他们分配了非常简单的任务,支出了不必要的高额外包费用。 

如此一来,我们看到一个最优化任务分配的问题,当然,这个问题是需要外包接口人来考虑的,同时,他需要借助一些过程 管理方法来掌握各外包公司的进度和状态,了解各外包公司的“负载”,以帮助自己更加有效地分配任务,实现外包工作的负 载均衡(Load Balancing,LB)。

风险管理 

尽管我们已经在一定程度上避免了外包接口人的单点故障,降低了风险,但是外包公司方面仍然有可能出现问题,在必要的 时候,我们需要采取行动,将任务快速转移给其他的外包公司,当然,前提是有足够的备用外包公司可以选择。 

从避免单点故障到准备备用方案,都是降低外包工作风险的一系列措施,同时也保障了外包工作的不间断运转,或者称为高 可用性(High Availability,HA)。www.vxzsk.com V型知识库整理

制约 

当更多的工作任务需要外包时,这位接口人的工作有点吃不消了,因为: 

一个接口人负责大量的任务,与多家外包公司分别进行沟通,这几乎花费了他全部的工作时间; 

一个接口人管理多家外包公司,已经超出了他的管理能力。 

显然,这些原因也是制约接口人处理更多外包工作的因素,这些因素限制了外包工作的无限扩展。 这时,公司决定设立更多的外包接口人,成立一个新的团队,其中每位外包接口人分别负责管理一部分外包公司,并跟进相 关的外包工作。最终的外包工作关系图如图 2-1 所示

在以上假想的外包工作场景中,我们遇到了一系列的问题,并提出了解决方案,这些问题在 Web 站点扩展的过程中同样存在, 你仍然可以带着这些问题继续前进,接下来我们将回到 Web 站点扩展的主题中,探讨如何实现可扩展的 Web 负载均衡系统,当然,除了我们关注的性能之外,高可用性也会有所涉及。


此文章本站原创,地址 https://www.vxzsk.com/1031.html   转载请注明出处!谢谢!

感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程