面试遇到的,总结一下,欢迎指正:单体架构跟微服务架构的选择以及优缺点

发布时间 2023-06-07 11:58:28作者: fei_wss

单体架构:一个war包或者jar包包含了应用的所有功能,称之为单体应用,单体架构中,所有功能集中在一个包中,功能集中、代码跟数据中心化,这是一种比较传统的架构风格,常见的ERP、CRM等系统都以单体架构的方式运行

  优点:

    1.架构简单:使用软件设计中的三层模型,即表示层,业务层,数据访问层

    2.技术单一:项目中不需要很复杂的技术栈

    3.部署成本低:可以部署在一台服务器上

    4.用人成本低:单个程序员可以完成业务接口到数据的整个流程

  缺点:

    1.可用性差:任何一个模块宕机会导致整个系统的宕机

    2.推展能力受限,无法按需伸缩:单体应用只能作为一个整体进行拓展,无法结合业务模块的特点进行伸缩

    3.阻碍技术创新:单体应用往往使用脱衣的技术平台或方案解决所有问题,团队成员必须使用相同的开发语言和架构,想要引入新的框架或技术平台非常困难

    4.部署速度逐渐变慢:随着代码的增加,构建和部署的时间也会增加,在单体应用中,每次功能的变更或缺陷的修复都会导致我们需要重新部署整个应用,全量部署的方式耗时长,影响范围大,风险高

    5.团队协作难度高,多人使用同一个功能,多人进行修改

微服务架构:微服务架构强调一个重点是“业务需要彻底地组件化和服务化”,原有的单个业务会拆分为多个可以独立开发、设计、运行的小应用,这些小应用之间通过服务完成交互和集成,适用与互联网时代,产品迭代周期更短

   优点:

    1.服务拆分粒度更细,遵循单一原则,有利于提高开发效率

    2.可采用http协议进行服务间的调用

    3.可以针对不同服务指定对应的优化方案

    4.微服务之间是松耦合的,灵活性更高

    5.多个团队之间独立开发,加快进入市场需求

    6.微服务是持续交付的巨大推动力,允许在频繁发布不同服务的同时保持系统其他服务的可用性和稳定性

  缺点:

    1.服务粒度小,增加运维开销和成本增加,多个微服务部署多个服务器,数据库

    2.测试难度大,微服务在一定程度上也会导致系统变得越来越复杂,增加集成测试的复杂度

    3.部署工作量大:微服务每个服务都有不同的实例,每个实力都需要配置、部署、监控

    4.作为分布式系统,微服务引入了复杂性和其他若干问题,例如网络延迟、容错性、消息序列化、不可靠网络、异步机制等问题