如何在大厂做好架构演进?
1 架构演进的定义
1.1 定义
通过设计新的系统架构(4R),来应对业务和技术的发展变化。
1.2 关键点
- 新架构
- 新的复杂度
1.3 目的
应对业务和技术的发展变化后带来新的复杂度。
案例
淘宝去IOE,是因为业务发展大了后,IOE的成本和可控性难以满足,而非性能。

架构重构 vs 架构演进

技术手段不是区分架构重构和架构演进的方法,复杂度是否变化才是判断关键。
2 架构演进的原则、驱动力、模式

1个原则
架构演进是为了促进业务发展。
2个驱动力
-
业务发展带来新的复杂度,2C业务主要体现在用户规模增长和业务多样性。
-
技术发展带来新的复杂度应对方法,如国产化,大数据、云计算等。
2种模式
- 主动演进架构师主动识别和规划架构演进
- 被动演进: 架构师被迫进行架构演进。
3 业务驱动的架构演进技巧
3.1 架构演进模式 V.S 业务发展模式

主动演进
- 业务规模:量变带来质变,一般10倍量级变化才考虑架构演进。
- 业务多样性:业务规模可能没有变化,但系统支持的业务类型越来越多。
被动演进
- 业务方向:业务调整方向,例如从图文转为短视频。
3.2 不同用户规模的架构挑战

如果架构设计支持100万,但用户增长到200万时发现架构有问题怎么办?
优化、重构、演进。
3.3 业务驱动的主动演进技巧 - 做好预判,提前布局
预判
提前1年做好准备
- 以增长数字为标准:下一阶段用户规模60%时就要准备了
- 例如当前用户60万,下一级的典型用户规模是100万,那么就可以开始考虑架构演进了,别等到100万再演进
- 今年用户30万,老板说明年就要达到100万,今年就开始考虑架构演进
- 以时间为标准:提前1年预判
布局
团队和技术先行。
- 招聘人员
- 储备技术
3.4 业务驱动的被动演进技巧 - 快速响应,拿来主义
快速响应
熟悉什么就用什么
拿来主义
尽量用现成的方案
例如:
- 可能 Elasticsearch 更好,如果不熟悉,先用 MSQL 顶着
- 购买云服务的解决方案,例如直播、视频这种
- 尽量多用开源的方案
MySQL性能不如 Elasticsearch,用户体验不好咋办?
先跑起来!用户还不一定会用呢!毕竟若你不擅长的技术乱用,就更不稳定了。
演进案例
一开始 php+MySQL 快速试错,买的服务,后期改不动了。

4 技术驱动的架构演进技巧
4.1 技术驱动演进的第1原则 - 新瓶旧酒原则
新瓶旧酒原则:使用新的技术来解决老的问题或者老的复杂度,不要为了尝试新技术而演进。
降本
包括硬件、人力、运营等成本。
例如:
- 上云来降低运维和机房成本
- 去IOE,降低硬件成本
- 机器图片审核,降低审核人员成本
增效
提升效率包括处理、运营、开发运维效率等
例如 :
1.大数据平台提升大数据分析效率;
2.容器化提升运维效率:
3.微服务提升开发效率。
提质
提升质量包括业务、管理、开发等。例如 :
- 推荐系统提升用户转化率
- 容器化支持弹性扩容应对业务峰值
- 中台提升多业务的开发效率
技术驱动的架构演进是主动演进还是被动演进?
主动演进。问题很明显,就属于架构重构。而引入新技术是架构师自己决定的。
4.2 技术驱动演进的第2原则 - 价值原则
新技术要带来典型的价值,才考虑演进。
典型的定义:产出要>>投入
- 20台服务器降到10台 ? 2000台降到1500台?
- 2000人日降到1000人日 ?100人日降到10人日 ?
- 转换率提升2%? 用户留存提升10% ?
要直接计算出钱的多少。
4.3 技术驱动演进的技巧 - 如何说服老板进行演进?
技巧1 - 谈钱,别谈感情( 适合成熟技术 )
将引入新技术带来的价值量化成 money,然后附带说提升技术水平,提升团队动力不要本末倒置。
技巧2 - 谈竞争对手( 适合全新技术 )
如果你没办法量化为钱,那就看看竞争对手是否引入了,“吓晓吓晓”老板。
技巧3 - 谈大环境( 适合法律政治相关)
例如国产化,跟老板谈政治意义和大环境变化…
4.4 技术驱动演进的技巧 -做好洞察,提前布局
洞察:识别新技术能够为业务带来的价值
- 多关注业界技术大会
- 熟练掌握业务
- 把握技术本质
布局:团队和技术先行
- 招聘人员
- 储备技术
洞察”更难还是“预判”更难?洞察难得多!
案例

