十二要素应用

十二要素

(1)一份基准代码(Codebase),多份部署(Deploy)

(2)显式声明依赖关系(Dependency)

应用程序不会隐式依赖系统级类库。它一定通过依赖清单确切地声明所有依赖项。

(3)在环境中存储配置

将应用程序的配置存储于环境变量中

(4)把后端服务(backing services)当作附加资源

后端服务是指程序运行所需要的通过网络调用的各种服务,如数据库,消息队列等

(5)严格分离构建、发布和运行

基准代码通过构建、发布和运行三个阶段转化成一份部署。构建阶段是指将代码进行编译、打包等操作,生成可执行文件。

(6)以同一个或者多个无状态进程运行应用

符合十二要素的应用程序的进程必须是无状态且无共享的。任何需要持久化的数据都需要存储在后端服务内。例如Apereo CAS,所有认证的Ticket均保存在后端数据库中,如memcached集群。而需要处理的是session状态,这个也是需要通过后端memcached或者redis进行统一存储,或者通过前端负载均衡粘性路由到同一个应用进程中。

(7)通过端口绑定(Port binding)来提供服务

(Port binding)来提供服务。

(8)通过进程模型进行扩展

在十二要素应用中的进程主要借鉴了UNIX守护进程模型,不同的工作分配给不同类型的进程处理。尤其是无共享、水平分区的特性让并发处理更加简单。十二要素应用的进程不需要守护进程,也不需要写入PID文件,而是借助操作系统的进程管理器(如systemd)进行输出流控制、进程崩溃响应,以及进程的重启和关闭的请求。

(9)快速启动和优雅终止可最大化健壮性

(10)尽可能地保持开发、预发布和线上环境相同

(11)把日志当作事件流

(12)后台管理任务当作一次性进程运行。

参考:《云原生架构进阶实战》

 

 

不要小瞧女程序员
原文地址:https://www.cnblogs.com/shix0909/p/15396735.html