十二要素应用

十二要素

(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)后台管理任务当作一次性进程运行。

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

 

 

posted @   sixinshuier  阅读(114)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示