5 思维导图

6 测试
判断题
- 架构演进主要是为了引入新技术,跟上业界技术发展的趋势 ×
- 业务驱动的架构演进优先考虑“快速响应” × 被动演进才是
- 可以从成本、收益、竞争、法律法规等角度来阐述架构演进的必要性 √
- 技术驱动的架构演进一定要具备“降本、增效、提质”中的一或多个价值 √ 竞争对手做了或者国家法律要求,其实也都属于提质
- “蚊子腿也是肉”,只要新技术能够带来一些价值,即使不那么大,也应该推进架构演进
关注业界技术大会+结合业务价值,就能拿到架构演进项目。
- 和领导谈钱
- 和下属谈情怀
大厂为了晋升,所以重复造轮子,适应大环境就好。
相关文章:
如何在大厂做好架构演进?
1 架构演进的定义 1.1 定义 通过设计新的系统架构(4R),来应对业务和技术的发展变化。 1.2 关键点 新架构新的复杂度 1.3 目的 应对业务和技术的发展变化后带来新的复杂度。 案例 淘宝去IOE,是因为业务发展大了后,IOE的成本和可控性难…...
减半技术实现求a的n次幂
目录 减半技术实现求a的n次幂 程序设计 程序分析 减半技术实现求a的n次幂 【问题描述】给定两个正整数a和n,采用减半技术求a的n次幂;其中a<100,b<20; 【输入形式】两个整数a,n(a与n中间用空格隔开); 【输出形式】一个整数 【样例输入1】2 3 【样例输出1】8 【样…...
MYSQL8窗口函数
MYSQL8窗口函数 MYSQL8窗口函数窗口函数分类序号函数--排行榜row_number()示例rank()示例dense_rank()示例partition by对每个分区内的行进行排名不加partition by全局排序 开窗聚合函数分布函数CUME_DIST()PERCENT_RANK() 前后函数LAG()的用法LEAD() 头尾函数其他函数NTH_VALU…...
全国大学生智能汽车竞赛——安装Ubuntu操作系统(双系统)
1.1 电脑分区 1.1.1 分区原因 由于我们想要在电脑上同时安装Windows和Ubuntu系统,所以就要在window使用的内存中划分出来一段用来给Ubuntu系统使用,相当于一个应用程序一样 1.1.2 分区步骤 1.右击此电脑,点击管理,然后双击左侧…...
[STM32F103C8T6]看门狗
看门狗: 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造 成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会 造成整个…...
浪潮:2022年净利同比增长51.39%
一、4月头条 华为的紧急回应,让东方材料21亿收购要黄? 4月10日消息,东方材料昨日晚间公告拟定增募资不超20亿元,用于向诺基亚全资子公司NSN收购TD TECH 51%股权(交易对价21.22亿元)。TD TECH剩余49%股权由…...
大厂面试内幕:阿里内部整理出的5000页Java面试复盘指南,起飞!!!
互联网的技术岗一直是高薪的代名词,特别是大厂,应届生的年薪基本都20W起,比一般的公司高多了。 看下面这张网上热传的大厂应届生薪酬表就知道了,SP offer甚至能拿到30W以上。 技术社区也有晒出高薪offer的同学: 除了薪…...
数据结构——哈希表相关题目
数据结构——哈希表相关题目 242. 有效的字母异位词1.暴力解法2.排序后比较3.哈希表 383. 赎金信哈希解法 49. 字母异位词分组438. 找到字符串中所有字母异位词3. 无重复字符的最长子串76. 最小覆盖子串349. 两个数组的交集1.排序双指针2.哈希表 350. 两个数组的交集 II1.排序双…...
域名解析设置方法
域名解析设置都是实时生效的,一般只需几秒即可同步到各地 DNS 上,但各地 DNS 均有缓存机制,解析的最终生效取决于各运营商刷新时间! 一、A记录 ①.主机名必须填写; 常用主机名有:www//*,效果参见上图说明&…...
MySQL连接空闲时间超过8小时报错原因与延伸知识
1 错误原因 1.1 两个参数 MySQL服务端两个参数控制连接超时时间: wait_timeoutinteractive_timeout1.1.1 如何查看 show global variables like interactive_timeout show global variables like wait_timeout 复制代码 1.1.2 含义与区别 wait_timeout…...
Flutter渲染原理
一 Widget Element RenderObject 之间的关系 1 Widget 在Flutter 中,万物皆是Widget,无论是可见的还是功能型的。一切都是Widget. 官方文档中说的Widget 使用配置和状态来描述View 界面应该长什么样子。 它不仅可以表示UI元素,也可以表示一些功能性的…...
PathCore:IAD文献解读
论文链接:[Towards Total Recall in Industrial Anomaly Detection]Towards Total Recall in Industrial Anomaly Detection :数据集, :标签 : 在ImageNet上预训练后的网络 第 张图 网络中第 层 1. Locall…...
C语言判断一个日期是在该年的第几天案例讲解
今天是2023年4月11号,我们就用今天举例得出是2023年的第几天。 思路分析 1)我们想知道2023年4月11号是2023年的第几天,只需要把1到3月份的天数累加求和然后加上今天日期也就是11就可以算出2023年4月11号是2023年的第几天。 推广:…...
【超全总结】集成环信消息推送注意事项(华为、oppo、vivo等)
环信即时通讯 IM 支持集成第三方厂商的消息推送服务,为 Android 开发者提供低延时、高送达、高并发、不侵犯用户个人数据的离线消息推送服务。 当客户端应用进程被关闭等原因导致用户离线,环信即时通讯 IM 服务会通过第三方厂商的消息推送服务向该离线用…...
C++回调函数以及epoll中回调函数的使用
回调函数是一种常用的编程技术,它允许程序在运行时将一个函数作为参数传递给另一个函数,以实现更加灵活和可扩展的功能。在C中,回调函数通常被实现为函数指针或者函数对象。 函数指针是指向函数的指针变量,可以通过它来调用函数。…...
0基础学习软件测试有哪些建议
其实现在基础的资料和视频到处都是,就是看你有没有认真的去找学习资源了,去哪里学习都是要看你个人靠谱不靠谱,再好的教程和老师,你自己学习不进去也是白搭在正式选择之前,大可以在各种学习网站里面找找学习资源先自己…...
MySQL数据类型
文章目录一、数据类型分类二、数值类型1. tinyint 类型2. bit 类型3. int 类型4. float 类型5. decimal 类型三、字符串类型1. char 类型2. varchar 类型3. char 和 varchar 比较4.日期和时间类型5. enum 和 set一、数据类型分类 数据类型本质也是一种约束! 如果插入…...
【设计模式】从Mybatis源码中学习到的10种设计模式
文章目录 一、前言二、源码:学设计模式三、类型:创建型模式1. 工厂模式2. 单例模式3. 建造者模式 四、类型:结构型模式1. 适配器模式2. 代理模式3. 组合模式4. 装饰器模式 五、类型:行为型模式1. 模板模式2. 策略模式3. 迭代器模式…...
爬虫攻守道 - 猿人学第20题 - 殊途同归
写在开头 这题也是,自己搞顶多追踪到wasm代码,然后就走不下去了。找了2个参考方案,自己做的过程中还又遇到些新的问题,下面做个记录。解法1参考文章解法2参考文章 解法1:追根溯源 在 JS 代码中追踪到 Payload 赋值位…...
4.11日报
synchronized 和 ReentrantLock 区别是什么? synchronized 早期的实现比较低效,对比 ReentrantLock,大多数场景性能都相差较大,但是在 Java 6 中对 synchronized 进行了非常多的改进。 主要区别如下: ReentrantLock …...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验
2024年初,人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目(一款融合大型语言模型能力的云端AI编程IDE)时,技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力,TRAE在WayToAGI等…...
