当前位置: 首页 > news >正文

12 要素 12 Factor

I. 基准代码

一份基准代码,多份部署

一个应用,一个基准代码git仓库,多个环境版本部署(prod,staging,develop)

II. 依赖

显式声明依赖关系

docker的dockerfile,php的composer.json,python的requirements.txt等依赖关系声明

III. 配置

在环境中存储配置

每个环境都有对应的env文件配置

IV. 后端服务

把后端服务当作附加资源

数据库(MySQL,CouchDB),消息/队列系统(RabbitMQ,Beanstalkd),SMTP 邮件发送服务(Postfix),以及缓存系统(Memcached)

V. 构建,发布,运行

严格分离构建和运行

  • 构建阶段  是指将代码仓库转化为可执行包的过程。构建时会使用指定版本的代码,获取和打包 依赖项,编译成二进制文件和资源文件
  • 发布阶段  配置 会将构建的结果和当前部署所需 配置 相结合,并能够立刻在运行环境中投入使用 
  • 运行阶段 (或者说“运行时”)是指针对选定的发布版本,在执行环境中启动一系列应用程序 进程



VI. 进程

以一个或多个无状态进程运行应用

12-Factor 应用的进程必须无状态且 无共享 。 任何需要持久化的数据都要存储在 后端服务 内,比如数据库

VII. 端口绑定

通过端口绑定提供服务

通过端口绑定来提供服务 ,并监听发送至该端口的请求

VIII. 并发

通过进程模型进行扩展

将不同的工作分配给不同的 进程类型 ,比如web任务,和常驻内存的worker,开发者可以根据类型进行构建扩容

IX. 易处理

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

12-Factor 进程 无状态且 无共享,可以瞬间开启或停止。

X. 开发环境与线上环境等价

尽可能的保持开发,预发布,线上环境相同

12-Factor 应用的开发人员应该反对在不同环境间使用不同的后端服务,本地环境,测试环境,预发布环境与线上环境应尽可能的接近

XI. 日志

把日志当作事件流

通过统一的日志收集系统,日志进入大数据处理系统,索引系统,时序数据库进行存储并最后归档

XII. 管理进程

后台管理任务当作一次性进程运行

执行一些管理或维护应用的一次性任务,一次性管理进程应该和正常的 常驻进程 使用同样的环境,如项目中的Command命令

可参考:

The Twelve-Factor App (简体中文)

12 Factor App in Action (12 要素应用实战) - 知乎

相关文章:

12 要素 12 Factor

I. 基准代码 一份基准代码,多份部署 一个应用,一个基准代码git仓库,多个环境版本部署(prod,staging,develop) II. 依赖 显式声明依赖关系 docker的dockerfile,php的composer.jso…...

十大排序之冒泡排序与快速排序(详解)

文章目录 🐒个人主页🏅算法思维框架📖前言: 🎀冒泡排序 时间复杂度O(n^2)🎇1. 算法步骤思想🎇2.动画实现🎇 3.代码实现🎇4.代码优化(添加标志量) …...

【SpringBoot篇】阿里云OSS—存储文件的利器

文章目录 🌹什么是阿里云OSS⭐阿里云OSS的优点 🏳️‍🌈为什么要使用云服务OSS🎄使用步骤⭐OSS开通⭐参考官方SDK 🍔编写代码⭐上传文件 🌹综合案例 🌹什么是阿里云OSS 阿里云对象存储&#xf…...

Leetcode—58.最后一个单词的长度【简单】

2023每日刷题&#xff08;四十&#xff09; Leetcode—58.最后一个单词的长度 实现代码 int lengthOfLastWord(char* s) {int len strlen(s);int left 0, right 0;if(len 1) {return 1;}while(right < len) {if(right 1 < len) {if(s[right] && s[righ…...

Apach Ozone部署

前言 最近由于工作需要&#xff0c;要部署一套ozone。我自己对hadoop这套体系不是很熟悉&#xff0c;所以过程磕磕碰碰&#xff0c;好不容易勉强搭起来&#xff0c;所以记录一下部署方式 准备 三台主机&#xff0c;主机均已安装jdk、hdfs&#xff0c;相关的安装配置就不另外写…...

【nlp】3.2 Transformer论文复现:1. 输入部分(文本嵌入层和位置编码器)

Transformer论文复现:输入部分(文本嵌入层和位置编码器) 1 输入复现1.1 文本嵌入层1.1.1 文本嵌入层的作用1.1.2 文本嵌入层的代码实现1.1.3 文本嵌入层中的注意事项1.2 位置编码器1.2.1 位置编码器的作用1.2.2 位置编码器的代码实现1.2.3 位置编码器中的注意事项1 输入复现…...

自动化部署 / 扩容openGauss —— Ansible for openGauss

