2019-01-21

简谈当代软件架构中的 Orchestration


阎惠昌指挥中央民族乐团,图片来源:http://www.sohu.com/a/260525423_372959

近年来,越来越多软件倾向于采用微服务架构(Microservices Architecture)。业内文献中常常可以看到这些词语:composition、orchestration 以及 choreography。基本上,这些词语都是用来描述多个软件模块或者软件系统之间分工合作,此呼彼应的关系。 多年前在业内文献中看到她们,以为不过又是哪个 marketing 部门想出来的 buzzword,故作高深,骗骗外行的。

过去一年又开始学音乐。老师常常反复强调:音乐是时间的艺术。近日忽然福至心灵,真正理解了类似 Kubernetes 那些分布式计算的基础设施何以称自己为 container orchestration 系统。

Kubernetes (一下简称 K8s) 本质上是一个调度系统 (scheduling system)。用户在各种配置文件中描述自己想要的系统状态,K8s 的主节点(master node)就会根据用户指定的状态,定时启用或者停用系统中的各种资源。

Kubernetes 架构,图片来源:Udacity

比如,用户指定应用 ABC 的前端组件必须有 3 组分身随时响应任何请求,K8s 的主节点就会立即分配 3 组资源给 ABC 做前端,并唤起这些分身。假如 ABC 的前端需要一些中间件或者后端组件,主节点也可以安排好不同模块启动的先后顺序并依次唤醒相应资源。某些组件需要暂停或者更新,主节点也会作好关停的时机安排。所有组件在运行时,主节点密切监视系统资源动态。一旦出现异常情况,会及时唤醒更多计算资源或者试图重启坏掉的组件。

这个真的很像一个大型乐队的演出。用户写的各种配置文件,好比是分谱。K8s 很聪明,拿到各声部的分谱以后,脑子里有个总谱,晓得哪个声部该何时进来何时退出,以及各声部轻重缓急的处理。若是某个声部演奏出现异常,K8s 会适时作出调整,力求音乐还能奏得下去。从某角度看,K8s 做的也是时间艺术,  或者说,时机艺术。所以,其实 orchestration 这个字其实用得很传神,她强调了超大型分布式操作系统运行时的动态协调关系。倒也并非信口开河天花乱坠的 buzzword。

刚刚看了 Kubernetes 的官网,发现首页上的自我描述又改过了。他们去掉了 orchestration 这个字,用上了更为平实的 automation 一字,更直白浅显一些了。这种脚踏实地不矫情的用字行文风格,是 geek 们喜欢的。换掉也好。

No comments:

Post a Comment