聊聊单体应用的 4 点不良影响,第 4 点很痛很真实

微服务架构深入剖析拆分,聊一聊单体架构的痛点 单体架构的痛点 数据库的连接数成为应用服务器扩容的瓶颈 数据库的连接是比较重要的一类资源,不仅连接过程耗时,而且客户端数量有限制。 单体架构增加了研发的成本,抑制了研发效率的提升 由于代码部署在一起,每个人都向同一个代码库提交代码,代码冲突无法避免;功能之间耦合严重,可能更改了很小的逻辑,却导致其他功能不可用,在测试时需要对整体功能回归;模块之间相互依赖,一个小的错误可能对于整体系统稳定性影响很大 单体架构对于系统的运维也会有很大的影响 随着系统复杂度的增加,一次构建的过程,包括编译、单元测试、打包和上传 阅读详情

点击上方“芋道源码”,选择“设为星标”

做积极的人,而不是积极废人!

源码精品专栏

 

来源:Sam哥哥 https://blog.youkuaiyun.com/linsongbin1

  • 0. 概述

  • 1. 系统稳定性很不可控

  • 2. 发布时间真的好长

  • 3. 分支问题

  • 4. 会吓跑新人的

0. 概述

单体应用有优点也有缺点,而所有缺点基本上都是一个原因导致的。

功能模块都耦合在一起了。

不同功能堆在一起了,会引发各种各样的问题,下面说一下自己体验过的单体应用的痛。

1. 系统稳定性很不可控

目前公司有一个旧的后端应用,里面保罗万物,有订单、商品、支付、库存、定时任务、MQ,还有各种管理功能,在今年九月份的时候,其中一个模块出现了内存泄漏,最后导致了操作系统级别的oom killer,整个系统不可用了,而恰巧当时正在跑一个重要的且不支持幂等的批量指派任务,由于被强制停掉了,直接影响数据在前端的展现,且又不支持重新跑数据,运营人员直接就发飙了:怎么回事。后面研发只能边挨骂边修复数据,苦b的很。

单体应用耦合的模块多了,容易造成功能相互影响,真是躺着也中枪。

2. 发布时间真的好长

单体应用耦合的模块多了,也会导致应用启动时间变长,像之前的一个内部应用,启动时间是2分多钟,且有10台机器,使用原始的滚动发布方式,线上发布完后要20分钟,非常漫长;而对于测试人员来说,在测试环境里,经常要验证bug是否修复好了,经常性的要发布应用,每次都要等很久,真是苦不堪言,极大的降低了测试效率。

另外,发布时间长,对于CI来说,也是灾难。

3. 分支问题

当一个周期里,有多个功能要上线的时候,研发这边会基于主干分支拉出各个功能分支,这里会出现几个问题:

  • 各个功能分支合并到主干分支的时候,容易出冲突,除了处理冲突需要时间外,还容易处理出错,导致代码被覆盖,很容易造成线上故障;

  • 如果公司抠门,出于成本考虑,只有一台dev机器用于开发联调,这个时候只能使用另外一个叫dev_all分支,所有功能分支的代码都统一合并到dev_all分支,开发人员一多,又是各种合并问题,导致开发环境不稳定,前端开发每次都因为这个,屌后台研发。

4. 会吓跑新人的

对于新手来说,看到了一坨庞大的代码,真心是无从下手,你让他接手或者干点活啥的,成本都贼高的,且容易犯错。对于有代码情操的人,是会立刻走人的。对于暂时忍受的了人,心理阴影也会逐渐加大,外面有啥风吹草动的,也会走人的。



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢:

已在知识星球更新源码解析如下:


最近更新《芋道 SpringBoot 2.X 入门》系列,已经 20 余篇,覆盖了 MyBatis、Redis、MongoDB、Elasticsearch、分库分表、读写分离、SpringMVC、SpringWebflux、WebSocket、性能测试等等内容。

提供近 2W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

如果你喜欢这篇文章,喜欢,转发。

生活很美好,明天见(。・ω・。)ノ♡

正确解决Authentication plugin ‘caching _sha2_password’ cannot be loaded:异常的有效解决方法 阅读详情

相关推荐

ubuntu18.04 显卡驱动问题 造成屏幕分辨变大 NVIDIA-SMI has failed because it couldn't communicate with ....等问题

问题1:装好了显卡驱动,cudnn,tensorflow等没问题,一直可以用。但是突然有一天不行了,终端输入:nvidia-smi 显示:NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed...

