在容器技术发展的大部分时间里,它更多地被视为一种部署工具。将代码及其依赖项打包,作为一个整体进行分发,并在任何地方以相同的方式运行。
那个故事是真的,而且也确实很有用,但这只是容器用途的一半。另一半用途在于,当我们不再把容器视为交付单个应用程序的工具,而是把它看作可以与其他组件组合的构建模块时。
软件工程并非首次经历这样的转变。上世纪 90 年代,面向对象编程为应用程序代码提供了一个清晰的边界,我们可以以此为基础进行组合。设计模式正是从这个边界中衍生出来的,它构成了一个小型标准解决方案库,每个程序员最终都会将其内化。随着容器技术的出现,分布式系统也经历了同样的转变。
本文将按协调范围,梳理过去十年中逐渐形成的几种模式。其中三种模式描述了容器在共享单台机器时如何协作,另外三种模式则描述了容器在跨多台机器执行任务时如何协调。这些模式并非规则,而是分布式系统工程师反复解决的问题的最终解决方案。
抽象层
原文: https://blog.bytebytego.com/p/container-design-patterns-for-distributed
