架构演进技巧

news2024/11/28 8:40:32

架构演进剖析

架构演进定义

定义:通过设计新的系统架构(4R)来应对业务和技术的发展变化

目的:1、应对业务发展带来新的复杂度;2、应用技术发展带来的复杂度新的解决方法

关键:1、新架构;2、新的复杂度;3、新的方法

在这里插入图片描述

案例

  1. 淘宝去IOE是因为业务发展大了后,IOE的成本和可控性难以满足,而不是性能
  2. 引入容器化来实现弹性部署,降低成本,提升运维效率

架构重构vs架构演进

架构重构架构演进
基本做法调整架构设计新架构
目的修复架构质量问题新的复杂度、新的方法
是否修复问题可以修复问题,但不是主要目的,例如引入深度学习提升推荐效果
是否改变系统能力是,例如引入机器学习
手段引入缓存,分库分表引入缓存,分库分表,去IOE

架构演进的原则、驱动力和模式

在这里插入图片描述

1个原则

架构演进是为了促进业务发展

2个驱动力

  1. 业务发展带来新的复杂度,ToC业务主要体现在用户规模增长和业务多样性
  2. 技术发展带来新的复杂度应对方法,例如国产化、大数据、云计算等

2种模式

  1. 主动演进:架构师主动识别和规划架构演进
  2. 被动演进:架构师被迫进行架构演进

架构演进技巧

业务驱动的架构演进技巧

架构演进模式vs业务发展模式

在这里插入图片描述

主动演进

  1. 业务规模:量变带来质变,一般10倍量级变化才考虑架构演进
  2. 业务多样性:业务规模可能没有变化,但是系统支持的业务类型越来越多

被动演进

  1. 业务方向:业务调整方向,例如从图文转为短视频

不同用户规模的架构挑战

在这里插入图片描述

业务驱动的主动演进技巧-做好预判,提前布局

预判

提前1年做好准备

  1. 以增长数字为标准:下一阶段用户规模60%的时候就要准备了
  2. 以时间为标准:提前1年预判

布局

团队和技术先行

  1. 招聘人员
  2. 储备技术

例子

  1. 当前用户60万,下一级的典型用户规模是100万,那么就可以开始考虑架构演进了,别等到100万再演进
  2. 今年用户30万,老板说明年就要达到100万,那么今年就开始考虑架构演进

业务驱动的被动演进技巧-快速响应,拿来主义

快速响应

熟悉什么就用什么

拿来主义

尽量用现成的方案

例子

  1. 可能Elasticsearch更好,如果不熟悉,先用MySQL
  2. 购买云服务的解决方案,例如直播、视频这样的业务
  3. 尽量多用开源的方案

技术驱动的架构演进技巧

技术驱动演进的原则

新瓶装旧酒原则

使用新的技术来解决老的问题或者老的复杂度,不要为了尝试新技术而演进

降本

降低成本:包括硬件、人力、运营等成本

例如:

  1. 上云来降低运维和机房成本
  2. 去IOE降低硬件成本
  3. 机器图片审核降低审核人员成本

增效

提升效率:包括处理、运营、开发运维效率等

例如:

  1. 大数据平台提升大数据分析效率
  2. 容器化提升运维效率
  3. 微服务提升开发效率

提质

提升质量:包括业务、管理、开发等

例如:

  1. 推荐系统提升用户转化率
  2. 容器化支持弹性扩容应对业务峰值
  3. 中台提升多业务的开发效率
  4. 提升业务竞争力

价值原则

新技术要带来典型的价值才考虑演进

“典型”的定义:产出要远远大于投入

  1. 20台服务器降到10台?2000台服务器降到1500台?
  2. 2000人日降到1000人日?100人日降低到10人日?

如何说服老板进行演进

技巧1-谈钱,被谈感情(适合成熟技术)

将引入新技术带来的价值量化成money,然后附带说提升技术水平,提升团队动力,不要本末倒置

技巧2-谈竞争对手(适合全新技术)

如果你没有办法量化为钱,那就看竞争对手是否引入了

技巧3-谈大环境(适合法律政治相关)

例如国产化,跟老板谈政治意义和大环境变化

做好洞察,提前布局

洞察

识别新技术能够为业务带来的价值

  1. 多关注业界技术大会
  2. 熟练掌握业务
  3. 把握技术本质

布局

团队和技术先行

  1. 招聘人员
  2. 储备技术

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/49568.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UDS知识整理(五):安全访问——0x27服务

目录 一、0x27服务(安全访问)简介 二、0x27服务信息格式 (1)请求格式 (2)正响应格式 (3)负响应格式 三、0x27服务服务举例 (1)请求种子与发送KEY 一、…

实变函数与泛函分析基础

集合的运算 并集:1、任意两个集合 2、任意多个集合的并集或和集: 设 一族集合 ;由一切 的 元素组成的集合,其中 是固定指标集, 是 中变化的指标。 记为 ,可表示为 是 有限集, 记 …

CoreData 同步 iCloud 数据导致 App 启动超时被系统 watchdog 终止的原因及解决

问题现象 CoreData + iCloud 支持的 App 在启动时偶尔会出现被系统强制退出的情况,用 Xcode 也无法中断调试这种崩溃,查看真机上的崩溃日志如下: 如上图所示,我可以了解到 App 崩溃的原因是由于启动超时被系统看门狗(watchdog)强行关闭了: process-launch watchdog tra…

宇视雷达雷视交付|问题定位(素材收集篇)