梦萦飞--CV/DL/ML 2248

浅谈关于业务架构

一、序章  一般的工程师接触到的是 应用架构 ,传统的MVC分层架构、事件驱动架构等等。第一次接触业务架构这个概念是在来到商品发布团队之后。商品发布是一个业务属性很重的系统,承载了淘宝、天猫、盒马、魅力惠、汽车、虚拟、SCM自营、苹果、村淘、公益、教育等诸多业务(业务多的围起来可以绕地球一圈)的商品发布功能。头半年对“业务架构”还是很懵逼的,随着慢慢的熟...

weixin_34342578的博客 768

ANSYS APDL学习(6):ANSYS APDL部分命令流介绍

介绍APDL 部分命令流

娱乐至上的博客 1万+

微服务基础

单体应用的痛点 部署效率低下 团队协作开发成本高 系统高可用性差 服务化 把传统得到单机应用的本地方法调用,改造成RPC、HTTP产生的远程方法调用 把模块从单体应用中拆分出来,独立成一个服务部署 用户模块就可以独立开发、测试、上线和运维,可以交由专门的团队来做,与主模块不耦合 什么是微服务 一种架构风格 开发单个应用作为一系列小型服务的套件,其中每个服务都运行在自己的进程中,并通过轻量级的机制实现彼此间的通信,这通常是HTTP资源API 这些服务是围绕着业务功能构建的,并且可以通过完全自

敲风奏雨的博客 244

从DBC到ARXML:详解DaVinci Configurator中通信栈的自动化配置逻辑

本文深入解析了Vector公司DaVinci Configurator工具如何将DBC文件自动转换为符合AUTOSAR标准的ARXML配置,详细介绍了从DBC到ARXML的映射逻辑、自动化配置的边界与陷阱,以及工程实践中的优化策略。帮助工程师高效配置汽车电子系统中的通信协议,提升项目开发效率。

weixin_30279671的博客 717

六自由度机器人(机械臂)运动学建模及运动规划系列(四)——轨迹规划

本篇介绍了六轴机器人关节空间以及笛卡尔空间轨迹规划的简单方法,并给出了一种几何解法,以简化规划过程,并提供了简单的Matlab轨迹规划函数介绍。

weixin_47849087的博客 5万+

单体应用和微服务应用

什么是单体应用 一个归档包包含所有功能的应用程序,通常称为单体应用。一个归档包(可以是JAR、WAR、EAR或其它归档格式)包含所有功能的应用程序,通常称为单体应用。而架构单体应用的方法论,就是单体应用架构。将所有业务场景的表示层、业务逻辑层和数据访问层放在一个工程中,最终经过编译、打包,部署在一台服务器上。往往使用单一应用框架。例如单纯用django进行一个项目的前后端开发,开发出来的项目将django+uwsgi+mysqhl+nginx部署在一台服务器上的应用就是单体应用。 单体应...

一越王超的博客 1444

TI毫米波雷达人体生命体征(呼吸、心跳)信号提取算法(IWR6843ISK+DCA1000EVM)

本篇内容介绍的算法主要为传统的提取算法,但可实现在1m内呈现良好的检测效果,能够提取出非常可观的呼吸和心跳波形,但在超出1m的距离后便不适用这个算法了。远距离检测呼吸和心跳始终是这个领域一个很大的挑战。要实现远距离检测可在提取相位信号、分离呼吸和心跳信号上进行改进处理,例如线性解调提取相位、改进的VMD分离呼吸和心跳算法。

m0_61934621的博客 3万+

单体应用优缺点分析

目的: 很多时候我们在面试时,面试官一般会提到你现在使用的是微服务架构,那你知道单体应用有什么优点吗?为什么要从单体应用转成微服务?如题,我们先来分析单体应用的优缺点,后续文章会陆续介绍微服务和SOA架构等。 单体应用时代: 大家可以回想下以前做单体应用时涉及的项目情况,包含:用户群体、用户规模、项目阶段、团队人数、团队分组情况、项目投入资金、项目工期、开源社区流行技术框架有哪些、每天能产生多少业务数据量,带着疑问去思考。 分析: 我们按照规模大小来,区分单体应用的优缺点,在不同规模下的优缺点是不同的,有些

liym1992的专栏 2686

代谢组数据分析(十五):基于python语言构建PLS-DA分类预测模型

