首页
学习
活动
专区
圈层
工具
发布

开源驱动12 factor现代化项目

Factor 6:进程 含义:将应用程序作为一个或多个无状态进程执行。持久性数据应存储在有状态后端服务中。这使得扩展更容易,并防止意外的副作用。...如何应用:无状态代码是基于 Web 的应用程序的基本原则。进程唯一应该做的是执行处理逻辑。应避免进程之间的副作用;进程不应影响应用程序的整体状态或应用程序中另一个进程的状态。...在一个运行良好的 IT 部门中,开发人员的习惯是在本地机器上开始编码会话之前,每天检查开发环境的更新。...通常的实现是将日志事件视为一条消息,该消息由数据流技术(例如 Kafka)使用。将日志发射与日志存储分离使应用程序的可移植性更容易。 将日志记录到数据流中会将存储和数据管理的责任放在流管理技术上。...Heroku首席架构师兼12 factor存储库维护者在12 factorDiscord服务器上的最近讨论中表示,除了拓宽12 factor的范围外,这种创新有望激发基于该方法论创建应用程序的工具。

38410
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    容器和 Kubernetes 中的退出码完整指南

    (SIGTERM)容器收到即将终止的警告,然后终止255退出状态超出范围容器退出,返回可接受范围之外的退出代码,表示错误原因未知 下面我们将解释如何在宿主机和 Kubernetes 中对失败的容器进行故障排除...如果您找不到不正确的文件引用,请检查容器日志以查找应用程序错误,并调试导致错误的库。 退出码 125:容器未能运行 退出码 125 表示该命令用于运行容器。...进程可以通过执行以下操作之一来触发 SIGABRT: 调用 libc 库中的 abort() 函数; 调用 assert() 宏,用于调试。如果断言为假,则该过程中止。...检查容器进程是否处理 SIGSEGV。在 Linux 和 Windows 上,您都可以处理容器对分段错误的响应。...如果容器在虚拟机中运行,首先尝试删除虚拟机上配置的 overlay 网络并重新创建它们。 如果这不能解决问题,请尝试删除并重新创建虚拟机,然后在其上重新运行容器。

    6.7K20

    Kubernetes 中容器的退出状态码参考指南

    ) 容器试图访问未分配给它的内存并被终止 143 优雅终止 (SIGTERM) 容器收到即将终止的警告,然后终止 255 退出状态超出范围 容器退出,返回可接受范围之外的退出代码,表示错误原因未知 下面我们将解释如何在宿主机和...如果您找不到不正确的文件引用,请检查容器日志以查找应用程序错误,并调试导致错误的库。 退出码 125:容器未能运行 退出码 125 表示该命令用于运行容器。...检查容器进程是否处理 SIGSEGV。在 Linux 和 Windows 上,您都可以处理容器对分段错误的响应。...如果容器在虚拟机中运行,首先尝试删除虚拟机上配置的 overlay 网络并重新创建它们。 如果这不能解决问题,请尝试删除并重新创建虚拟机,然后在其上重新运行容器。...: 如果退出代码为 0:容器正常退出,无需排查 如果退出代码在 1-128 之间:容器因内部错误而终止,例如镜像规范中缺少或无效的命令 如果退出代码在 129-255 之间:容器因操作信号而停止,例如

    1.2K10

    解读Kubernetes常见退出码

    在Unix系统中,进程退出码是进程终止时向其父进程传递的一个整数值,用于表示进程的终止状态。这个整数值通常在0到255之间,其中0表示进程成功终止,其他值通常用来表示不同的错误或异常情况。...随着时间的推移,Unix操作系统的发展和不同的实现,进程退出码的含义可能有所不同,但基本的概念保持不变。 在Linux系统中,进程退出码的使用与Unix系统类似。...Linux继承了Unix的进程管理机制,并在其基础上进行了扩展和改进。因此,Linux中的进程退出码仍然是一个重要的概念,用于帮助理解和诊断进程的执行状态。...进程退出码的历史可以追溯到早期的Unix系统,是Unix和Linux操作系统中的一个重要概念,为进程间通信提供了一种简单而有效的机制。...通过仔细查看日志并排查上述几个方向,应该能够确定退出码 127 问题的原因。 如何修复 我们知道了退出码 127 的常见原因以及排查方式,现在让我们看看如何修复它们。

    96410

    Node.js 多进程线程 —— 日志系统架构优化实践

    如果过程中出现错误,则将日志解密状态更改为解密失败。   但是在实际的项目使用过程中,发现系统中有很多问题,具体表现如下: 有些日志在上传很久以后,状态仍然为解密中。 日志会大量解密失败。...(只要有一个步骤出现错误,状态就会设置为解密失败) 接下来将以这些问题为线索,对其背后的技术实现进行深入探索。 2. 问题分析   第一个问题是有些日志上传很久之后,状态仍然为解密中。...根据表现,可以初步确定问题出现在上述的阶段 3(日志状态已设置为解密中,但并未进行进一步的状态设置),因此,可以判断是解密服务内部出现异常。   ...但是使用这种方式进行进程间的通信经过父进程的转发效率低下,所以我们可以根据 Node.js 原生的进程间通信方式实现兄弟进程的通信:在 windows 上使用命名管道,在 * nix 上使用 unix...2.4.1 Node.js 进程退出的原因 在实际 Node.js 进程使用中,如果异常处理不当,会造成进程的退出,使服务不可用。

    1.6K30

    关于“Python”的核心知识点整理大全63

    在3处,我们执行了命令git commit -am commit message,其中的标志-a让Git在这个提交中包含 所有修改过的文件,而标志-m让Git记录一条日志消息。...在2处,我们发现启动 了Procfile指定的进程。...如果你看不懂这些文档,请参阅附录C提供的建议。 20.2.13 在 Heroku 上建立数据库 为建立在线数据库,我们需要再次执行命令migrate,并应用在开发期间生成的所有迁移。...在3处,Django应用默认迁移以及我们在开发“学习笔记” 期间生成的迁移。 现在如果你访问这个部署的应用程序,将能够像在本地系统上一样使用它。...在2处,我们执行了创建超级用户的命令,它像第18章在本地系统创建超级用户一样提示你 输入相关的信息。在这个终端会话中创建超级用户后,使用命令exit返回到本地系统的终端会话 (见3)。

    1.4K10

    分享4个Linux中Node.js的进程管理器

    它还支持应用程序日志记录,群集和负载平衡,以及许多其他有用的流程管理功能。 另请参阅:2019年为开发人员提供的14个最佳NodeJS框架 包管理器尤其适用于在生产环境中部署Node.js应用程序。...在本文中,我们将回顾Linux系统中Node.js应用程序管理的四个进程管理器。 1. PM2 PM2是一个开源,高级,功能丰富,跨平台和最流行的Node.js生产级流程管理器,内置负载均衡器。...重要的是,PM2支持启动脚本,您可以将其配置为在预期或意外的计算机重新启动时自动启动进程。它还支持在当前目录或其子目录中修改文件时自动重新启动应用程序。...Node.js进程,它支持监视文件更改,调试模式,应用程序日志,终止进程和退出信号自定义等等。此外,它还支持多种使用选项,您可以直接从命令行传递或将它们传递到JSON文件中。 4....为Node.js服务器创建服务文件后,可以启动它,启用它以在系统引导时自动启动,检查其状态,重新启动(停止并再次启动它)或重新加载其配置,甚至像任何其他系统服务一样停止它。

    3.5K61

    主流 PaaS 平台架构:谷歌GAE、AEB、Cloud Foundry、Heroku

    开发人员利用 GAE 简化了 Web 应用程序的开发和部署。下图是 GAE 上的 Web 架构简图,在这个架构中应用程序可以使用自动伸缩计算的资源,同时可集成分布式缓存、任务队列、数据存储等服务。...在亚马逊云边界的最外端有一个功能强大的DNS 服务器,它会接收用户的域名查询工作,并将后端配置在负载均衡上的正常的服务 IP 返回给用户,在这里它提供了安全可靠的路由功能。...Heroku 作为最初的云平台之一,支持 Ruby、Java、Node.js、Scala、Clojure、Python 等多种编程语言。...Heroku 的路由模块被称为 Hermes,采用 Erlang 语言编写,其能够动态感知一个应用中包含多少个 dyno,基于一定的策略进行任务分发,另外我们还可以设置超时保护机制,在Hermes 上就拒绝掉外部请求...Heroku 打破了日志输出的传统观点,我们一般认为日志是非常重要、不可缺失的,日志以文件的形式存放在本地磁盘中,并且有开头、结尾,重视日志文件中每一行内容在时间排序上的关联性。

    7.6K20

    开源的DevOps开发工具箱

    在DevOps的整个流程中,使用一些开源工具可以促进开发与运维之间的沟通,有利于项目的管理,甚至可以达到事半功倍的效果。...)工具中; Errbit:是一个用于收集和管理程序错误的开源工具; Sensu:一个开源的监控框架; Logstash:是一个应用程序日志、事件的传输、处理、管理和搜索的平台。...比如你可能使用logster来图形化在你的Web Server日志中的HTTP响应发生数量; Kibana:是一个为Logstash和ElasticSearch提供的日志分析的Web接口。...:是Twitter的一个开源项目,允许开发者收集Twitter各个服务上的监控数据,并提供查询接口; Dead Man’s Snitch:是一款监控Heroku Scheduler、计划的监视工具;...进程管理 Bouncy:可以作为HTTP路由主机; Supervisor:是一个客户端服务器系统,允许用户监控和控制类Unix操作系统上的进程数; God:由Ruby实现的进程监控框架。

    1.3K50

    在Heroku上部署Node.js

    今天,我们将演示如何在Heroku上部署Node.js应用。Heroku官方提供免费帐户使用,在此之上,我们最多可以托管5个应用程序。但如果你有大量需求的话,就需要购买特殊账户。...你需要安装Heroku ToolBelt才能使Heroku在你的系统上正常工作,同时你还需要在你的系统上安装GIT,因为Heroku和git要在一起协同工作。...例如在文件名是app.js的情况下,Procfile文件中的代码便为web: node app.js。 让我们开始部署吧 步骤1 打开cmd,并找到项目的目录位置。...只需输入命令heroku login,然后按照要求输入用户名和密码就可以了: 第5步 第5步 在Heroku上创建一个应用。...您可以在上面的屏幕截图中看到,在最终部署之后,将看到一个URL(红圈标注),您可以使用它来访问您的应用程序。 相关的参考资料: Node.js

    4.3K80

    十二要素App方法论

    12-Factor为构建如下的SaaS 应用提供了方法论: 使用标准化流程自动配置,从而使新的开发者花费最少的学习成本加入这个项目。 和操作系统之间尽可能的划清界限,在各个系统中提供最大的可移植性。...背景 本文的贡献者参与过数以百计的应用程序的开发和部署,并通过Heroku[1]平台间接见证了数十万应用程序的开发,运作以及扩展的过程。...配置 在环境中存储配置 IV. 后端服务 把后端服务当作附加资源 V. 构建,发布,运行 严格分离构建和运行 VI. 进程 以一个或多个无状态进程运行应用 VII....并发 通过进程模型进行扩展 IX. 易处理 快速启动和优雅终止可最大化健壮性 X. 开发环境与线上环境等价 尽可能的保持开发,预发布,线上环境相同 XI. 日志 把日志当作事件流 XII....管理进程 后台管理任务当作一次性进程运行 小编旁白 职业生涯,有时为实现一个优雅功能而沾沾窃喜,也常困惑于自己的开发/部署策略是否合理,更多时候与同事为实现思路争的面红耳赤。

    97720

    进程管理:通过PM2来管理Node、PHP CLI等应用的运行

    PM2官网:https://pm2.keymetrics.io/docs 1.介绍 PM2.js是一个Node.js应用程序的进程管理器,可以帮助开发人员在生产环境中管理和监控Node.js应用程序或其他程序的进程...它可以自动重启应用程序,监控应用程序的资源使用情况,以及提供实时日志记录和错误处理等功能。此外,PM2.js还可以通过集成的API和CLI工具来管理和监控多个Node.js应用程序。... # 指定日志文件,--log 日志路径> # 将额外的参数传递给脚本,-- arg1 arg2 arg3 # 自动重启之间的延迟时间,--restart-delay 为单位...)> # 在日志前缀中添加时间,--time # 不自动重启应用程序,--no-autorestart # 指定强制重启的 cron 表达式,--cron # 连接到应用程序日志....重启策略 在指定的时间点重新启动应用程序 当文件发生更改时重新启动应用程序 当应用程序达到内存阈值时重新启动 延迟启动和自动重启 默认情况下禁用自动重启(应用程序始终使用PM2重新启动)当崩溃或退出时

    1.8K40

    Dcoker 容器环境下 Node.js 应用程序的优雅退出

    —— 卡曾斯 Dcoker 容器环境下 Node.js 应用程序的优雅退出,也就是在程序意外退出之后服务进程要接收到 SIGTERM 信号,待当前链接处理完成之后再退出,这样是比较优雅的,但是在 Docker...编写一个简单的 Node.js 应用程序实现优雅退出 Docker 容器环境下程序优雅退出测试 Dcoker 容器下应用无法接收退出信号原因分析 Dcoker 容器环境下构建平滑的 Node.js 应用程序多种实现方案...,即进程树的概念,当容器退出时也会通过信号量来通知 PID=1 的进程,然后这个会通知自己的子进程等等,这个涉及 Unix 进程相关知识,父进程会等待所有子进程结束,并获取到最终的状态。...从容器内查看服务的日志也可看到是收到了进程退出的信号。...Egg 框架的项目中进行测试时,并没有如上的这些问题,以下是在容器内打印的进程树,可以看到 npm 的进程 id 为 1,之后就直接为 node 进程,这应该是框架内自己做的处理,感兴趣的可以去研究下实现机制

    1.4K10

    软件设计——云原生12要素

    Backing services 无状态的服务进程 - Processes 自带端口绑定 - Port Binding 通过进程的水平扩展增大并发能力 - Concurrency 易处置:快速启动和优雅退出...Processes:无状态的服务进程。 Port binding:自带端口绑定。 Concurrency:通过进程的水平扩展增大并发能力。...对于PaaS提供商,关注的是应用服务如何在其Platform上运行的更好,因此要理解这些要素,我们先得搞清楚一个服务是怎么在Platform上跑起来的,简化的流程如下图所示: 落实到真实场景中具体是什么样的呢...反模式的例子:把缓存服务和应用服务打包到同一个容器镜像,通过/var/redis.sock这样的Domain Socket形式访问;或者把第二方应用服务的源码直接复制到自己的代码中,在一个进程中互相调用...还有一个反模式的例子,在应用内就通过代码把日志抛到Kafka这类Broker中,无形中也让应用服务和Kafka耦合到了一起。

    1K20

    Docker 容器环境下 Node.js 应用程序的优雅退出

    —— 卡曾斯 Docker 容器环境下 Node.js 应用程序的优雅退出,也就是在程序意外退出之后服务进程要接收到 SIGTERM 信号,待当前链接处理完成之后再退出,这样是比较优雅的,但是在 Docker...编写一个简单的 Node.js 应用程序实现优雅退出 Docker 容器环境下程序优雅退出测试 Docker 容器下应用无法接收退出信号原因分析 Docker 容器环境下构建平滑的 Node.js 应用程序多种实现方案...,即进程树的概念,当容器退出时也会通过信号量来通知 PID=1 的进程,然后这个会通知自己的子进程等等,这个涉及 Unix 进程相关知识,父进程会等待所有子进程结束,并获取到最终的状态。...从容器内查看服务的日志也可看到是收到了进程退出的信号。...Egg 框架的项目中进行测试时,并没有如上的这些问题,以下是在容器内打印的进程树,可以看到 npm 的进程 id 为 1,之后就直接为 node 进程,这应该是框架内自己做的处理,感兴趣的可以去研究下实现机制

    2.1K00

    在 10 分钟内实现安全的 React + Docker

    你可以使用它打包你的应用程序,并包含多种开源 Web 服务器来为你的应用程序提供服务。另外,你还可以通过配置网络服务器来发送安全标头,这样使你的程序更安全。...转到顶部菜单中的 Applications 选择 Add Application > Single-Page App ,然后单击 Next 在设置屏幕上,为你的应用命名,例如 React Docker...将客户端 ID 复制并粘贴到应用程序的 src/App.js 中。 的值可以在 Okta 仪表板的 API > Authorization Servers 下找到。...使用以下方法在浏览器中打开你的应用程序: heroku open 你将会被重定向到 Okta,可能会看到以下错误: The 'redirect_uri' parameter must be an absolute...然后用以下命令通过 Node.js 和静态 buildpack(也就是你在 Heroku 上使用的相同 buildpack)构建 Docker 镜像。

    21.7K30

    生产级部署 Python 脚本,崩溃了怎么办?

    今天介绍一个生产级的流程管理工具 PM2,通常我们说到 PM2 的时候,都是在说如何部署 Node.js 程序,但是实际上 PM2 很强大,不仅仅可以用来管理 Node.js,它还可以用来管理 Python...此处的 mode 为 fork,也就是关闭当前的 Terminal 窗口,它依然可以检查到此应用的状态。 想要查看 PM2 运行管理的应用程序,可以使用 pm2 ls 命令进行查看。...,并保持总的日志控件大小为 10M。...查看某进程的信息 想要查看当前使用 PM2 启动的程序的详细信息,可以使用 pm describe 命令进行查看。 在输出中,可以看到日志文件的路径,已经解释器等信息。...管理 PM2 的进程状态 介绍完启动和查看日志,再看几个简单的管理命令。 1. 停止某个程序 $ pm2 stop hello 复制代码 2.

    1.5K10

    《云原生12要素》

    :通过进程的水平扩展增大并发能力 Disposability:易处置 - 快速启动和优雅退出 Dev/prod parity:环境对等 Log:日志作为事件流 Admin processes:分离管理类任务...Adam是在Heroku这个Platform as a Service模式的企业积累了大量经验,总结出的这些“要素”。...Heroku国内用的很少,我们以标准的Kubernetes平台为例展开来看: 一个典型的容器化的后端服务,从开发到上线需要经历哪些步骤。...反模式的例子:把缓存服务和应用服务打包到同一个容器镜像,通过/var/redis.sock这样的Domain Socket形式访问;或者把第二方应用服务的源码直接复制到自己的代码中,在一个进程中互相调用...还有一个反模式的例子,在应用内就通过代码把日志抛到Kafka这类Broker中,无形中也让应用服务和Kafka耦合到了一起。

    1.3K20
    领券