参考: 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 联系在一起。
百度百科上的中文翻译:
◎ 依序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 的Project 应该会很有趣。
大概做法应该是有一个List = [instance1, instance2, instance3]
每个console instance listen to 一个port。 然后load balancer 一个function之类的来决定某个request去到哪个instance。感觉这个可以配合NodeJs来做。