单体架构&微服务架构
单体架构
基本介绍
一个项目包(war包)包含了应用的所有功能, 在没有出现微服务概念之前,基本上都是这种架构形式存在, 我们一般把程序打包成一个文件后,扔到tomcat等应用服务器中即可
优缺点
优点
- 项目架构简单,前期开发的成本低,周期短
- 功能都在本地,没有分布式的管理开销和调用开销
- 运维简单
缺点 - 开发效率低:所有的开发在一个项目改代码,递交代码相互等待,代码冲突不断
- 代码维护难:代码功能耦合在一起,新人不知道何从下手
- 部署不灵活:构建时间长,任何小修改必须重新构建整个项目,这个过程往往很长
- 稳定性不高:一个微不足道的小问题,可以导致整个应用挂掉
- 扩展性不够:单体应用只能作为一个整体进行扩展,无法结合业务模块的特点进行伸缩
- 技术升级难:单体应用往往使用统一的技术平台或方案解决所有问题,团队的每个成员都必须使用相同的开发语言和框架,想要引入新的框架或技术平台会非常困难
微服务架构
基本介绍
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。
每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API)。
每个服务都围绕着具体业务进行构建,并且能够被独立的部署。
优缺点
优点
- 开发简单
- 技术栈灵活
- 服务独立无依赖
- 独立按需扩展
- 可用性高
缺点(挑战)
- 系统架构复杂,对开发者要求高
- 系统部署依赖
- 服务间通信成本
- 数据一致性
- 系统集成测试
- 多服务运维难度
- 性能监控
- ……