Google Borg简介
    特性

    • 资源利用率高
      • 不需要模拟操作系统
      • 通过在线离线作业混合部署,提高物理资源利用率
    • 服务器共享,在进程级别隔离进程。
    • 应用高可用,故障恢复时间短。
    • 调用策略灵活
    • 应用接入方便,提供完备的Job描述语言,服务发现,实时状态监控和诊断工具

    优势

    • 对外隐藏底层资源管理、调度和故障处理
    • 应用高可用
    • 可弹性扩展

    基本概念
    workload
    cell,每个cell是一个集群,用来划分资源
    Job和task,作业调度
    Naming,微服务见调用,服务发现

    Borg架构
    image.png
    borgmaster
    管理节点

    • 处理客户端的请求,比如创建Job,查询Job
    • 维护系统组件和服务状态,比如服务器和Task等
    • 与borglet通信

    scheduler
    根据资源需求, 进行作业调度分发
    调度策略

    • worst fit 利用率最低的节点来运行任务 ,最终各个节点的利用率比较平均
    • best fit 资源恰好满足的节点,作业会调度集中到一批机器上,这批机器的利用率高,利用率低的可以下线节省资源开销
    • hybird

    调度优化

    borglet
    作业节点

    应用高可用

    • 被抢占的离线业务会被重新放回pending queue等待重新调度
    • 多副本跨故障域部署
    • 支持幂等性,支持客户端重复操作
      • 声明式输入,指明期望
    • 当服务不可用时,要控制重新调度任务的速率。Borg无法区分是节点故障还是网络分区,如果是后者,等待网络恢复更利于保障服务的可用性。

    Borg系统自身高可用
    borgmaster多副本设计
    采用简单的底层工具来部署borg实例,避免过多外部依赖
    每个cell的Borg独立部署,避免相互影响

    Borg 调度原理
    image.png
    资源回收具体体现在哪里

    隔离性
    安全性隔离

    • 早起采用chroot jail,后来采用Namespace

    性能隔离

    • 采用基于cgroup的容器技术实现
    • 在线任务是延时敏感型的,优先级高;离线任务优先级低
    • borg通过不同优先级之间的抢占式调度来优先保证在线业务的性能,牺牲离线任务
    • Borg将资源类型分为两类
      • 可压榨型:CPU是可压榨型,资源耗尽进程不会中止
      • 不可压榨型:内存是不可压榨型,耗尽进程会终止;磁盘也是不可压榨型

    Kubernetes是谷歌开源的容器集群管理系统,是大规模容器管理技术borg的开源版本,主要功能包括

    • 基于容器的应用部署,维护和升级
    • 负载均衡和服务发现
    • 跨机器和跨区域的集群调度
    • 自动伸缩
    • 无状态服务和有状态服务
    • 插件机器保证扩展性

    image.png