雷达&雷视交付|问题定位(素材收集篇) 雷视一体机作为行业明星产品,具备交通信息采集、交通事件检测等功能,在交通领域的应用前景十分广阔。为了快速响应现场交付时问题定位的诉求,提升一线的素材收集规范性和效率…

回收站清空了怎么恢复?数据恢复,有这些就足够了

大家都知道,数据在回收站中会有一定的时间,但是被清空之后,数据就很难恢复了。回收站清空了怎么恢复?首先需要知道,被清空的文件可以分为两类。一类是重要资料,另一类是一些无关紧要的资料。找到我们要恢复…

Kotlin高仿微信-第14篇-单聊-视频通话

Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册、登录、主页、单聊(文本、表情、语音、图片、小视频、视频通话、语音通话、红包、转账)、群聊、个人信息、朋友圈、支付服务、扫一扫、搜索好友、添加好友、开通VIP等众多功能。 Kotlin高仿…

SpringMVC(八):SSM整合

文章目录 SSM整合 一、准备数据库表格 二、创建maven web项目并补充项目结构,准备好MVC模式下的主要目录 三、更新web.xml 文件和准备包结构 四、导入依赖 五、log4j2.xml 六、jdbc.properties 七、springMVC.xml配置文件 八、applicationContext.xml 九、…

Anaconda默认安装在C:\Users\xxx\.conda\envs中

目录 问题: 解决: 更改默认安装位置 移动已安装环境 问题: 解决: 更改默认安装位置 用记事本打开 C:\Users\zqk\.condarc 在最后插入 envs_dirs: - D://anzhuang//Anaconda3//envs 如若需更改pkgs,插入如下代…

如何使用OpenCV作图像或矩阵的逻辑运算

所谓逻辑运算,主要是指逻辑与运算、逻辑或运算、逻辑非运算、逻辑异或运算。 可用函数bitwise_and()实现图像或矩阵的逻辑与运算; 可用函数bitwise_or()实现图像或矩阵的逻辑或运算; 可用函数bitwise_not()实现图像或矩阵的逻辑非运算&#x…

oh-my-zsh 为 ls 命令自定义颜色

ls 命令默认显示的颜色是: 白色: 表示普通文件 蓝色: 表示目录 绿色: 表示可执行文件 红色: 表示压缩文件 蓝绿色: 链接文件 红色闪烁:表示链接的文件有问题 黄色: 表示设备文件 灰…

Java实现3DES加密解密(DESede/ECB/PKCS5Padding使用)

一、简介 3DES(又叫Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。 它相当于是对每个数据块应用三次DES加密算法。密钥长度是128位,192位(bit),如果密…

如何最简洁的使用iOS 开发证书 和 Profile 文件

如果你想在 iOS 设备(iPhone/iPad/iTouch)上调试, 需要有 iOS 开发证书和 Profile 文件。 在你拿到这两个文件之后,该如何使用呢? 证书使用说明: 1. iOS 开发证书:开发证书 (Devel…

ROS——构建一个模拟的两轮ROS机器人

构建一个模拟的两轮ROS机器人1. 确保已经安装了Rviz2. 生成并构建ROS功能包2.1 生成一个catkin工作空间2.2 漏了一个懒得改2.3 构建差分驱动的机器人的URDF2.3.1 创建机器人底座2.3.2 使用roslaunch2.3.3 添加轮子2.3.4 添加颜色2.3.5 添加小脚轮2.3.6 添加碰撞属性2.3.7 移动轮…

CHS寻址

盘片(platter) 、磁头(head)、 磁道(track)、 扇区(sector)、 柱面(cylinder)。 CHS:通过柱面(cylinder)、磁头&#xff0…

成都易佰特的坑——E103-W06

写这篇博客,是为了记录,为了防止技术同行踩坑。 因为什么原因,就不说了。反正就是买了这个E103-W06模块来进行测试wifi透传的性能. 结果,好家伙,买回来就不能用。TMD虚拟串口都识别不了。还他妈卖的挺贵。95元~99元一…

【附源码】计算机毕业设计JAVA装修网站

【附源码】计算机毕业设计JAVA装修网站 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JAVA mybatis M…

2分能出线,6分却不能出线?世界杯小组赛的出线规则这次真被我整明白了

写在前面 这个月世界杯正是进行得火热,我这样的十几年的老球迷自然是场场不落,周边不少不看球的朋友甚至连我那一场比赛上多少人都弄不明白的老婆也能说上几句:“听说梅西输了?”,“听说德国队要回家了”,“…

mybatis实战:一、mybatis入门

出自《MyBatis从入门到精通》刘增辉&#xff0c;精简 1.pom.xml 1.设置源码编码方式为 UTF -8 2.设置编译源代码的 JDK 版本 3.添加mybatis依赖 4.还需要添加会用到的 Log4j JUnit ySql 驱动的依赖。 <?xml version"1.0" encoding"UTF-8"?> <pr…

基于BM1684X 架构实现 Faiss 的两个查询接口

文章目录Faiss 简介距离度量在 Sophon TPU 上的接口实现Sophon TPUindexflat 实现indexPQ 实现 Faiss 简介 Faiss 库是 Facebook 开发的一个用于稠密向量相似性搜索和聚类的库&#xff0c;该库包含有诸多向量相似性搜索的算法。向量相似性搜索是将一个向量与底库中的向量集合…

[附源码]计算机毕业设计springboot教务管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…