肝了三年微服务,准备进大厂,结果变单体了?

谁说大专非科班学历就不能进大厂,我用结果来证明这个是谣言!(附带自学资料包分享) 先纠正一下大家的错误认知,大专学历不是不能进大厂,只不过很难罢了,比如阿里就有很多大专学历的人;学历低想进大厂很难的,不光需要的技术足够厉害,还需要有合适的内推人(人脉)以及恰到好处的机遇!当然,也不是所有大厂都像阿里这样,很多大厂学历都是硬性指标,学历不行,谁内推你也没用! 背景 非计科大专一枚,当初学的机械自动化专业。大学完全可以说是玩过来的,临近毕业开始慌了,毕业后一直没能找到工作,在高中同学(211 计科)的引领下,入坑程序员。 从一开始的 4K 起步,一直到三年后的 14K,毫不夸张的说,. 阅读详情

前一段有个很火的博客,讲的是一家全球流媒体企业的监测系统从Serverless+微服务改成了单体,成本居然降低了90% !

这一下子可在网上炸锅了,特别是一些看不惯微服务的、单体应用的拥趸,更是坐不住了。

著名的微服务批评者DHH(Ruby on Rails作者,37signals的创始人)也跳出来写了一篇文章:“用单体替代微服务……简化了系统,真是一场胜利……微服务让你的系统不必要地复杂化,Serverless让情况变得更糟。”

DHH也曾经是我的偶像,如果你长期关注他的博客,你就知道,DHH并不是反对微服务架构,他的观点是反对过早优化或过早复杂化,主张在项目早期保持架构的简单,等到应用足够大的时候,拆分成微服务能获得实质好处的时候才考虑微服务架构。 

那在监控系统这件事情上,是用户错了,还是DHH错了?

我也去仔细地研究了英文原文,一个单词一个单词地看了一遍。

我发现根本不是那回事儿,这并不像吃瓜群众看到的那样,仅仅是“回归”单体应用,或者说大家的关注点都盯着那个成本降低了90%。

大部分人忽略了两件事情:

(1)架构的演进  

(2)Serverless First

1

架构的演进

视频监控系统最早版本确实选择了分布式的架构,主要包含三个组件:

1.  媒体转换服务:把视频转换成“帧”,保存在Amazon S3中。

2.  缺陷检测服务:分析Amazon S3中的视频“帧”,检查是否有缺陷。

3.  通知服务:发现了视频缺陷,发送实时通知。

50c9d8bc57baf12ad863dda7e52a40a7.jpeg

这个架构的好处是:充分利用了亚马逊云科技的基础设施。

Amazon S3帮助进行数据在多个服务之间进行中转,Amazon Step Functions帮助对多个服务进行组合和协调。

在Serverless的加持下,每个组件都可以根据流量独立地、自动地扩展。

这个架构非常简单,但简单的架构不一定是单体架构,也可能是Serverless架构,因为亚马逊云科技把复杂的细节都给封装起来了,程序员可以专注业务的开发,可以快速实现,快速进入市场。

这恰恰符合了DHH所说的:反对过早优化,在早期保持简单架构的理念。 

但是当流量大了以后,这个架构暴露出了两个问题:

(1) 服务粒度拆分得太细,使用Amazon Step Functions组合起来以后,导致状态迁移次数过多,收费自然就高了。

(2) 使用Amazon S3来暂存视频帧,对数据的存取需要一定的费用,当视频流数量很大时,费用也就相应上升了。

很明显,原有的微服务架构已经不满足需求了,必须进行演进。 

团队的选择是:把所有的服务都放到一个进程中,部署到一个Amazon ECS 中,数据的通信不再使用Amazon S3,而是直接用Amazon ECS的内存。

既然在一个进程中,Amazon Step Functions也就不需要了,状态转换带来的费用也就没有了。 

f708a561af31f30ded80ee183cdb67f9.png

当一个Amazon ECS不够用,需要扩展的时候,可以部署多个Amazon ECS。

e0c4254625f2bb2d5f70424f5e722f91.png

用这种方式,成本降低了90%。

但是很多人没意识到的是,这里只是运行成本降低了90%,开发成本并没有算进去。

原来系统用的是Amazon Step Functions,在把微服务架构转换成单体的过程中,自然是不用了,但是Amazon Step Functions承担的协调功能怎么办呢?它内置的重试功能、异常捕获功能怎么办呢?如果出现未处理的异常、运行超时、Socket超时等问题该怎么办呢? 

