摘要:论文认为,继面向对象编程所引领的软件开发革命之后,如今似乎在分布式系统开发中也发生着一场相似的革命基于容器化组件构建的微服务架构。容器的一大独特优势在于良好的边界恰好适合应用开发的隔离性。这似乎是对编程艺术的重申。
这是由Kubernetes创始人发表的论文,总结了基于容器的分布式系统的设计模式,让我们来一览究竟吧。
论文认为,继OOP(面向对象编程)所引领的软件开发革命之后,如今似乎在分布式系统开发中也发生着一场相似的革命:基于容器化组件构建的微服务架构。
容器的一大独特优势在于:良好的边界——恰好适合应用开发的隔离性。
作者总结了一些设计模式,并且分为三大类型:
Single-container management patterns容器的传统接口有run(), pause(), stop()
可以有更丰富的接口
“向上看”的视角:metrics, config, logs等,通常用HTTP+JSON来暴露
“向下看”的视角:lifecycle(提供生命周期回调钩子), priority(为了空出资源给高优先级任务,甚至能提前关掉低优先级任务),"replicate yourself"(迅速创建一组相同的服务容器来应对突发流量)
接下来两类都依赖Pod抽象(Kubernetes有提供),因为都涉及容器编排了,而且已进入Sevice Mesh这门新概念的范围。
Single-node, multi-container application patterns多个容器组成一个原子单位
Sidecar模式例如:web server + log collector
前提是容器间能共享“存储卷”之类的资源
为什么要用多容器,而非容器内多进程?资源审计和分配:这点很重要,虽然多进程也勉强能做,但多容器做得更成熟
职责划分、解耦
重用:如果一个容器包含多种进程,就笨重而难以重用了,小巧的单用途容器更适合重用
故障隔离:重启一个容器,比修复容器内的故障进程要容易多了
交付隔离:每个容器能独立地升级/降级
Ambassador模式类似于OOP的proxy模式
例如:memcache + twemproxy,考虑到本分类为单结点多容器模式,因此twemproxy要和其中1个memcache部署到同一结点上
前提是容器间能共享localhost网络接口
Adapter模式例如:统一的metrics接口(JMX,statsd等统一收集到HTTP端点)
可以免于修改已有的容器(因为已经以容器作为软件开发的单位了)
Multi-node application patterns Leader election模式领导者选举这件事已经有很多库了,但往往对编程语言有所限定
容器则对编程语言中立
容器只需构建一次就能重用,高度贯彻了抽象和封装的原则
Work queue模式传统的工作队列框架对编程语言有所限定
实现了run(), mount()接口的容器,可作为“工作”的抽象
基于此可打造一种通用的工作队列框架(可能是Kubernetes的未来方向)
虽然没给例子,但有些类似Mesos的可插拔调度器架构
Scatter/gather模式这样传递请求:client->root->server
root结点把请求分发给很多servers,再把它们的响应汇总到一起,交给client
例如:搜索引擎,分布式查询引擎
多个leaf容器+1个merge容器,就能实现通用的scatter/gather框架(可能也是Kubernetes的未来方向)
结语总之,论文将容器视为软件开发的一等公民,像OOP的对象一样重要,提倡单用途可组合可重用的容器。
这似乎是对UNIX编程艺术的重申。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/27733.html
摘要:论文认为,继面向对象编程所引领的软件开发革命之后,如今似乎在分布式系统开发中也发生着一场相似的革命基于容器化组件构建的微服务架构。容器的一大独特优势在于良好的边界恰好适合应用开发的隔离性。这似乎是对编程艺术的重申。 这是由Kubernetes创始人发表的论文,总结了基于容器的分布式系统的设计模式,让我们来一览究竟吧。 论文认为,继OOP(面向对象编程)所引领的软件开发革命之后,如今似乎...
摘要:另外,将机制发扬光大,对有着非常好的支持。系统也注意到并讨论了和的问题。总结本文分享了四本相关的书籍和一份领域相关的论文列表篇,涉及的设计,实现,故障恢复,弹性扩展等各方面。 前言 之前也分享了不少自己的文章,但是对于 Flink 来说,还是有不少新入门的朋友,这里给大家分享点 Flink 相关的资料(国外数据 pdf 和流处理相关的 Paper),期望可以帮你更好的理解 Flink。...
摘要:温习统计学的知识为更深层次的学习做准备在的演讲中说就是我们理解但不知道另外的是如何的我在台下想对于那可以理解的我好像都只懂了参考标准高效的流程课程用的是我不想再学一门类似的语言了我会找出相对应的和的来源流程什么是干净的一个变 Why The Data Science Specialization 温习统计学的知识, 为更深层次的学习做准备 Andrew Ng 在 2015 GTC ...
阅读 2808·2021-09-10 10:50
阅读 2176·2019-08-29 16:06
阅读 3157·2019-08-29 11:02
阅读 1078·2019-08-26 14:04
阅读 2787·2019-08-26 13:24
阅读 2259·2019-08-26 12:16
阅读 527·2019-08-26 10:29
阅读 3048·2019-08-23 18:33