borg

https://tencentcloudcontainerteam.github.io/2019/04/17/google-borg/



https://ying-zhang.github.io/yi/2017/x-eurosys15-borg-cn/



http://dockone.io/article/763



https://zhuanlan.zhihu.com/p/30355957

每个集群叫一个cell,会有一个对应的BorgMaster。
这里BorgMaster画了好多层是刻意的,为了high availability每个cell有5个BorgMaster,但是不是这5个BorgMaster里面只有一个是真正的leader。这五个BorgMaster有一个基于Paxos的储存。
BorgMaster这类软件一般不会有太多的外部的依赖,文章中讲到选完BorgMaster的leader之后会去Chubby拿个所告诉大家哪个是leader,但是Borg本身并不非常依赖于Chubby或者其它任何的Google内部服务。这很重要,因为对于Borg来说最重要的一个特性之一就是availability。
每个机器上面会有一个Borglet,BorgMaster定期会跟Borglet沟通你现在需要在这个机器上面做什么,开什么新的软件啊之类的
这里有一个设计是Borglet不跟BorgMaster主动沟通,因为如果出现突然断电这类意外,会有大量的Borglet同时想要跟BorgMaster沟通,这时候反而有可能因为访问太多把BorgMaster搞倒了。
BorgMaster跟Borglet沟通的桥梁中间加了一层link shard,很大一个作用是只把Borglet的变化传给BorgMaster,这样可以减少沟通的成本和BorgMaster处理的成本。


Category golang