架构设计到底是什么?

news2024/9/24 23:23:42

文章目录

  • 架构设计有哪些内容?
    • 架构原理与技术认知
    • 分布式技术原理与设计
    • 中间件常用组件的原理和设计问题
    • 数据库原理与设计问题
    • 分布式缓存原理与设计问题
    • 互联网高性能高可用设计问题
  • 技术认知
    • 架构分析
    • 问题分析
    • 能力边界

架构设计,是中高级研发工程师逃不开的一环,也是成为架构师的关键。

那到底什么是架构设计。

从概念来说比较宽泛,也不容易理解,这时候可以转换方向

利用分类思想,架构设计包括哪些主要内容呢

不断堆积调查研究材料,不断丰富我们的主题。

  • 架构原理
  • 分布式技术
  • 中间件
  • 数据库
  • 缓存
  • 业务系统架构

以上6个模块就比较完整地说明架构设计是什么?

架构设计有哪些内容?

架构原理与技术认知

以架构师视角解析研发在遇到系统设计问题时,应具备怎样的技术认知和解题思路。架构设计的底层思维逻辑是你的架构设计能否立足的根本,决定了你在面试时从什么角度来回答提问才更有价值

分布式技术原理与设计

有一句话叫“不懂分布式,别来面试互联网”, 通过亿级商品的数据存储问题,解析在分布式系统技术架构中,面对热点问题该如何回答,比如用 etcd 如何解决数据共识问题?

中间件常用组件的原理和设计问题

讲解 RPC 远程调用和MQ(消息队列)的技术原理和实践,比如如何实现一个 RPC 框架?MQ 如何实现消息的不丢失、不重复消费,以及积压等问题。

数据库原理与设计问题

需要掌握 MySQL,架构设计中有一套的 MySQL 知识体系

分布式缓存原理与设计问题

仅能熟练地使用 Redis 还不够,还要求能深入理解底层实现原理,并且具备解决常见问题的能力(尤其是在高并发场景下的缓存解决方案),结合分布式缓存的原理,并结合电商场景下 Redis 的设计案例解锁经典问题。

互联网高性能高可用设计问题

会针对当系统遭遇百万并发时的技术瓶颈,以及优化思路,必问的高性能、高可用问题背后的原理,比如如何判断你的系统是高可用的?并最终通过电商平台案例。


技术认知

互联网公司会把技术层层设卡,通过架构设计上的各类知识点将研发工程师进行分层。但是每个人的工作经历有限,很多人遇不到好的平台和好的机会,在平时工作中只做着 CRUD 的工作,这个问题对于很多中小型企业的研发工程师尤为明显,就导致他们应聘大厂的竞争力偏弱。

作为一名技术人,我们既然选择了这个职业,就一定要有上进的决心,不能只顾写代码,一定要提升架构设计能力。因为即使代码写得再好,做的也是执行层面的事儿,就会有收入的天花板,想要突破它,就要突破你做事儿的边界,让自己成为一个架构师或技术负责人。而这些内容对于从事 IT 开发工作的你,越早知道越好

上进为架构师,这离不开“从学习到分享再到学习”的一个迭代过程。

架构分析

关于架构设计的问题,一定要立足于点、连接成线、扩散成面

为什么还要做系统架构拆分?而且拆分之后会带来其他的复杂度,你是怎么考虑的?

系统拆分的架构设计问题,在面试中很常见,候选人给出了四个层面的回答。

  • 从订单系统层面来看,由于交易流程中的订单系统相对来说业务稳定,不存在很多的迭代需求,如果耦合到整个交易系统中,在其他功能发布上线的时候会影响订单系统,比如订单中心的稳定性。基于这样的考虑,需要拆分出一个独立的子系统。

  • 从促销系统层面来看,由于促销系统是交易流程中的非核心系统,出于保障交易流程稳定性的考虑,将促销系统单独拆分出来,在发生异常的时候能让促销系统具有可降级的能力。

  • 从报价系统层面来看,报价是业务交易流程中最为复杂和灵活的系统,出于专业化和快速迭代的考虑,拆分出一个独立的报价系统,目的就是为了快速响应需求的变化。

  • 从复杂度评估层面来看,系统拆分虽然会导致系统交互更加复杂,但在规范了 API 的格式定义和调用方式后,系统的复杂度可以维持在可控的范围内。

系统设计的思考与理解。原有系统中关于订单、促销和报价功能耦合在一起带来的实际问题,这是立足于点,又从交易流程的角度做系统设计串联起三个系统的拆分逻辑,这是连接成线,最后从复杂度和成本考量的方向夯实了设计的原则,这是扩展成面。

问题分析

在实际工作中,技术人员在做系统设计时需要与公司或部门的战略定位对齐,才能让你的技术有价值。因为对于系统技术架构升级的问题,业务方、管理者和技术人员的关注点是不同的。

  • 业务方的诉求是在技术升级后,系统有能力迭代功能来满足市场的要求,所以关注点在系统能力
  • 管理者的诉求是在技术升级后,系统研发团队的开发效能得到提升,所以关注点在人效管理
  • 作为技术人员的你,需要找到自己做系统设计的立足点,来满足不同人对技术的诉求,而这个立足点通常就是系统设计原则

