在 《Pro Spring Boot》第13章提到的。
1. Codebase
从一个代码库部署到多个环境。
2. Dependencies
使用显式的声明隔离依赖。
3. Config
在environment中保存配置信息,不许硬编码。
4. Backing Services
把支持性服务看做是资源,通过URL或者配置连接。支持性服务包括数据库、消息队列、缓冲服务器等。后台资源,可以方便的替换。比如更换数据库。
5. Build, release, run
严格的划分编译、构建、运行阶段,每个阶段由工具进行管理。持续集成,持续部署。服务构建完成后,开发不能随意修改代码。所有修改需要走构建的流程。
6. Processes
应用必须为无状态。服务可以随意启动,停止,而不用担心丢失数据。
7. Port binding
经由端口绑定导出服务。一个应用可以成为另一个应用的服务。服务自带运行时容器。可以命令行启动,并通过HTTP对外提供服务。
8. Concurrency
并发性使用水平扩展实现,对于web就是水平扩展web应用实现。不要依赖于单台服务器多线程模型。启动多个微服务。水平扩展。
9. Disposability
服务可丢弃行,应用健壮性。快速启动,并可以平稳关闭。以及错误容忍性。
10. Environment parity
开发和生产环境保持高度一致,一键式部署。保证高质量,持续发布。
11. Logs
将日志看做是事件流来管理,所有参与的服务均使用该方式处理日志。
12. Admin processes
管理任务作为一次性的过程运行。例如 DB migrations,一次性执行的脚本等。开发人员不能随意执行这种任务。需要使用源代码仓库管理。而且这些脚本必须可重复执行,也不需要为不同的环境做特殊的改变。
微服务的12个要素
最新推荐文章于 2024-04-09 17:16:38 发布