[!quote] 单体系统 单体系统 并不是在单一系统上,运行的大型单一代码库,而是所有系统功能相互交织的系统
[!quote] 分布式单体系统 分布式单体系统 是将单个大型的代码库分开,但是系统功能还是相互交织在一起,非常糟糕,
四不像以下如果有几点都占,那就是分布式单体系统 :
- 对一个微服务的更改通常需要对其他微服务进行更改
- 部署一个微服务需要同时部署其他微服务
- 你的微服务过于简单
- 相同的开发人员在大量的微服务中工作
- 您的许多微服务共享一个数据存储
- 你的微服务共享很多相同的代码或模型
微服务
[!hint] 什么是好的微服务 ? 少数几个中等规模的单体应用,周围环绕着一个服务生态系统 :
- 核心业务逻辑被封装在少数几个中等规模的单体应用中
- 有助于保持系统的稳定性,一致性,更利于更新维护
- 围绕这些核心单体应用,构建了多个小型的,独立的,专注与特定功能的微服务
- 有更高的灵活性,
例如,如果某个功能需要快速上线或扩展,可以单独对相关的微服务进行开发和部署
- CAP 定理 / 布鲁尔定理 :指出对于一个分布式计算系统来说,不可能同时满足以下三点,最多只能同时较好的满足两个:
- 一致性 Consistency 所有节点在同一时间具有相同的数据
- 可用性 Availability 保证每个请求不管成功或者失败都有响应
- 分区容错性 Partition tolerance 系统中任意信息的丢失或失败不会影响系统的继续运作
根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类: CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大 CP - 满足一致性,分区容忍性的系统,通常性能不是特别高 AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些