单体应用 复杂性高,当一个项目达到百万级别,整个项目包含的模块非常多、模块的边界模糊、依赖关系不清晰、代码质量参差不齐、混乱地堆砌在一起。整个项目非常复杂。每次修改代码都心惊胆战,甚至添加一个简单的功能,或者修改一个bug都会带来隐含的缺陷。
当代企业级应用特点:
设备激增,用户增多
功能更多,更新频繁,业务复杂度几何级增长
数据量趋于海量
系统稳定性要求更高,可用性要求极高
单体应用:
- 代码间关系复杂,难以理解和维护
- 项目体积变大,开发、测试、部署的过程都无比困难
- 无法使用新框架
- 可靠性下降
解决方案: 拆
一个单体应用拆分成多个服务,每个服务有自己独立的数据库
单个服务的复杂度降低
服务与服务之间需要通信,协调
单体 -> 分布式系统(微服务架构)
在分布式系统中,我们为了打破单块系统中集中式的系统架构,引入系统拆分的思想和实践。拆分的需求来自组织结构变化、交付速度、业务需求以