单体架构:一个归档包包含了应用所有功能的应用程序,我们通常称之为单体应用。架构单体应用的架构风格,我们称之为单体架构,这是一种比较传统的架构风格。

 

微服务与多单体项目 微服务和单体服务_API

 

单体架构存在的缺点:

  1. 复杂性逐渐变高
  2. 技术债务逐渐上升
  3. 部署速度逐渐变慢
  4. 阻碍技术创新
  5. 无法按需伸缩

架构的演进:单体架构---SOA---微服务

微服务: 微服务是以开发一组小型服务的方式来开发一个独立的应用系统。其中每个小型服务都运行在自己的进程中,并经常采用HTTP资源API这样轻量的机制来相互通信。这些服务围绕业务功能进行构建,并能通过全自动的部署机制来进行独立部署。这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术。对这些微服务我们仅做最低限度的集中管理。

微服务与多单体项目 微服务和单体服务_用户管理_02

 

微服务具备的特性:

  1. 每个微服务可独立运行在自己的进程中
  2. 一系列独立运行的微服务共同构建起了整个系统
  3. 每个服务为独立的业务开发,一个微服务一般完成某个特定的功能。比如:订单管理、用户管理等。
  4. 微服务之间通过一些轻量的通信机制进行通信,例如通过REST API或者RPC的方式进行调用。

微服务的优点:

  1. 易于开发和维护
  2. 启动较快
  3. 局部修改容易部署
  4. 技术栈不受限
  5. 按需伸缩
  6. DevOps

微服务带来的挑战

  1. 运维要求较高
  2. 分布式的复杂性
  3. 接口调整成本高
  4. 重复劳动

微服务设计原则

  1. 单一职责原则
  2. 服务自治原则
  3. 轻量级通信原则
  4. 接口明确原则

Spring Cloud特点:

  1. 约定优于配置
  2. 开箱即用、快速启动
  3. 适用于各种环境
  4. 轻量级的组件
  5. 组件的支持很丰富,功能很齐全
  6. 组件的支持很丰富,功能很齐全
  7. 选型中立