如何在大厂做好架构演进?
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 …...

【LeetCode每日一题: 1039. 多边形三角剖分的最低得分 | 暴力递归=>记忆化搜索=>动态规划 | 区间dp 】
🍎作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎 🍎座右…...

Okio 网络提速
文章目录网络数据处理流程Page Cache传统 I/O 拷贝的性能问题零拷贝技术DMA 技术零拷贝技术分类mmapsendfilespliceDirect I/O零拷贝技术性能分析小结OkioOkio 的使用Okio 网络提速的原理Okio 总结总结网络数据处理流程 在讲 Okio 之前,为了能更好的了解 Okio 的优…...

自动驾驶企业面临哪些数据安全挑战?
近期,“特斯拉员工被曝私下分享用户隐私”不可避免地成了新闻热点,据说连马斯克也不能幸免。 据相关媒体报道,9名前特斯拉员工爆料在2019年至2022年期间,特斯拉员工通过内部消息系统私下分享了一些车主车载摄像头记录的隐私视频和…...

Doris(2):Doris编译部署
1 Doris编译 Apache Doris提供直接可以部署的版本压缩包:https://cloud.baidu.com/doc/PALO/s/Ikivhcwb5 也可以自行编译压缩包后使用(推荐) 1.1 使用 Docker 开发镜像编译(推荐) 这个是官方文档推荐的,…...

使用MyBatis实现简单查询
文章目录一,创建数据库与表(一)在Navicat里创建MySQL数据库testdb(二)创建用户表 - t_user(三)在用户表里插入3条记录二,案例演示MyBatis基本使用(一)创建Mav…...

C指针(*point)[4]和char *point[4]
char (*point)[4] // 数组指针。 a[3][4] // 先申明二维数组,用它来指向这个二维数组. char *point[4] // 指针数组。 a[4][5] // 一连串的指针. char (*point)[4] // 一个指针,指向有4个元素的数组;占内存大小为 4 个字节 ch…...

【Bard】谷歌的人工智能工具—Bard初体验
文章目录一、Bard介绍二、Bard体验1、加入Bard的候补名单2、登入Bard篇3、使用Bard篇(1)提供三种预选方式✨(2)创作生成各类文案(3)无生成图画能力(4)支持语音转文本输入✨ÿ…...

2022国赛30:windows脚本题解析
大赛试题内容: ( 九) ) 脚本 【任务描述】 为了减少重复性任务的工作量,节省人力和时间,请采用脚本,实现快速批量的操作。 1.在 windows4 上编写 C:\CreateFile.ps1 的 powershell 脚本,创建20 个文件 C:\test\File00.txt 至 C:\test\File19.txt,如果文件存在,则首先删除…...

Excel常用函数公式20例
目录 一、【IF函数条件判断】 二、【多条件判断】 三、【条件求和】 四、【多条件求和】 五、【条件计数】 六、【多条件计数】 七、【条件查找】 八、【多条件查找】 九、【计算文本算式】 十、【合并多个单元格内容】 十一、【合并带格式的单元格内容】 十二、…...

233:vue+openlayers绘制渐变填充色的圆形、多边形
第233个 点击查看专栏目录 本示例的目的是介绍如何在vue+openlayer中绘制带有渐变填充色的圆形、多边形。这里用canvas的方式去渲染,用到了DEVICE_PIXEL_RATIO,设备上的物理像素与设备无关像素 (dips) 之间的比率 (window.devicePixelRatio)。 直接复制下面的 vue+openlayer…...