中山 网站建设开发网站建设平台哪家好
I. Codebase
One codebase tracked in revision control, many deploys
要有代码仓库,多版本控制,如使用git来管理代码仓库。
II. Dependencies
Explicitly declare and isolate dependencies
明确声明依赖,隔离依赖。强依赖往往会导致连锁反应,当被依赖方崩了之后,当前服务应该能熔断并走降级流程。
III. Config
Store config in the environment
代码和配置分离有很多好处,因为代码从开发、测试、构建、部署是很长的一条链路,开发成本高,而纯配置只需要改一下就好,几乎没什么成本。
IV. Backing services
Treat backing services as attached resources
将支持的服务视为附加资源,不知所云。
V. Build, release, run
Strictly separate build and run stages
严格分离构建、部署阶段,分开的好处是假如出错了,能快速发现错误出现在哪一步,再说,它们构建和部署类比编译和运行,是天然分离的两个步骤。
VI. Processes
Execute the app as one or more stateless processes
尽可能无状态,因为无状态服务不存在线程安全问题,无状态的服务更加简单、不易出错。而有状态的服务,要考虑线程安全问题,还容易出错。
VII. Port binding
Export services via port binding
将服务与端口绑定。
VIII. Concurrency
Scale out via the process model
并发而不是顺序执行,能有效挖掘多核CPU的性能,能系统增大吞吐量,提高QPS。
IX. Disposability
Maximize robustness with fast startup and graceful shutdown
通过快速启动和优雅关闭最大化鲁棒性,优雅关闭资源(如数据库连接,网络连接等)很好理解,快速启动是什么意思?
X. Dev/prod parity
Keep development, staging, and production as similar as possible
使开发、分期和生产尽可能相似,其实就是要保持开发环境和生产环境尽量一致。
XI. Logs
Treat logs as event streams
重视日志,一方面便于排查问题,一方面能作为统计数据。
XII. Admin processes
Run admin/management tasks as one-off processes
将管理/管理任务作为一次性流程运行,应该是管理配置类任务只执行一次,类似static代码块。