一种软件架构范式,可确保拓展性和高可用性。
服务之间非常独立,不仅功能独立,而且可以单独部署维护。服务和服务之间使用API交互。
特征
- 可根据细分需求,将每个服务聚焦到一个明确的业务能力。例如用户系统、优惠券系统、登陆系统等
- 可独立部署运行:单独容器化的大包、编译和部署
- 服务内部技术栈相对自由:不同的服务之间可以使用独立的技术栈开发,解耦程度高
- 数据存储自由:微服务可以保留自己的数据库,而不与其他模块耦合数据。
类比单体架构
维度 | 单体架构 | 微服务架构 |
---|---|---|
数据库 | 共享单一数据库 | 每个服务独立数据库 |
技术栈 | 统一技术栈 | 可混合多语言、中间件 |
部署 | 整体部署 | 服务独立部署 |
扩展性 | 横向扩展整个应用 | 按需扩展特定服务 |
可见,微服务更适合大型软件的大规模协作开发,服务项目组之间仅需要根据 API 文档协作,数据和程序逻辑完全独立。