单体架构

基本介绍

一个项目包(war包)包含了应用的所有功能, 在没有出现微服务概念之前,基本上都是这种架构形式存在, 我们一般把程序打包成一个文件后,扔到tomcat等应用服务器中即可

优缺点

优点

  • 项目架构简单,前期开发的成本低,周期短
  • 功能都在本地,没有分布式的管理开销和调用开销
  • 运维简单
    缺点
  • 开发效率低:所有的开发在一个项目改代码,递交代码相互等待,代码冲突不断
  • 代码维护难:代码功能耦合在一起,新人不知道何从下手
  • 部署不灵活:构建时间长,任何小修改必须重新构建整个项目,这个过程往往很长
  • 稳定性不高:一个微不足道的小问题,可以导致整个应用挂掉
  • 扩展性不够:单体应用只能作为一个整体进行扩展,无法结合业务模块的特点进行伸缩
  • 技术升级难:单体应用往往使用统一的技术平台或方案解决所有问题,团队的每个成员都必须使用相同的开发语言和框架,想要引入新的框架或技术平台会非常困难

微服务架构

基本介绍

微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。
每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API)。
每个服务都围绕着具体业务进行构建,并且能够被独立的部署。

优缺点

优点

  • 开发简单
  • 技术栈灵活
  • 服务独立无依赖
  • 独立按需扩展
  • 可用性高

缺点(挑战)

  • 系统架构复杂,对开发者要求高
  • 系统部署依赖
  • 服务间通信成本
  • 数据一致性
  • 系统集成测试
  • 多服务运维难度
  • 性能监控
  • ……