Flynn初探 介于Docker的PaaS平台
发布时间:2022-05-24 12:49:11 所属栏目:云计算 来源:互联网
导读:Flynn是一个开源的PaaS平台,可自动构建部署任何应用到Docker容器集群上运行,其功能特性与组件设计大量参考了传统的PaaS平台Heroku。本文旨在从使用动机、基本对象、层次架构、功能组件、基本工作流这几个方面对Flynn做总体的介绍。 更具体一点,以一个Java
Flynn是一个开源的PaaS平台,可自动构建部署任何应用到Docker容器集群上运行,其功能特性与组件设计大量参考了传统的PaaS平台Heroku。本文旨在从使用动机、基本对象、层次架构、功能组件、基本工作流这几个方面对Flynn做总体的介绍。 更具体一点,以一个Java程序为例来描述: 源代码:包括*.java、log4j.properties、pom.xml等文件。 发布包:源代码被编译打包后生成一个JAR包,这个就是发布包。 部署配置:比如每个进程的启动命令、环境变量、系统属性等。通常,这些配置会写在一个启动脚本里面。 进程:运行Java程序的实体。一个Java程序可以起多个进程,每个进程启动不同的主类(实现了main()方法的类,一个JAR包可以包含多个主类)。 引入Docker后,发布包变成封装了JAR包与JDK环境的镜像,进程变成在相互隔 离的容器里运行。但是,从源代码到镜像、从镜像到运行容器这两步转换过程需要用户人工的操作。尤其是后者的转换,涉及到集群资源调度、自动部署、配置管 理、容器管控等一系列的复杂流程。更进一步,在运行阶段还涉及扩缩容、日志查看、错误处理、运行监控等运维需求,如果全部人工操作将耗费巨大的工作量。 App:表示一个应用,所有其他对象都是围绕App而展开。 Artifact:表示应用的发布包,实际上对应一个Docker镜像。 Process:表示应用的进程。通过一个镜像可以启动多个不同的进程,每个进程运行在自己单独的容器里。 Release:是应用发布态的 抽象表示。它在Artifact的基础上增加了一些不可变(immutable)的静态配置,比如每个进程的启动命令行、环境变量、绑定端口、等。要修改 这些配置,需要生成一个新Release。Release这种不可变性是为了方便做Rollback,即应用随时可以回退到之前的Release。 Formation: 是应用运行态的抽象表示。它在Release的基础上增加了可变(mutable)的动态配置,即每个进程的副本(replica)个数。 Job: 是进程副本的抽象表示,每个Job对应一个运行容器。因此,在后文中可以看到,Job是资源调度的基本单元。 Flynn的层次架构 Flynn的架构自下而上分为两个层级——Layer 0和Layer 1。简单地理解,可以认为Layer 1负责接受用户请求,封装成应用的运行指令,再由Layer 0解决在哪里运行、以什么方式运行的问题。具体一点讲,Layer 0面向的对象是Formation,负责将底层的集群资源封装成可执行Formation的一台主机;Layer 1面向的对象是App,负责将App从源代码构建成Artifact,进而封装成Formation提交给Layer 0去执行。 这种分工明确的层次划分,使整个系统非常灵活,相互松耦合,便于任意组件的替换(比如,甚至可以把Layer 0替换成不用容器去执行Formation)。 (编辑:桂林站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