这些问题都需要程序员手工来重新编码实现!

此外使用单体架构,失去了原来Serverless自然拥有的横向扩展的能力,想根据流量对特定微服务进行扩展是不可能了,现在扩展的最小单位变成了Amazon ECS,并且团队不得不自己去估算流量,编程实现请求在多个Amazon ECS之间的转发。 

所以你看,架构设计本质上是一种权衡(Trade-Off),不可能存在一种面面俱到的完美架构,一劳永逸地解决问题,架构师的工作就是不断地取舍,根据需求不断演进架构,找到最适合自己的。 

这个监控系统的架构就是一个演进的过程,从微服务+Serverless开始,最后由于基于成本的考虑,转换为单体,自己实现扩展,自己管理基础设施,自己开发部分代码。 

亚马逊的CTO Werner 说:构建可演进的软件系统是一种策略,必须用开放的心态来重新审视你的架构。

2

Serverless First

现在你应该明白了,Prime Video监控系统这个案例,实际上就是架构演进的自然结果。

现在如果你要构建一个新的应用,不要做某种架构的狂热信徒,不能说这个就好,那个就不好,一切都视情况而定,先保持简单,然后再慢慢演进。 

但是我想建议大家的是:一定要有Serverless First的心态。

原因非常简单,使用Serverless,可以抛弃基础设施维护的负担,把注意力集中在业务实现上,在几天或者几周内快速构建一个系统,推向市场并且获得收益。

Serverless是真正地按价值付费,用户使用了你开发的产品,才会产生费用,如果没有流量,根本不会产生费用。

当业务取得成功,有持续稳定的流量,对云上成本很敏感,愿意自己维护基础设施,可以接受增加部分开发工作,这个时候可以考虑进行一些架构调整,比如将工作负载转向容器。

这是一种市场导向,业务导向的方法,也是一种更加敏捷的方法。

如果在设置虚拟机,容器,软件等方面花费太多的金钱和精力,最后发现产品不是市场所需要的,那将是一种巨大的浪费。

Serverless和EDA(事件驱动架构)是绝配,当你采用它们的时候,会迫使你不断思考,把整个系统变成松耦合的状态,让系统中每个组件都更加独立,互不影响。这也是良好的设计要达到的目标之一。

即使将来要“回归”到单体,或者整个系统一部分用微服务,一部分用单体,之前绝大部分组件代码都可以重用,就像视频监控系统那样,你要做的只是把这些组件放入到一个进程,一个Container中,然后手工编码补充完善那些本来由Serverless内置提供的能力。

如果反过来,一开始系统不是松耦合的,再想变成微服务和Serverless,那拆分的代价将会非常之高。

3

总结

视频监控系统这个案例的讨论是很有价值的,它给我们敲响了警钟,并不是微服务不行,Serverless不行,而是要在合适的时间点,选择合适的架构。

现代应用的架构设计要有Serverless First的心态,不要过多考虑基础设施,而是把注意力集中在业务实现上,迅速推出产品和服务,然后再根据实际需求进行调整,从而实现业务价值的最大化。

不要去毕业就进外包!苦肝900个小时从外包到大厂,回头看这一路是真的辛酸! 前言 我是普通二本的计算机专业,一毕业就去了外包待了三年,本以为毕业进外包先待一会,压力没那么大,薪资也不错,结果聚会跟以前的同学聊起,他现在不仅职位薪资比我高了好几倍,技术问题都得请教他了! 还没做好跳槽的准备,又恰好因2020疫情,各大企业都在裁员,外包更是不稳,我们这个项目组咬牙死扛,终究还是没扛过去,于是硬着头皮开始投简历面试,面了十几家,都被拒了。面试官往往都是一连串的问题,问的都是JVM、微服务、高并发、多线程、秒杀系统、性能调优等,搞得我措手不及一脸懵逼,真的有点心灰意冷。 我... 阅读详情

相关推荐

AI Agent Harness Engineering 后端架构选型:微服务 vs 单体架构的取舍

我们可以把AI Agent类比为乐队的乐手,每个乐手有自己的技能(工具调用能力)、记忆(上下文)和演奏任务(目标),而AI Agent Harness就是整个乐队的指挥台:它负责管控所有Agent的生命周期、协调多Agent之间的协同、调度工具与大模型资源、监控整个链路的运行状态、保障全流程的安全合规,是AI Agent从Demo走向规模化落地的核心基础设施。模块名称核心功能负载特征Agent生命周期管理层Agent的创建、调度、销毁、弹性扩缩、状态管理CPU密集、状态敏感工具集成层。

