微服务的基本理论

单体架构vs微服务架构

单体架构是什么

一个归档包(例如war包)包含所有功能的应用程序,我们通常称为单体应用。而架构单体应用的方法论就是单体应用架构。

优点:

  1. 架构简单

  2. 开发测试、部署方便

缺点:

  1. 复杂性高,功能耦合性高

  2. 部署满,频率低

  3. 扩展能力受限

微服务是什么

微服务是一种软件架构风格,其中软件系统被划分为多个小型、独立部署、可独立替换和升级的服务单元,每个服务单元都专注于执行一个特定的业务功能或一组相关的业务功能。这些服务单元之间通过轻量级通信机制(通常是 HTTP 协议)相互通信,并且可以以独立的方式开发、部署和扩展。

微服务特性

  1. 每个微服务可独立运行在自己的进程里;

  2. 一系列独立运行的微服务共同构建起整个系统;

  3. 每个服务为独立的业务开发,一个微服务只关注某个特定的功能,例如订单管理、用户管理等;

  4. 可使用不同的语言与数据存储技术;

  5. 微服务之间通过轻量的通信机制进行通信,例如通过REST API进行调用;

  6. 全自动化的部署

微服务全景架构图

微服务优缺点

优点:

  1. 单个服务易于开发、维护

  2. 单个服务启动较快

  3. 局部修改容易部署

  4. 技术栈不受限(不同的服务可以使用不同的语言编写)

  5. 按需伸缩

缺点:

  1. 运维要求变高

  2. 分布式固有的复杂性

  3. 重复劳动

微服务适用场景

  1. 大型、复杂的项目

  2. 有快速迭代的需求

  3. 访问压力大(去中心化)

不适用微服务的场景

  1. 业务稳定

  2. 迭代周期长

微服务拆分

业界流行的拆分方法论

  1. 领域驱动设计(Domain Driver Design)

  2. 面向对象

合理粒度

  1. 良好的满足业务

  2. 幸福感

  3. 增量迭代

  4. 持续进化