本教程阐述典型代谢组学数据分析工作流程,用于二元分类结果的研究。流程主要步骤如下:首先从 Excel 表格导入代谢物与实验数据,接着基于汇总 QC 进行数据清洗。随后借助主成分分析可视化检查数据质量,再开展两类单变量统计。之后运用偏最小二乘判别分析(PLS - DA)实施多变量分析,此过程涵盖模型优化(对比 R2 与 Q2)、置换测试及明确模型预测指标、确定特征重要性、对模型预测数据进行可视化。最终将统计表格导出至 Excel 表格,完整呈现从数据导入到分析结果输出的全过程。

专注生信领域 2875

T527 uart串口配置导致系统进不去

T527 s_uart串口配置导致系统进不去。

Linux驱动开发工程师,熟悉Linux/Android底层驱动、TP、显示、IIC、网络等通用外设调试适配,Linux上层应用开发。常用平台瑞芯微、全志、恩智浦等。 676

单体项目和微服务项目

微服务是用来处理海量数据、业务复杂和需求频繁变更场景下的架构风格。成本更高、开发更复杂、部署挑战更高 、数据一致性难维持、监控和故障排查难度更高。1.不好扩展,即使只有一个组件需要扩展也需要扩展整个项目。2.不好维护,屎山代码维护成本高且风险大。3.风险高,一个很小的故障可能导致整个项目崩溃。4.技术栈受限,整个项目只能使用相同的技术栈。“好的架构是演化出来的,不是设计出来的”。单体项目有哪些缺点?

weixin_60246228的博客 221

SXU-软件项目管理-朱少民-第九章 项目监控与控制 第十章 项目收尾 附相关习题

软件项目管理-朱少民-第九章 项目监控与控制 附相关习题

weixin_63597914的博客 1488

聊聊单体应用的 4 点不良影响,总有 1 点击中你

点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!源码精品专栏原创 | Java 2020超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析...

weixin_44421461的博客 613

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

传统单体架构具有哪些优缺点?

一个简单的应用会随着时间的推移而逐渐变大,那么开发团队将会面临很多问题,其中最主要问题就是这个应用太复杂,以至于任何单个开发者都很难进行二次开发或维护,特别是那些刚加入团队的开发人员,应用程序可能难以理解和修改。虽然使用负载均衡的方式可以对项目中的服务容量进行水平扩展,这样导致其他不需要扩展的服务也进行了相应的扩展,但这种扩展是不需要的,因此这种方式会极大的浪费资源。例如,在网上商城系统中,Java Web工程通常会被打成WAR包部署在Web服务器上,而普通Java工程会以JAR包的形式包含在WAR包中。

zy1992As的博客 578

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

说一说单体应用的不良影响

1、业务耦合一个单体应用后,多人在上面开发代码,各种代码冲突,提交后,各种编译不通过,启动不起来,严重影响了开发效率; 2、不好做水平扩展; 3、一个小的功能点改动后,需要整体上线; 4、由于功能耦合多了,单体应用启动的时间变的很长,无法做到快速启动和发布,想我们这边的一个大应用,16台机器,滚动发布的时候,需要16分钟。 5、 ...

Sam_Deep_Thinking 1222

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

微服务与单体应用有什么区别?

微服务与单体应用有什么区别?

Gzlcxxjs的博客 2727

什么是单体应用?单体应用的优缺点?

什么是单体应用?单体应用的优缺点? 什么是单体应用? 所谓的单体应用就是指一个war包包含了项目的所有功能。 单体应用的优点 不管是什么样的架构模式都会有其优点所在,单体应用的优点如下所示: 容易部署:这个不容置疑,整个项目就一个war包,部署特别方便。 容易运行/测试:这个也上面也类似,我们在测试阶段只需要启动一个war包即可。 但是相比优点缺点反而更加明显,下面讲述一下单体应用的缺点。...

微信公众号《后端学长》 1万+

单体应用的缺点