AI天才研究院 243

回归单体成为潮流?腾讯文档如何实现灵活架构切换

# 关注并星标腾讯云开发者# 每周3 |谈谈我在腾讯的架构设计经验#第11期|腾讯文档实践:灵活切换单体服务与微服务架构软件架构从来没有所谓的银弹,好的架构除了良好的设计,更少不了持续的迭代优化。腾讯文档在业务挑战之下,实现了一种灵活切换单体、微服务的架构设计方案,对业界同类型同场景项目具备较高可借鉴性。本文将详细介绍腾讯文档在实现单体服务和微服务切换过程中所采用的具体方法和技术,以及所取...

QcloudCommunity的博客 1439

深度伪造检测实战:轻量级频域特征 pipeline 部署指南

深度伪造检测(deepfake detection)是多媒体内容安全的核心技术,其本质是通过建模生成式篡改在像素与频域留下的微弱异常痕迹。传统端到端大模型虽在标准数据集上表现优异,却因训练域与真实场景失配、计算开销高、缺乏可解释性而难以落地。本文聚焦于工程可复现的实践路径,提出‘人脸定位→频域伪造特征提取(Xception-FCN + Frequency-Aware Masking)→轻量分类决策’三段式解耦架构,兼顾精度、延迟与可解释性。该方案已在边缘设备(Jetson Orin NX)实现单帧<48ms

weixin_33437929的博客 310

从微服务转为单体架构、成本降低 90%.....

