最近非常频繁的接触到Load Balancer这个概念。 最开始是从AWS上面的Elastic Load balancer开始,然后是各种视频里都说面试题中 要考虑的load balancer 优化的情况。所以打算深度了解一下。
Quora Link: https://www.quora.com/What-is-a-load-balancer
我总结了一下, Load Balancer主要是用在互联网,分配任务给服务器的。如果是个人开发,小网站,不需要Load Balancer,因为你的访问量估计不是很多。当访问量很多的时候,如果你全部用一个服务器来处理他们的请求,服务器会很慢很慢。所以,首先得有很多服务器, 然后Load Balancer根据哪个服务器比较没那么累给他分配任务。
在面试的时候,如果有什么system design, 设计一个Twitter之类的, 如果你说到Load Balancer,这会是一个很加分的地方。
例子: 做一个Twitter。
假设Twitter 有一个发Tweet的功能, 有一个点赞的功能, 有一个。。。的功能。 好,设计完毕。
然后,面试官,如果访问量很大的时候,我们用一个server估计搞不过来,需要使用load balancer。
"
A load balancer is any method used for splitting the amount of requests to site among many machines (real or virtual) the most common methods are:
1. Round robin DNS
2. Round robin routing
3. Uee a proxy to divide it up
Of all the above the simplest and most effective is round robin DNS
"
“Requests are received by both types of load balancers and they are distributed to a particular server based on a configured algorithm. Some industry standard algorithms are:
Round robin
Weighted round robin
Least connections
Least response time
“
操作系统里面的Round robin 本来在我理解是用来切换不同任务的,原来也可以用在load balancer上。
AWS的云端Load Balancer: Elastic Load Balancing automatically distributes incoming application traffic across multiple Amazon EC2 instances. It enables you to achieve fault tolerance in your applications, seamlessly providing the required amount of load balancing capacity needed to route application traffic
因为很多中小公司会把网站放在Amazon上面来deploy,所以server也是amazon的。 可以通过Elastic Load Balancer来把流量分到几个instance上。