美文网首页
单体应用、微服务,你会怎么选?

单体应用、微服务,你会怎么选?

作者: 小纠结在简书 | 来源:发表于2017-12-06 14:36 被阅读19次

在软件开发过程中,我们往往会遇到这样的情况,在项目或者平台建设中,我们到底该如何建立平台的架构?是选择传统开发模式的单体应用这种一体式的工程方式,还是选择时下流行的微服务架构呢?

一、单体应用

传统开发模式的“单体应用”就是将应用程序的所有功能都打包成一个独立的单元,可以是JAR、WAR、EAR或其它建档格式。

优点
  1. 易于开发、部署简单;
    团队开发人员只有通过代码管理工具一次性下载工程目录下的所有代码,即可进行功能开发,并且可以直接在IDE中集成应用服务器,进行调试,而开发完成后把所有功能打包到单个归档文件中,复制到应用服务器目录下即完成应用的部署。

  2. 集中部署、方便测试;
    因为单体应用所有功能都在一个归档文件中,应用一旦部署,即可使用所有功能,而我们就可以测试这个应用的所有功能。

缺点
  1. 效率低
    团队所有开发人员都在同一个工程项目上新增、修改代码,功能存在相互依赖时,耦合程序高,会产生冲突或者相互等待的情况。

  2. 维护难
    项目初期这种情况并不明显,随着业务的发展,代码功能起来越耦合,维护修改将会越来越困难。

  3. 不灵活
    每次修改一个小功能都要重新构建整个项目,并重新部署,影响效率。

  4. 相互影响
    因为应用所有功能都部署在一个服务里面,只要有一个功能异常,都可能影响其它功能无法使用。

  5. 难以扩展

随着业务需求的快速发展变化,可扩展性的需求不断增长,单体应用将难以应对这种快速变化。

  1. 技术债务
    随着业务日益完善,系统也随之庞大,原来写好的代码也越来越难修改,随着时间的推移,这样的技术债务也将越来越重。

二、微服务

微服务是一种架构风格,而不是一种全新的技术。微服务是将原有的单体应用以模块或者功能的方式,分散开发,形成一个小应用服务,每个服务有自己的归档文件,并独立部署,然后共同组成一个大应用程序。

优点
  1. 易于开发、方便维护
    微服务往往是以模块或者功能进行拆分,业务逻辑相对来说没那么错综复杂,只要完成自身模块的功能即可,开发人员更容易进行开发与后期维护。

  2. 启动更快
    因为独立部署的服务,体量相对来说小很多,所占用资源更少一些,应用启动更加快速。

  3. 易于部署
    由于模块与模块之前早已进行拆分,独立部署,服务都在各自的容器内,更新部署并不会有直接影响,这样更有利于我们的持续集成和持续交付。

  4. 故障隔离
    单个服务故障只在本服务容器内产生,不影响其它的服务继续使用,当然,调用本服务的应用,将会受限使用,这样一个服务出现问题不至于导致整个应用受到影响。

  5. 更宽的技术栈
    由于微服务都在自身环境下相对独立的开发,所在团队满足所使用的技术要求即可,而服务于服务之间统一遵循约定的协议,而不必受限于相同的技术体系,这样对于有特殊要求的服务,在技术造型上更灵活一些。

缺点
  1. 增加运维成本

  2. 接口约定更加复杂

相关文章

  • 单体应用、微服务,你会怎么选?

    在软件开发过程中,我们往往会遇到这样的情况,在项目或者平台建设中,我们到底该如何建立平台的架构?是选择传统开发模式...

  • 6. 微服务和Dubbo

    1. 单体应用vs微服务 单体应用缺点: 微服务优点: 微服务要解决的问题: 微服务开发框架: 2. Dubbo部...

  • SpringCloud微服务实战——搭建企业级开发框架(二十九)

      微服务应用中图片、文件等存储区别于单体应用,单体应用可以放到本地读写磁盘文件,微服务应用必需用到分布式存储,将...

  • 微服务 1:概念

    1:对微服务的理解 2:传统模式单体应用 3:Springboot解决传统单体Web应用的最大问题 4:微服务治理...

  • 2022年了你必须要学会搭建微前端项目及部署方式

    一、微前端简介 微前端是一种类似于微服务的架构,它将微服务的理念应用于浏览器端,即将 Web 应用由单一的单体应用...

  • 服务注册与发现

    在单体应用中调用往往局限在语言层面,也就是方法的调用。当服务被拆解,单体应用变成了多个服务之后,服务间“对话”就变...

  • 微前端简介

    什么是微前端 微前端是一种类似于微服务的架构,它将微服务的理念应用于浏览器端,即将 Web 应用由单一的单体应用转...

  • 微前端

    什么是微前端 微前端是一种类似于微服务的架构,它将微服务的理念应用于浏览器端,即将 Web 应用由单一的单体应用转...

  • 微服务的优缺点对比及上线条件

    在介绍微服务之前先要说明一下说明是单体应用,这样就可以深入理解微服务的价值。 单体应用 对于Java而言一般单体应...

  • 分布式架构演进之路

    单体应用架构单体应用架构 最开始的应用架构,是一台服务器,开着一个web服务,一个数据库服务。这时候的应用性能受服...

网友评论

      本文标题:单体应用、微服务,你会怎么选?

      本文链接:https://www.haomeiwen.com/subject/jowxsxtx.html