前言 大家好&#xff0c;今天我们为大家推荐一套基于 Ansible 开发的&#xff0c;自动化部署及扩容 openGauss 的脚本工具&#xff1a;Ansible for openGauss&#xff08;以下简称 AFO&#xff09;。 通过AFO&#xff0c;我们只需简单修改一些配置文件&#xff0c;即可快速部署…...

Go 实现网络代理

使用 Go 语言开发网络代理服务可以通过以下步骤完成。这里&#xff0c;我们将使用 golang.org/x/net/proxy 包来创建一个简单的 SOCKS5 代理服务作为示例。 步骤 1. 安装 golang.org/x/net/proxy 包 使用以下命令安装 golang.org/x/net 包&#xff0c;该包包含 proxy 子包&am…...

Redis报错:JedisConnectionException: Could not get a resource from the pool

1、问题描述&#xff1a; redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool 2、简要分析&#xff1a; redis.clients.util.Pool.getResource会从JedisPool实例池中返回一个可用的redis连接。分析源码可知JedisPool 继承了 r…...

【广州华锐互动】Web3D云展编辑器能为展览行业带来哪些便利?

在数字时代中&#xff0c;传统的展览方式正在被全新的技术和工具所颠覆。其中&#xff0c;最具有革新意义的就是Web3D云展编辑器。这种编辑器以其强大的功能和灵活的应用&#xff0c;正在为展览设计带来革命性的变化。 广州华锐互动开发的Web3D云展编辑器是一种专门用于创建、编…...

Vue项目实战之一----实现分类弹框效果

效果图 实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><script src"js/vue.js"></script><!-- 引入样式 --><link rel"stylesheet&qu…...

Vue解析器

解析器本质上是一个状态机。但我们也曾提到&#xff0c;正则表达式其实也是一个状态机。因此在编写 parser 的时候&#xff0c;利用正则表达式能够让我们少写不少代码。本章我们将更多地利用正则表达式来实现 HTML 解析器。另外&#xff0c;一个完善的 HTML 解析器远比想象的要…...

Spring Cloud 版本升级遇坑记:OpenFeignClient与Gateway的恩怨情仇

Spring Cloud 版本升级遇坑记&#xff1a;OpenFeignClient与Gateway的恩怨情仇 近日&#xff0c;在对项目中的 Spring Boot、Spring Cloud 以及 Spring Cloud Alibaba 进行版本升级时&#xff0c;遭遇了一个令人头疼的问题&#xff1a;Spring Cloud Gateway 在运行时一直卡住&a…...

面试:Docker相关问题

文章目录 请解释一下什么是 Docker&#xff0c;以及它在云环境中的应用请简述Docker和LXC的区别什么是Docker Compose&#xff1f;请简述其作用和使用场景在使用Docker时&#xff0c;如何为容器创建一个可访问的网络当一个Docker容器运行异常时&#xff0c;如何通过Docker命令查…...

移动端浏览器 jquery 获取 pdf blob文件流 预览pdf

最近遇到一个需求&#xff0c;一个古早的移动端 juery 项目要求做一个页面&#xff0c;从接口获取 pdf 文件流&#xff0c;然后预览出来 这里使用第三方工具&#xff1a;pdf.js 代码如下&#xff1a; // 引入相关文件<script src"../js/pdf.js" type"text…...

Redis并发问题解决方案

目录 前言 1.分布式锁 1.基于单个节点 2.基于多个节点 3.watch(乐观锁) 2.原子操作 1.单命令操作 2.Lua 脚本(多命令操作) 3.事务 1.执行步骤 2.错误处理 3.崩溃处理 总结 前言 在多个客户端并发访问Redis的时候&#xff0c;虽然Redis是单线程执行指令&#xff…...

读取两个文件夹里不同名的文件,处理映射不对应的文件

解决方案&#xff1a;读取两个文件夹里不同名的文件&#xff0c;处理映射不对应的文件 # -*- coding: utf-8 -*- import ospath1 r/home/ubuntu/data/yoloData/images/train2017 path2 r/home/ubuntu/data/yoloData/labels/train2017def read_all_file_name():file_path ./t…...

SpringCloud原理-OpenFeign篇(四、请求原理)

文章目录 前言正文一、书接上回&#xff0c;从代理对象入手二、ReflectiveFeign.FeignInvocationHandler#invoke()三、SynchronousMethodHandler#invoke(...) 的实现原理3.1 invoke(...)源码3.2 executeAndDecode(...) 执行请求并解码 四、如何更换client 的实现 附录附1&#…...

什么是工业物联网(IOT)?这样的IOT平台你需要吗?——青创智通

物联网(IOT)是指在互联网上为传输和共享数据而嵌入传感器和软件的互联设备的广泛性网络。这允许将从物理对象收集的信息(数据)存储在专用服务器或云中。通过分析这些积累的信息&#xff0c;通过提供最优的设备控制和方法&#xff0c;可以实现一个更安全、更方便的社会。在智能家…...

MTK Pump Express 快速充电原理分析

