单体架构和微服务系统架构的优缺点

单体架构

  • 所谓的单体架构就是把所有的业务模块编写在一个项目中,最终会打包成一个war包,然后进行部署
单体架构的优点:
  1. 部署简单:由于是完整的结构体,可以直接部署在一份服务器上即可
  2. 技术单一:项目不需要复杂的技术栈,往往一套熟悉的技术栈就可以完成开发
  3. 用人成本低:单个程序员可以完成业务接口道数据库的整个流程
单体架构的缺点:
  1. 系统启动慢:一个进程包含了所有的业务逻辑,涉及到的启动模块过多,导致系统的启动时间周期过长
  2. 系统错误隔离性差:可用性差,任何一个模块的错误均可能造成整个系统的宕机
  3. 可伸缩性差:系统的扩容只能对这个应用进行扩容,不能做到对莫讴歌功能点进行扩容
  4. 线上问题修复周期长:任何一个线上问题修复需要对整个应用系统全面升级

微服务系统架构:

  • 微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每一个服务运行在自己的进程中,服务间通信采用的轻量级通信机制(通常用Http资源API),这些服务围绕业务能力构建并且可通过全自动部署机制独立部署,这些服务公用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术
微服务架构的优点:
  1. 易于开发和维护:一个微服务只会关注一个特定的业务功能,所以他的业务清晰,代码量少,开发和维护单个微服务相当简单,而整个应用是若干个微服务构建而成的,所以整个应用也被维持在一个可控状态
  2. 单个微服务启动较快:单个微服务代码量较少,所以启动会比较快
  3. 局部修改容易部署
  4. 技术栈不受限
  5. 按需收缩:可根据需求,实现细粒度的扩展,例如:系统中的某个微服务遇到了瓶颈,可以结合这个微服务的业务特点,增加内存,升级CPU或者增加节点
  6. 可以承受高并发
微服务架构的缺点:
  1. 运维要求较高:更多的服务意味着更多的运维投入,在单体架构中,只需要保证一个应用的正常运行,而在微服务中,需要保证几十甚至几百个服务正常运行与协作,这给运维带来了很大的挑战
  2. 分布式固有的复杂性:使用微服务构建的是分布式系统,对于一个分布式系统,系统容错,网络延迟等都会带来巨大的挑战
  3. 接口调整成本高:微服务之间通过接口进行通信,如果修改某一微服务API,肯呢个所有使用该接口的微服务都需要调整