Load Balancer实现

参考: https://kemptechnologies.com/load-balancer/load-balancing-algorithms-techniques/

Round Robin DNS: 多个相似的Server,提供一样的服务。 每个server都使用同一个Internet Domain name, 但是不同的IP address. A DNS Server 有a list of all the unique IP addresses,与internet domain  name 联系在一起。 

Load Balancer实现_第1张图片
Load Balancer实现_第2张图片


百度百科上的中文翻译:

◎ 依序Round Robin

◎ 比重Weighted Round Robin

◎ 流量比例Traffic

◎ 使用者端User

◎ 应用类别Application

◎ 联机数量Session

◎ 服务类别Service

◎ 自动分配Auto Mode

功能

内建DNS服务器,可维护多个网域(domain),每个网域又可以新增多笔纪(A/CNAME/MX),达到Inbound Load Sharing的功能。

1.DNS负载均衡最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。


Round Robin DNS:

这是最简单暴力白痴的算法。 首先,我们有一个DNS: 比如说 www.google.com

然后这个domain name对应好几种不同的unique IP: 127.16.2.7,

 10.235.65.8,    135.6.9.8

每次用户访问的时候,他把用户导向IP的方式是根据rotation IP. 也就是第一次, 你访问,我把你导向列表里第一位的IP。 另一个现在访问,我把他引入排名第二的IP。 第三个人来,把他导入排名第三的IP。第四个人来,又导向排名第一的IP。

Round Robin适合request长度都是一样时间的

不过坏处是:这个算法因为太简单,所以他完全不管也许第一个IP server此时有100万人访问,其他两个server没人的情况。反正就是rotation。

Load Balancer实现_第3张图片


我觉得,做一个Load Balancer 的Project 应该会很有趣。

大概做法应该是有一个List = [instance1, instance2, instance3]

每个console instance  listen to 一个port。 然后load balancer 一个function之类的来决定某个request去到哪个instance。感觉这个可以配合NodeJs来做。

你可能感兴趣的:(Load Balancer实现)