1 MTK PE 1.1 原理 在讲正文之前&#xff0c;我们先看一个例子。 对于一块电池&#xff0c;我们假设它的容量是6000mAh&#xff0c;并且标称电压是3.7V&#xff0c;换算成Wh(瓦时)为单位的值是22.3Wh(6000mAh*3.7V)&#xff1b;普通的充电器输出电压电流是5V2A(10W)&#xff0c…...

别再为WebSocket握手失败头疼了!手把手教你用Nginx 1.18+配置WSS反向代理(附SSL证书配置)

从零到一&#xff1a;Nginx反向代理WebSocket的终极避坑指南 凌晨三点&#xff0c;服务器监控突然告警——你的在线协作平台WebSocket连接全部断开。控制台里堆满了101 Switching Protocols错误&#xff0c;而本地测试时明明一切正常。这种场景对经历过生产环境WebSocket部署的…...

借助爱毕业(aibiye),数学建模论文的复现和智能排版优化一键完成

AI工具在数学建模论文复现与排版中能大幅提升效率。通过评测10款热门AI论文助手发现&#xff0c;部分工具可自动生成LaTeX代码、优化公式排版&#xff0c;甚至能基于草图快速复现复杂模型。智能改写功能可避免查重问题&#xff0c;而文献管理模块能自动整理参考文献格式。针对时…...

PAT刷题别硬刚!用C语言搞定‘写出这个数’,我总结了三个避坑点

PAT刷题别硬刚&#xff01;用C语言搞定‘写出这个数’&#xff0c;我总结了三个避坑点 第一次在PAT上遇到"写出这个数"这道题时&#xff0c;我盯着屏幕上的"n小于10^100"这个条件发呆了整整五分钟。作为一个C语言初学者&#xff0c;处理这种超大数字简直像…...

从Houdini到UE5:VAT顶点动画纹理的‘黑盒’揭秘与自定义Shader进阶指南

从Houdini到UE5&#xff1a;VAT顶点动画纹理的‘黑盒’揭秘与自定义Shader进阶指南 在影视级实时特效领域&#xff0c;顶点动画纹理&#xff08;Vertex Animation Texture&#xff09;技术正逐渐成为连接DCC工具与游戏引擎的桥梁。当传统骨骼动画难以应对复杂物理模拟&#xff…...

2026届必备的五大降重复率方案解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在学术写作这个范畴里&#xff0c;重复率过高属于较为常见的一种状况。专门的降重网站具备提…...

从MobileNet V1到V3:谷歌轻量化CNN的演进史,如何影响了今天的端侧AI部署?

MobileNet进化史&#xff1a;轻量化CNN如何重塑边缘计算生态 当2016年AlphaGo击败李世石时&#xff0c;很少有人注意到支撑这场胜利的GPU集群功耗高达200千瓦——这相当于200台家用空调同时运转的能耗。而今天&#xff0c;我们口袋里的智能手机却能实时运行人脸识别、AR滤镜等A…...

【国之重器 · 龙虾终端】黄仁勋说AI Agent是操作系统,但普通人用不上怎么办?荣耀给出了答案

出厂即用&#xff1a;荣耀YOYO Claw的预制龙虾体系架构 荣耀发布的自研终端侧龙虾AI智能体——YOYO Claw技术&#xff0c;首发搭载于MagicBook系列轻薄本&#xff0c;开创了「养虾本」这个全新品类。 这不是把OpenClaw打包成一个安装包那么简单&#xff0c;而是从根子上重构了…...

告别‘白屏’:ST7701s驱动移植避坑指南(基于常见MCU平台)

ST7701s驱动移植实战&#xff1a;从白屏到完美显示的深度解析 当一块480480分辨率的ST7701s屏幕在你的开发板上持续显示白屏时&#xff0c;那种挫败感每个嵌入式工程师都深有体会。供应商提供的初始化代码看似完美&#xff0c;但移植到STM32、ESP32或全志平台时却屡屡碰壁。本文…...

容器资源“黑盒”时代终结:Docker 27原生支持27项实时指标导出,立即启用这6个--metrics-xxx参数!

第一章&#xff1a;Docker 27资源监控增强的演进与意义Docker 27 引入了对容器运行时资源监控能力的系统性升级&#xff0c;核心聚焦于更细粒度、更低开销、更高实时性的指标采集与暴露机制。这一演进并非孤立功能叠加&#xff0c;而是围绕 cgroups v2 统一接口深度适配&#x…...

Mac用户必备:12306ForMac抢票助手完整使用指南

Mac用户必备&#xff1a;12306ForMac抢票助手完整使用指南 【免费下载链接】12306ForMac An unofficial 12306 Client for Mac 项目地址: https://gitcode.com/gh_mirrors/12/12306ForMac 你是否曾为在Mac上抢购火车票而烦恼&#xff1f;传统网页版12306在高峰期经常卡顿…...