您现在的位置是:主页 > 数据库技术 > 数据库技术

Borg架构的相关知识点有哪些

IDCBT2022-01-12服务器技术人已围观

简介今天小编给大家分享一下Borg架构的相关知识点有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完

今天小编给大家分享一下Borg架构的相关知识点有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

 Borg架构

一个Borg的Cell包括一堆机器,一个逻辑的中心控制服务叫做Borgmaster,和在每台机器上跑的Borglet的agent进程(见图1)。所有Borg的组件都是用C++写的。

1 Borgmaster

Cell的Borgmaster由2个进程组成,主的Borgmaster进程和一个单独的scheduler($3.2)。主的Borgmaster处理所有客户端的RPC请求,例如修改状态(创建job),提供数据读取服务(查找job)。它同时管理系统中所有组件(机器、task、allocs等等)的状态机,和Borglet通信,并且提供一个Sigma的备份Web UI。

Borgmaster在逻辑上是一个单进程,但实际上开了5个副本。每个副本维护了一个内存级别的cell状态拷贝,这些状态同时被记录在一个高可用、分布式、Paxos-based存储[55]放在这些副本的本地硬盘上。在一个cell里面,一个单独的被选举出来的master同时用于Paxos leader和状态修改器,用来处理所有改变cell状态的请求,例如提交一个job或者在一个机器上终止一个task。当cell启动或前一个master挂了时,Paxos算法会选举出一个master;这需要一个Chubby锁然后其他系统可以找到master。选举一个master或者换一个新的需要的典型事件是10s,但需要大概1分钟才能让一个大的cell内生效,因为一些内存状态要重构。当一个副本从网络隔离中恢复时,需要动态的从其他Paxos副本中重新同步自己的状态。

某个时刻的Borgmaster的状态被称为checkpoint,会被以快照形式+change log形式保存在Paxos存储里面。checkpoints有很多用途,包括把Borgmaster的状态恢复到以前的任意时刻(例如在处理一个请求之前,用来解决软件缺陷);极端情况下手动修改checkpoints,形成一个持续的事件日志供今后用;或用于线下的在线仿真。

一个高仿真的Borgmaster叫Fauxmaster,可以用来读取checkpoint文件,包括一份完整的Borgmaster的代码,和Borglet的存根接口。它接受RPC来改变状态机和执行操作,例如调度所有阻塞的tasks,我们用它来debug错误,和它交互就和Borgmaster交互是一样的,同样我们也有一个仿真的Borglet可以用checkpoint重放真实的交互。用户可以单步调试看到系统中的所有过去的改变。Fauxmaster在这种情况下也很有用:多个这个类型的job比较合适?以及在改变cell配置前做一个安全检查(这个操作会把任何关键jobs给踢掉吗?)

2 调度 schedule

当一个job被提交的时候,Borgmaster会把它持久化的存储在Paxos存储上,然后把这个job的task放到等待(pending)的队列里面去。这个队列会被scheduler异步的扫描,然后分发task到有充足资源的机器上。scheduler主要是处理task的,不是job。扫描从高优先级到低优先级,在同个优先级上用round-robin的方式处理,以保证用户之间的公平性和避免头上的大job阻塞住。调度算法有2个部分:可行性检查(feasibility checking),找到一台能跑task的机器,和打分(scoring),找个一个最合适的机器。

标签:

很赞哦! ()

本栏推荐