首先介绍下第一作者Brendan Burns,他2008-2016年在Google工作,是Kubernetes的首席工程师,k8s容器编排的主要创始人之一,他在2016年的7月份宣布加入了Microsoft。
第二作者David Oppenheimer,他参与了Google的三大数据中心管理系统的开发——Kubernetes、Omega和Borg的开发,同时也是论文Borg的作者之一。
那篇非常有名的文章《Borg, Omega, and Kubernetes:Lessons learned from three container management systems over a decade》就出自这两位作者之手。
这篇论文发表在HotCloud 2016(The 8th Usenix Workshop on Hot Topics in Cloud Computing),在2018年的3月份,Brendan Burns出了一本书:《Designing Distributed Systems》,这本书对论文中提到的一些Design Pattern进行了更加详细的说明,目前正在啃这本书。
在20世纪80年代末和90年代初,面向对象编程彻底改变了软件开发,推广了将应用程序构建为模块化组件集合的方法。当下,随着容器化软件组件构建的微服务体系结构的日渐普及,凭借容器与外界的隔离性,容器特别适合作为分布式系统中的基本“对象”。随着这种架构风格的成熟,作者通过观察抽象出了更高层次的设计模式。
本文描述了作者在基于容器的分布式系统中观察到的三种类型的设计模式:
- 用于容器管理的单容器模式
- 用于紧密合作的容器的单节点模式
- 用于分布式算法的多节点模式。
下面对这三种模式进行简单的介绍。
1 基于容器管理的单容器模式
容器为接口的定义提供了一个自然边界