2. 项目规模大 —— 此时项目的打包和发布的时间会非常长,可是你项目的更新部分并不是所有的业务(只是其中一部分更新,却要重新发布整个项目。1. 访问频率高 —— 如果扩展就要把全部的程序都复制一遍,不便于设备资源的利用(不是所有功能访问频率都高。最近在学习微服务的架构。微服务是将原本单体应用的一整块业务层的各个业务功能分割成一块块。总而言之,单体应用只适合小打小闹,并不适合大项目。(虽然大的项目自己的电脑不可能跑得动。

LE_MODUO的博客 159

微服务架构-即将做废

微服务架构简单说就是将一个完整的应用(单体应用)按照一定的拆分规则拆分成多个不同的服务, 每个服务都能独立地进行开发、部署、扩展。服务于服务之间通过注入RESTful api或其他方式调用。...

sinat_34814635的博客 8571

单体应用、SOA 和微服务架构的区别

单体应用是一种传统的软件架构模式,将所有的功能模块都打包在一个独立的应用程序中。通常采用单一的技术栈,开发、测试和部署都以整个应用为单位进行。SOA 是一种将应用程序拆分为多个独立服务的架构风格。这些服务通过企业服务总线(ESB)进行通信和集成。服务之间相对独立,具有明确的接口和契约。微服务架构是将应用程序拆分为一组小型的、独立的服务。每个服务都运行在自己的进程中,通过轻量级的通信机制进行交互。服务围绕业务功能构建,具有高度的独立性和自治性。单体应用是一个整体,所有功能集中在一个应用中。

我爱娃哈哈的专栏 1793

微服务架构(1)——微服务架构介绍

目录: 1、单体应用的缺点 2、微服务的出现 3、微服务带来的问题 单体应用的缺点 在之前我们开发一个应用,就是在我们本地把功能实现好,然后把整个应用打成一个war包,部署到一个web容器里面,这样在浏览器里面就能够访问我们的项目了。这样的一个应用我们称之为单体应用。这种应用开发简单,所有的功能都在本地,没有调用消耗。但是随着业务的发展,应用功能不断增加,几年之后这个应用变的又大又复杂。这个时候这种应用的缺点就凸显出来了。 单体应用架构如下: 缺点: 1、效率低:可能这个项目由10几个开发在维护,所有人都

tack_back的博客 427

java单体项目是什么意思_什么是单体架构?单体架构有什么优缺点?

什么单体架构?在软件设计中,经常提及和使用经典的 3 层模型,即表示层、业务逻辑层和数据访问层。表示层:用于直接和用户交互,也称为交互层,通常是网页、UI 等。业务逻辑层:即业务逻辑处理层,例如用户输入的信息要经过业务逻辑层的处理后,才能展现给用户。数据访问层:用于操作数据库,用户在表示层会产生大量的数据,通过数据访问层对数据库进行读写操作。虽然在软件设计中划分了经典的 3 层模型,但是对业务场景...

weixin_30140317的博客 9072

微服务架构学习(二):微服务应用VS单体应用

前言 前面学习了微服务架构的概念,今天主要对比一下微服务应用和单体应用的主要优缺点,在结合我目前在参与的实际项目,考虑当前的问题和瓶颈,为什么改造微服务,改造完微服务能带来什么样的改变和优化。 怎么界定微服务 界定什么是微服务,那么主要由四个特征来判断。首先服务的大小,颗粒度要小,专注提供一个服务;其次是否是一个单独的进程,这里特别要理解一下,微服务≠组件,微服务是可直接运行使用的服务,而组件主...

缘尽无期的博客 600

从单体应用走向服务化

之前讲解了什么是微服务:微服务的核心在于服务治理,微服务架构是将复杂臃肿的单体应用进行细粒度的服务化拆分,每个拆分出来的服务各自独立打包部署,并交由小团队进行开发和运维,从而极大地提高了应用交付的效率。 什么时候进行服务化拆分?拆分单体应用有哪些标准呢? 什么时候进行服务化拆分? 比如做社交 App,初期为了快速上线,验证可行性,可以只开发首页信息流、评论等基本功能。产品上线后,经过一段时间的运营...

武培轩 575

老生常谈:单体应用与微服务架构

现在越来越多的项目设计都是微服务和分布式项目,大家是否真的理解了这方面的设计理念,和他们出现的优势呢,这期笔者结合我们早期的单体应用服务,和现在比较热门的微服务架构项目进行一些列对比,展示出他们各自的优缺点,以便大家思考。 单体应用 优势 简单粗暴,一个应用打包所有功能 本地开发调用方便,没有很长的调用链 本地函数调用,没有网络调用开销 线上查找问题相对简单一点 痛点问题 系统耦合度很高,导致开效率降低 随着需求和代码量激增,各个服务之间的边界模糊了 依赖于开发团队的个人水平 在开发某个新功能的时.

weixin_38899094的博客 583
上一篇: 微服务架构,如何做分布式,通用缓存机制?
下一篇: 最强 Java Redis 客户端
公众号-芋道源码
博客等级 码龄10年 1631粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值