知识卡片
高性能集群的本质是任务分配,"负载均衡"这个术语存在误导性
内容
单服务器无论怎么优化、用多好的硬件,性能终究有天花板,撑不住时就要靠增加更多服务器组成集群来提升系统整体处理能力。高性能集群的原理其实很朴素:因为计算本身有一个特点——同样的输入数据和逻辑,不管在哪台服务器上跑,结果都应该一样,所以集群设计真正的复杂度全都集中在”任务分配”这一件事上,需要设计合理的分配策略,把计算任务分摊到多台服务器上执行,这也意味着集群架构必然要多引入一个专门做任务分配的组件。这个组件现在通行的叫法是”负载均衡器”,但这个名字本身容易造成误导——很容易让人下意识以为任务分配的目标就是让各台服务器的负载都达到均衡状态,而实际上不同的任务分配算法追求的目标并不一样:有的确实是基于负载均衡考虑设计的,但也有的是基于性能指标(吞吐量、响应时间)设计的,还有的是基于具体业务规则设计的(比如把特定类型的请求固定路由到特定服务器)。由于”负载均衡”已经成了业界事实上的标准术语,继续沿用这个名字是务实的选择,但理解这个领域时要时刻记住:负载均衡的真正目的不只是让计算单元的负载达到均衡,把它简单等同于”平均分配”会让人在挑选分配算法时忽略掉性能优先或业务优先这些同样重要的考虑维度。
参考来源
- 位置:《从零开始学架构》第20讲《高性能负载均衡:分类及架构》开篇(源文件:_epub-src/OEBPS/text00001.html)
- 结论依据:原文说明"高性能集群的复杂性主要体现在需要增加一个任务分配器,以及为任务选择一个合适的任务分配算法",并指出""负载均衡"这个名称……会让人潜意识里认为任务分配的目的是要保持各个计算单元的负载达到均衡状态。而实际上任务分配并不只是考虑计算单元的负载均衡,不同的任务分配算法目标是不一样的,有的基于负载考虑,有的基于性能……有的基于业务考虑",直接支撑本卡片结论。
- 原始内容:高性能集群的复杂性主要体现在需要增加一个任务分配器,以及为任务选择一个合适的任务分配算法……负载均衡不只是为了计算单元的负载达到均衡状态。