架构师之路-java|【Nacos】1.1 从单体架构到微服务

1.1.1 单体架构 Web应用程序发展的早期,大部分web工程师将所有的功能模块打包到一起并放在一个web容器中运行,所有功能模块使用同一个数据库,同时,它还提供API或者UI访问的web模块等
架构师之路-java|【Nacos】1.1 从单体架构到微服务
文章图片

尽管也是模块化逻辑,但是最终它还是会打包并部署为单体式应用,这种将所有功能都部署在一个web容器中运行的系统就叫做单体架构(也叫巨石型应用)。
好处:(适用于:小型简单应用)

  • 开发效率高:模块之间交互采用本地方法调用,并节省微服务之间的交互讨论时间与开发成本。
  • 容易测试:IDE都是为开发单个应用设计的、容易测试一一在本地就可以启动完整的系统。
  • 容易部署:运维成本小,直接打包为一个完整的包,拷贝到web容器的某个目录下即可运行。
不足:(大规模的复杂应用)
  • 复杂性逐渐变高,可维护性逐渐变差:所有业务模块部署在一起,复杂度越来越高,修改时牵一发动全身。
  • 版本迭代速度逐渐变慢:修改一个地方就要将整个应用全部编译、部署、启动时间过长、回归测试周期过长。
  • 阻碍技术创新:若更新技术框架,除非你愿意将系统全部重写,无法实现部分技术更新。
  • 无法按需伸缩:通过冗余部署完整应用的方式来实现水平扩展,无法针对某业务按需伸缩。


1.1.2 微服务 架构师之路-java|【Nacos】1.1 从单体架构到微服务
文章图片


每一个业务模块都使用独立的服务完成,这种微服务架构模式也影响了应用和数据库之间的关系,不像传统多个业务模块共享一个数据库,微服务架构每个服务都有自己的数据库。
【架构师之路-java|【Nacos】1.1 从单体架构到微服务】微服务架构的好处:
  • 分而治之,职责单一; 易于开发、理解和维护、方便团队的拆分和管理
  • 可伸缩; 能够单独的对指定的服务进行伸缩
  • 易修改(局部),易替换,易部署,有利于持续集成和快速铁代

    推荐阅读