一种软件架构范式,可确保拓展性和高可用性。

服务之间非常独立,不仅功能独立,而且可以单独部署维护。服务和服务之间使用API交互。

特征

  • 可根据细分需求,将每个服务聚焦到一个明确的业务能力。例如用户系统、优惠券系统、登陆系统等
  • 可独立部署运行:单独容器化的大包、编译和部署
  • 服务内部技术栈相对自由:不同的服务之间可以使用独立的技术栈开发,解耦程度高
  • 数据存储自由:微服务可以保留自己的数据库,而不与其他模块耦合数据。

类比单体架构

维度单体架构微服务架构
数据库共享单一数据库每个服务独立数据库
技术栈统一技术栈可混合多语言、中间件
部署整体部署服务独立部署
扩展性横向扩展整个应用按需扩展特定服务

可见,微服务更适合大型软件的大规模协作开发,服务项目组之间仅需要根据 API 文档协作,数据和程序逻辑完全独立。