所以你应该认识到,系统的设计原则不是乱提出来的,而是针对系统现阶段业务发展带来的主要矛盾提出,才会更有价值且被认可。

其实做任何事情都是这样的,抓主要矛盾。

案例

之前我做过一个对原有老系统进行架构改造的系统设计,当时的背景是这样的。

早期,业务发展比较简单,团队规模也不是很大,单体系统可以支撑业务的早期规模,但当业务不断发展,团队规模越来越大时,之前的一个业务团队逐渐发展成了多个业务团队,这时每个业务团队都会提出自己的功能需求。

然而,系统现状仍然是单体架构,研发同学都在同一个系统里进行开发,使得系统逻辑复杂,代码耦合,功能迭代和交付变得非常缓慢,牵一发而动全身,研发同学都不敢轻易修改代码。

这个时期系统的主要矛盾就变成了:多人协作进行复杂业务,导致速度缓慢,但业务需求又快速迭代。说白了,就是研发效率不能匹配业务发展的速度,并且单靠加人不能解决问题。

对于这样的一个系统,此阶段的系统架构核心原则就不能随便定义为要保证高性能和高可用。

那么应该怎么做呢?针对这样的问题,我们需要对原有系统进行合理的系统边界拆分,让研发人员有能力提速,来快速响应需求变化,这就要求架构师对业务领域和团队人员有足够的了解。

类似这样的情况也是面试中经常出现的考题,比如面试官在问你历史项目经历的时候,要重点关注你是如何解决系统核心问题的,所以不要一张口就是高性能、高可用,这会让有经验的面试官觉得你很初级。

软件复杂性来源于两点:本质复杂度和偶然复杂度。开发工具、开发框架、开发模式,以及高性能和高可用这些仅是偶然复杂性,架构最重要的是要解决本质复杂性,这包括人的复杂性和业务的复杂性。

技术是静态的,业务和用户是变化的,具体问题要从具体的业务领域出发。这时有人可能会说,我只想做技术,不想做业务,然而你会慢慢发现,在职业生涯中处理的最有价值的事情,一般都是利用技术解决了业务领域的某阶段的主要问题,这也是最复杂的。

具体问题具体分析,实事求是,这是做事的指导方针。

能力边界

一个高级研发工程师和一个架构师的区别在哪? 这个问题很多研发同学回答得都不是很好,有些人说需要足够的技术经验,懂得高性能、高可用,也有些人说需要懂得管理,带过团队。

这些能力固然重要,但不是作为架构师最核心的能力。下面我通过一个例子,来帮你理解一个高级研发工程师和一个架构师的本质区别在哪儿。
在这里插入图片描述

我们常说,屁股决定脑袋,不在那个位置就不会真正体会到那个位置带来的问题。没有触达多系统层面的设计,就不会掌握多系统层面带来的复杂度和解决问题的思考逻辑。但是往往研发同学意识不到这样的问题存在,即便能碰到一个通盘考虑架构设计的机会,但价值、眼界、认知的形成,也不是一朝一夕的事儿。

那么,你要怎么做才能让自己更快速地成长呢?你要在工作中养成归纳总结的习惯,形成自己的知识体系,沉淀自己的方法论,提高自己的认知能力,并且跳出舒适区,多争取扩展自己能驾驭系统的边界的机会。

小结

  • 首先要提高你对系统架构设计的认知能力,一个好的架构师的架构设计不是仅仅停留在技术解决方案上。
  • 其次要提高你分析系统问题的认知能力,做架构设计要具备根据现阶段的主要矛盾来分析问题的能力。
  • 最后你要扩大自己能够驾驭系统的边界,因为只有这样才能遇到之前没经历过的问题层次,注意我这里说的是问题层次,而不是问题数量

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

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

相关文章

什么是集成测试?它和系统测试的区别是什么? 操作方法来了

01 什么是集成测试? 集成测试是软件测试的一种方法,用于测试不同的软件模块之间的交互和协作是否正常。集成测试的主要目的是确保不同的软件模块能够无缝协作,形成一个完整的软件系统,并且能够满足系统的需求和规格。 在集成测试…

理解pom.xml中的parent标签

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringBoot ✨特色专栏&…

【设计模式--结构型--适配器模式】

设计模式--结构型--适配器模式 适配器模式概述结构案例类适配器模式对象适配器模式 应用场景 适配器模式 概述 将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。 适配器模式分为类适配器模式和对象适配器模式…

《opencv实用探索·二十一》人脸识别

Haar级联分类器 在OpenCV中主要使用了两种特征(即两种方法)进行人脸检测,Haar特征和LBP特征。用的最多的是Haar特征人脸检测。 Haar级联分类器是一种用于目标检测的机器学习方法,它是一种基于机器学习的特征选择方法,…

如何下载知网论文、专利的PDF格式

知网的论文格式有其特有的格式:CAJ。将CAJ格式转化为Word或者PDF非常麻烦,且会出现乱码的情况,直接用知网官方的CAJ浏览器也不太方便。为此,困扰了许久。 其实,知网可以直接下载PDF格式,只需在浏览器上安装…