程序员的成长之路互联网/程序员/技术/资料共享关注阅读本文大概需要 7分钟。来自:InfoQ、编译 | 明知山、TinaRuby on Rails 之父:“即使是亚马逊也无法理解无服务器或微服务。”来自亚马逊 Prime Video 团队的一个案例研究在开发者社区中掀起了轩然大波。在该案例中,Prime Video 团队将一个监控系统从微服务架构迁移到单体架构,并避免使用昂贵的服务(如 AWS...

良月柒 494

Qt C++:跨平台开发利器

摘要: Qt C++是基于C++的跨平台开发框架,通过元对象系统、信号槽机制及模块化架构实现"一次编写,多端部署"。核心特性包括: 跨平台能力:覆盖桌面(Windows/macOS/Linux)、移动端(iOS/Android)、嵌入式及WebAssembly; 信号与槽:替代传统回调,实现对象间高效通信; UI组件库:200+预制组件支持QSS样式定制; 工具链:Qt Creator集成开发环境提供可视化设计、调试及多平台编译。 广泛应用于工业控制、车载系统、医疗设备及跨平台应用开发,

2202_75382767的博客 1685

用Plecs搞定半桥LLC谐振变换器仿真:从开环模型搭建到闭环PI调参全流程

本文详细介绍了使用Plecs仿真工具进行半桥LLC谐振变换器从开环模型搭建到闭环PI调参的全流程操作。涵盖仿真环境准备、关键元件参数计算、波形异常排查、闭环控制实现及PI参数整定等核心内容,特别针对仿真中的收敛性问题提供实用解决方案,助力电力电子设计者高效完成LLC变换器仿真验证。

weixin_28455801的博客 571

微服务回归单体,代码行数减少75%,性能提升1300%

内容架构是 QQ 浏览器搜索的内容接入和计算层,主要负责腾讯域内的内容接入和处理,当前接入了多个合作方的上千类内容。正如前面《如何避免旧代码成包袱?5步教你接手别人的系统》中提到,这是一套包含 93 个小服务的微服务架构。经过 23 年 Q1 的大力治理,让我们稳住阵脚,进一步对老系统做深入的评估:▶︎ 研发效率较低:新增一类数据需要在 3~4 个服务上做开发,代码量不多,但很繁琐。▶︎ 系统性能...

weixin_45583158的博客 423

SpringBoot整合oceanbase,实现oracle无缝切换到oceanbase

随着去“IOE”化的潮流,近些年来,许多与国家相关的项目不约而同到地往”国产化“方向靠拢,不可避免地,一些项目可能需要进行数据库迁移。

4625

放弃了微服务,我们为什么要重回到单体架构?

我想明确指出我不是反微服务者,我将服务合并回到整体(单体/Monolith)中并不是为了摆脱微服务,目的是实现“大小正好”的整体。我正在做的事情是解决我团队的痛点。如果不能减少摩擦,我将不会花费太多时间(和机会成本)来提升,转移和重构旧代码。 每次这样做,我都会冒引入新错误并破坏用户体验的风险。将微服务合并回整体,有时会令人振奋,但总是令人恐惧;并且代表了计划,降低风险和测试方面的大师班。再说一次,如果这不值得做,我就不会做。 微服务解决技术和人员问题 为了了解为什么我要破坏一些微服务,重要的是要了解

Jsono8的博客 954

微信小程序 - 解决video视频播放黑屏只有声音没有画面问题,使用Video标签无法播放视频失败只有声音、黑屏视频播放不了,安卓手机/苹果ios视频只有声音却没有画面(uniapp微信小程序也适用)

微信小程序video有声音但是画面黑屏,uni-app微信小程序视频播放黑屏但是有音频,微信小程序video android真机或苹果ios系统中黑屏 只有声音没有画面,Uniapp微信小程序 Video MP4视频播放失败,只有声音,黑屏,视频播放不了,解决办法,解决小程序视频编码兼容性问题导致黑屏,出现黑屏但有声音的问题,video标签播放视频有声音,但是黑屏的原因及解决办法,mp4视频编码的问题,video标签播放视频有声音,但是黑屏。uniapp使用video标签无法播放视频出现黑屏问题处理,如何解

🏆 前端领域优质创作者 7782

5 分钟上手 Kimi Work:安装、配置、跑通第一个任务

这篇文章提供了Kimi Work的快速入门指南,帮助用户在5分钟内完成从安装到运行第一个任务的全过程。主要内容包括: 安装步骤: macOS用户下载.dmg文件并拖入Applications Windows用户下载.exe安装包,需注意中文路径问题 初始设置: 使用现有Kimi账号登录 检查任务配额和文件访问权限 首个任务推荐: 建议从简单的本地文件整理开始(如按类型分类桌面文件) 详细说明了任务执行流程和审批机制 常见问题: 计划生成卡顿的解决方法 文件无变化的排查步骤 进阶建议: 提供难度递增的后续任务

sg_knight的专栏 2801

从微服务到单体:究竟是什么让架构走了“回头路”?

微服务架构曾经以其诸多优势,如高可扩展性、独立部署、技术多样性等,成为了众多企业和开发者竞相采用的热门选择。然而,近年来却出现了一种有意思的现象,部分项目开始从微服务架构回归到单体架构,仿佛走了一条“回头路”,这背后究竟隐藏着什么样的原因呢?

csdncopy的博客 974

YOLO26涨点改进 | 独家创新、损失函数改进篇 | TGRS 2025顶刊 | 带来AIoU小目标涨点损失函数,增强了目标检测中对边界框形状和尺寸的敏感度,适合复杂场景和小物体检测中有效涨点

AIoU损失函数通过自适应形状感知和尺寸敏感加权机制,有效解决了YOLO26原生损失函数在小目标检测中的缺陷。实验结果表明,AIoU损失函数在多个数据集上均取得了显著的性能提升,尤其在小目标检测和多任务场景下表现突出。自适应形状感知,对形状差异较大的目标给予更大惩罚,提高边界框拟合精度尺寸敏感加权,对小目标的宽高比例差异给予更大权重,增强模型对小目标特征的学习能力梯度连续性好,即使在IoU=0时仍能提供有效的梯度更新,解决小目标梯度消失问题。

qq_36130719的博客 160

你以为在做的是微服务?不!你只是做了个比单体还糟糕的分布式单体!

1、看视频进行系统学习这几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。2、读源码,看实战笔记,学习大神思路“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。

2401_83916283的博客 1015

PCL 最小生成树用于法向量定向【2025最新版】

PCL 最小代价生成树用于点云法向量的定向。博客长期更新,本文最近更新时间为:2025年9月15日。

点云侠的博客 2068

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java程序员想要跳槽进大厂该如何准备面试?

前几天,跟个老朋友吃饭,他最近想跳槽去大厂,觉得压力很大,问我能不能分享些所谓的经验套路。 每次有这类请求,都觉得有些有趣,不知道你发现没有大家身边真的有很多人不知道怎么面试,也不知道怎么准备面试,哪怕是一些工龄比较长的“老开发”:

weixin_50205273的博客 740

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Java程序员如何跳槽进大厂?

前几天,跟个老朋友吃饭,他最近想跳槽去大厂,觉得压力很大,问我能不能分享些所谓的经验套路。 每次有这类请求,都觉得有些有趣,不知道你发现没有大家身边真的有很多人不知道怎么面试,也不知道怎么准备面试,哪怕是一些工龄比较长的“老开发”:

weixin_50205273的博客 349

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

大三时候看了这份路线,进阿里了,进大厂保姆教程,收藏起来_大三进大厂应该怎么努力(1)

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!【完整版领取方式在文末!!内容实在太多,不一一截图了。

2401_84281729的博客 757

在大厂外包呆了三年,颠覆了我的认知!

先说一下自己的个人情况,大专生,18年通过校招进入湖南某软件公司,干了接近3年的CRUD,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了三年的CRUD,已经让我变得不思进取,谈了2年的女朋友也因为我的心态和工资和我分手了。于是,我决定要改变现状,放眼于今年的金九银十! 刚开始准备时,自己都蒙了,3年的CRUD让我的技术没有一丝的进步,提升的只有我的年龄... 没办法,我找到了我在腾讯的老哥,作为他的小老表,在他了解了我的情况后(几乎就是Java基

qq_42986622的博客 1743

学历低能进大厂吗?专科学历我慌了,但是我还是顺利拿到了想要的大厂offer!这不美滋滋?!

先纠正一下大家的错误认知,大专学历不是不能进大厂,只不过很难罢了,比如阿里就有很多大专学历的人; 学历低想进大厂很难的,不光需要的技术足够厉害,还需要有合适的内推人(人脉)以及恰到好处的机遇 当然,也不是所有大厂都像阿里这样,很多大厂学历都是硬性指标,学历不行,谁内推你也没用! 背景 非计科大专一枚,当初学的机械自动化专业。大学完全可以说是玩过来的,临近毕业开始慌了,毕业后一直没能找到工作,在高中同学(211 计科)的引领下,入坑程序员。 从一开始的 4K 起步,一直到三年后的 14K,毫不夸张的

jinggege795的博客 5477

程序员靠刷题真的能进大厂吗?

新手程序员靠刷题真的能进大厂吗?想要进大厂学历是敲门砖,如果名校毕业就拿到了敲门砖,然后就是社招需要有一定的工作经验。职场面试这一环节上也很重要。了解各大厂面试官面试的流程及常见问题,面试前做好充足的准备。 提到新手程序员面试找工作,大家首先想到的可能就是刷题。尤其是通过工具刷题,想必新手程序员们都经历过这一步。但不难发现刷题再多也无法与实际项目相比较,都是纸上谈兵。当你真正进入企业后需要做的是商业项目,而不仅仅是一个片段。这也就是为什么大多数新手程序员,尤其是刚毕业的学生,刚进公司时会发现公司的需求和自

技术专家 1169

微服务架构诞生的今世前生

史上最详细微服务介绍,不可错过。。。

码上代码的博客 9762

感觉进大厂机会渺茫,要考研续命么?

因为你的描述中提到了 “之前十分不想考研”,所以我感觉你是把考研当做一个 “退路”,想给自己多 2 年的沉淀来获得更好的出路。对于你这种情况,我个人建议:既然自己不想考研,那就不考,因为考研是需要长时间静下心来去准备的,如果目标不够坚定、动力不足,考研对你来说可能会比学编程技术更难。现在才刚刚要到大三,不如争取本科期间努力学习,直接找个好点的工作。

weixin_68789096的博客 128

普通Java程序员如何逆袭进大厂?

前几天,跟个老朋友吃饭,他最近想跳槽去大厂,觉得压力很大,问我能不能分享些所谓的经验套路。 每次有这类请求,都觉得有些有趣,不知道你发现没有大家身边真的有很多人不知道怎么面试,也不知道怎么准备面试,哪怕是一些工龄比较长的“老开发”:

Javatutouhouduan的博客 599

架构师成神之路总结,你值得拥有,走起

很多小伙伴问我进大厂到底需要怎样的技术能力,经过几天的思考和总结,终于梳理出一份相对比较完整的技能清单,小伙伴们可以对照清单提前准备相关的技能,在平时的工作中注意积累和总结。只要在平时的工作中总结到位,对技术知其然,知其所以然,进大厂,是水到渠成的事情。...

冰河的专栏 5001
上一篇: 50多年前,大神在操作系统中埋的雷,快要爆了......
下一篇: 总是后来居上,我曾经的偶像公司又火了 !
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值