面试回答:什么是负载均衡
theme: cyanosis
我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第4篇文章,点击查看活动详情
当面试官问你:了解负载均衡吗?怎么回答,需要从什么角度回答该问题呢?
负载均衡
均衡,主要说的是均衡分配的,分配的是负载(工作任务或访问请求),在集群服务、网络连接、CPU、磁盘或其他的资源中进行分配。
主要目的是:达到最优化资源使用,最大吞吐率、最小化响应时间,完成高性能、高可用,易扩展的工作。
常说的负载均衡,说的是对请求负载均衡,用户请求均衡分发到不同的服务端。
常见如 Nginx 。某服务可能部署了多个实例,当用户请求时,通过负载均衡策略将请求转发到内部的服务集群中的某个服务。对于用户来说始终是通过一个域名访问服务,也不关心到底部署多少台。这样即便在用户请求过程中某实例出问题,就会有其他实例服务对用户的请求进行响应,用户无感知服务出问题,保证服务的高可用。
还有一个负载均衡是数据存储的负载均衡。对用户数据均衡分发到不同的存储层。比如,分库时,通过订单Id ,hash 取模,分配到不同的数据库。
负载均衡策略
轮询
将请求按顺序轮流的分配到服务器上。每个服务平均分担所有的请求。由于不关心服务的连接数和当前服务器的负载情况,当每个服务器配置不同,性能差别大时,就无法区别对待,产生问题。
权重
对每个服务器都增加设置一个权重值,比如性能好的设置权重高点,性能差的设置权重低。这样在分配服务权重大的更容易分配,达到“能者多劳”的效果。
哈希和一致性哈希
根据某 key 通过哈希算法,然后落在对应的节点上,可以保证同一个 key 都落在相同的服务器上。比如使用用户 UserId 计算哈希值,落在某服务器上。用于控制部分用户都在分配该服务器。但是当服务器出现宕机,就可能导致哈希键重新分布,造成命中率大幅度下降。所以可以使用一致性哈希,故障后有其他节点代替
最小连接数
每次请求都分配给连接数数量最小的服务器。可以根据服务器的负载情况来进行请求动态分发。服务器性能好的,一般处理请求比较快,积压的请求比较少分配到更多的请求。这样可以避免某个服务器因处理超出负载而出现问题。
还有很多其他的算法,可以根据的需求使用。
面试回答
所以,如果回答该面试问题的话,我会从下面几个角度,逐步回答自己的对负载均衡的理解:
- 先从是什么进行回答
负载均衡是高可用网络基础架构的关键组件。在集群或分布式环境下,经常用于请求均衡命中到指定的服务器上。当然还有数据存储负载均衡,在分库分表下,分发到对应的存储里。
- 使用负载均衡带来好处或者目标,
用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。
- 平时工作中哪些常见使用:Nginx,请求分发。比如某服务部署多个节点。
参考资料