【halcon深度学习】create_dl_model_detection

基本介绍 create_dl_model_detection 不是一个封装的库函数,是一个算子。用于创建用于目标检测或实例分割任务的深度学习模型。 输入参数: Backbone (input_control): 指定用作背骨网络的深度学习分类器,充当模型的基础。用户可以选择不同的…

贝蒂快扫雷~(C语言)

✨✨欢迎大家来到贝蒂大讲堂✨✨ ​​​​🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:贝蒂的游戏 贝蒂的主页:Betty‘s blog 引言: 扫雷相信大家小时候到玩过吧,那…

【python】在线代码混淆方案及注意事项

▒ 目录 ▒ 🛫 导读开发环境 1️⃣ 在线网站pyob混淆操作步骤编写测试代码混淆转pyc缺点中文路径问题:python: Cant reopen .pyc file 2️⃣ 反编译python文件格式对比uncompyle6 3️⃣ 其它方案cpythonpython-obfuscatorPyInstaller【不推荐】pyminifie…

内网穿透工具frp安装使用

摘要:之前使用的 nps 目前没有维护更新了,和在使用的过程中做内网穿透的的网速应该有限制,不论云服务器带宽是多少,下载速度都比较慢。这里切换到 frp 试试,对安装和使用简单记录,其和 nps 有很大的操作配置…

机器人也能干的更好:RPA技术的优势和应用场景

RPA是什么? 机器人流程自动化RPA(Robotic Process Automation)是一种自动化技术,它使用软件机器人来高效完成重复且有逻辑性的工作。近年来,随着人工智能和自动化技术的不断发展和普及,RPA已经成为企业提高…

流程挖掘技术在数字化转型中的应用价值

2023年2月27日国家正式发布了《数字中国建设整体布局规划》,指出建设数字中国是数字时代推进中国式现代化的重要引擎,是构筑国家竞争新优势的有力支撑,为加速数字化转型发出了明确号令。 随着数字化转型的推进,流程挖掘技术逐渐成…

CUMT--Java复习--异常

目录 一、异常 1、概述 2、异常处理机制 二、捕获异常 (1)try...catch语句 (2)try...catch..finally语句 (3)自动关闭资源的try语句 (4)其他 三、抛出异常 (1&…

ICC2:illegal dimension route

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 illegal dimension route DRC的违例常出现的先进工艺里,部分层次在水平方向和竖直方向有宽度梯度的要求。如下示例: 意思就是竖直方向(yLegalDim&#x…

yolov5障碍物识别-雪糕筒识别(代码+教程)

简介 这是一个检测交通锥并识别颜色的项目。我使用 yolov5 来训练和检测视锥细胞。此外,我使用 k 均值来确定主色,以对锥体颜色进行分类。目前,支持的颜色为红色、黄色、绿色和蓝色。其他颜色被归类为未知。 数据集和注释 我使用了一个自收…

会声会影2024永久汉化中文版本百度网盘下载

会声会影2024破解版免费下载是经过修改的视频剪辑软件,它能够免费为您提供很多功能。会声会影2024免费下载提供超过 1500 种独特的效果,可让您提升自我。会声会影破解版是用于是制作独一无二的视频的最强大、功能最全的软件。 它是一个简单而快速的视频编…

漏洞复现-log4j2原理分析及CVE-2021-44228

log4j2原理分析及漏洞复现 0x01 log4j2简介 Log4j2 是一个用于 Java 应用程序的成熟且功能强大的日志记录框架。它是 Log4j 的升级版本,相比于 Log4j,Log4j2 在性能、可靠性和灵活性方面都有显著的改进。 Log4j2 特点 高性能:Log4j2 使用异步…

JVM垃圾收集器三色标记算法

垃圾收集算法 分代收集理论 当前虚拟机的垃圾收集都采用分代收集算法,这种算法没有什么新的思想,只是根据对象存活周期的不同将内存分为几块。一般将java堆分为新生代和老年代,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。 比…

【华为OD机试真题2023CD卷 JAVAJS】加密算法

华为OD2023(C&D卷)机试题库全覆盖,刷题指南点这里 加密算法 知识点DFS搜索 题目描述: 有一种特殊的加密算法,明文为一段数字串,经过密码本查找转换,生成另一段密文数字串。规则如下: 1. 明文为一段数字串由0~9组成 2. 密码本为数字0~9组成的二维数组 3. 需要…

将Abp默认事件总线改造为分布式事件总线

文章目录 原理创建分布式事件总线实现自动订阅和事件转发 使用启动Redis服务配置传递Abp默认事件传递自定义事件 项目地址 原理 本地事件总线是通过Ioc容器来实现的。 IEventBus接口定义了事件总线的基本功能,如注册事件、取消注册事件、触发事件等。 Abp.Events…

关键字:void关键字

在编程中,void 是一个关键字,用于表示函数没有返回值。具体来说,void 关键字的作用如下: 函数声明:在函数声明中使用 void 关键字可以指定函数没有返回值。例如: 这表示 func() 函数不返回任何值。 函数…