如何在大厂做好架构演进?
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 …...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...
嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...
恶补电源:1.电桥
一、元器件的选择 搜索并选择电桥,再multisim中选择FWB,就有各种型号的电桥: 电桥是用来干嘛的呢? 它是一个由四个二极管搭成的“桥梁”形状的电路,用来把交流电(AC)变成直流电(DC)。…...
