Day15 负载均衡

负载均衡是分布式系统不可或缺的技术,从字面上来说,就是不可能所有事都给一台电脑做,电脑的CPU和记忆体是有上限的,所以需要一台机器作为指挥官把任务loading平均分散给其他电脑做

例如有三台机器,机器不管做小数或大数加法的性能是差不多的,假设都是1秒,有一个任务是计算1+2+3+4+5+6,那麽指挥官就可以把1+2,3+4,5+6分别给这三台机器算,最後再把这三个加起来,总共只要3秒,速度提升了两倍也均衡了任务分配

负载均衡通常会实作在API层,API层就是指挥官负责分散任务loading,再Lab中,我们会利用API层拆解Object成components後,用随机演算法分散他们让不同的data server去消费数据,但是本篇会介绍其他负载均衡的演算法,如果有兴趣的读者欢迎自己实作替换原本的随机演算法

DNS负载均衡

这主要是多个入口的负载均衡技术,可以理解为多个API层之间怎麽做负载均衡,我们知道我们对一个网址做request,假如google好了,你并不会马上得到google的内容,而是会去DNS server询问这个google.com对应的ip是什麽,然後得到ip,把google.com换成对应的ip,才能拿到网页资料,当然这些浏览器都帮你封装好了,我们可以对DNS server做附载均衡,随机的return四个不同的ip

Scheduling

Scheduling,也就是轮询很简单,假如有四台server供你使用,一有request过来,则照顺序的一个个分配,到底了再从头过来就好

Hash

可以对request的ID做hash,假如有四台机器,则对hash後的数字%4,让对应的server去处理它,这个演算法的好处是我们可以把相关类似的资料集中放在某台机器,加快处理时间,坏处是如果遇到恶意client,容易被DDOS

加权演算法

这就需要对系统的客户有细致的了解,我们可以对每个request归类,并分权重,一个connection就是一个权重分数,有点类似背包问题或贪心法,request过来了就给目前负载分数最小的那个server


<<:  [想试试看JavaScript ] HTML DOM

>>:  【设计+切版30天实作】|Day1 - 开赛宣言

Day 10- 物品借用纪录系统 (2) 设定 Calendar

昨天我们完成了基础建设,但是有个地方忘记讲到,我现在赶快补充一下! 我们昨天设定归还日期时,一定有人...

[Day 15] 资料产品生命周期管理-预测模型

尽管都是模型,但预测模型目的在於预测未来,所以开发方式也会和描述型模型有所差异。 Initiatio...

Day 24:如何还原备份到 Github 另外一个分支的 Hexo 资料?

昨天我们尝试将 Hexo 备份到储存库另外一个分支,但如果哪一天真正需要使用这个备份还原本机环境怎麽...

Day 10 阿里云架设网站-资料库搬迁上云

接着上一篇文章我们建立好代管式资料库後,里面目前还没有资料,将如何把资料搬迁到云端资料库中呢? 目...

拿 ml5 来练习 如何附加自己的分类在别人的情绪之上 (五)

介绍 首先介绍什麽是如何附加自己的分类在别人的情绪之上, 对别人已经训练好的情绪 model,我们对...