前言
nacos配置管理应用与分布式系统
从单体架构到微服务
1. 单体架构
Web应用程序早期,大部分的web工程师将所有的功能模块打包到一一起并放在一个web容器中运行,所有功能模块使用同一个数据库,同时,它还提供API和UI访问的web模块等。
尽管也是模块化逻辑,但是最总它还是会打包成一个单体应用,这种将所有功能部署在一个web容器中运行的系统就叫做单体架构。
优点:
- 开发效率高:模块之间交互采用本地调用,并节省微服务之间的交互讨论时间和开发成本
- 容易测试:IDE都是为开发单个应用而设计,容易测试,直接在本地就可以启动完整的系统
- 容易部署:运维成本小,直接打包为一个完整的包,复制到web容器之下即可运行。
缺点:
- 复杂性逐渐变高,可维护性差:所有业务部署在一起,复杂度越来越高,牵一发而动全身。
- 版本迭代速度逐渐变慢:修改一个地方就要将整个应用全部编译部署,启动时间长,回归测试时间过长。
2. 微服务
许多大型公司,通过采用微服务架构解决上面的问题。其思路不是开发一个大的单体应用,而是将其应用分解为小的,互相连接的微服务。
一个微服务一般完成某个特定的功能,比如订单服务,用户服务等。每一个微服务都是完整应用,都有自有的业务逻辑和数据库。一些微服务还会发布API给其它微服务和应用客户端使用。
比如,根据前面描述的系统可分解如下:
每一个业务模块都使用独立的服务完成,这种微服务架构模式也影响了应用和数据库之间的关系,不像传统多个业务模块共享一个数据库,微服务架构每个服务都有自己的数据库。
微服务好处:
- 分而治之,职责单一: 易于开发,理解和维护,方便团队的拆分和管理
- 可伸缩: 能够单独的对指定的服务进行伸缩
- 局部容易修改,容易替换,容易部署,有利于持续集成和快速迭代
- 不会受制于任何技术栈