- 世界级软件架构大师 Martin Fowler
分布式系统就是一组部署在同一个网络下的多个通过网络来通信和协调的组件,对外部而言表现的如同一个系统
单体应用:
- 代码间关系复杂,难以理解和维护
- 项目体积变大,开发、测试、部署的过程都无比困难
- 无法使用新框架
- 可靠性下降
引入了网络
解决方案: 拆
一个单体应用拆分成多个服务,每个服务有自己独立的数据库
单个服务的复杂度降低
服务与服务之间需要通信,协调
单体 -> 分布式系统(微服务架构)
微服务架构风格这种开发方法,是以开发一组小型服务的方式来开发一个独立的应用系统。其中每个小型服务都运行在自己的进程中,并经常采用HTTP资源API这样轻量的机制来相互通信。这些服务围绕业务功能进行构建,并能通过全自动的部署机制来进行独立部署。这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术。对这些微服务,我们仅做最低限度的集中管理。
分布式系统有多种层面的理解,比如,
- 可以指多个不同组件分布在网络上互相协作,比如前例所说的电商网站
- 也可以一个组件的多个副本组成集群,互相协作如同一个组件,比如数据存储服务中为了数据不丢失而采取的多个服务备份冗余,当数据修改时也需要通信来复制数据
结论:
- 微服务架构 是 分布式系统,分布式系统不一定是微服务架构<