架构设计到底是什么?

文章目录

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

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

那到底什么是架构设计。

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

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

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

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

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

架构设计有哪些内容?

架构原理与技术认知

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

分布式技术原理与设计

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

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

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

数据库原理与设计问题

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

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

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

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

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


技术认知

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

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

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

架构分析

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

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

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

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

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

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

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

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

问题分析

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

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

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

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

案例

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

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

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

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

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

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

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

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

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

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

能力边界

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

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

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

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

小结

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW开发振动数据分析系统

LabVIEW开发振动数据分析系统 自动测试系统基于LabVIEW平台设计,采用了多种高级硬件设备。系统的硬件组成包括PCB振动加速度传感器,这是一种集成了传统压电加速度传感器和电荷放大器的先进设备,能够直接与采集仪器连接。此外,系统…

教师的职业素养有哪些

教师职业素养的重要性不言而喻。一个优秀的教师不仅需要具备专业知识,还需要具备一些基本的职业素养。 具备高尚的职业道德。作为教育工作者,教师应该以身作则,树立良好的榜样。他们应该尊重学生、关心学生、热爱学生,以自己的言行…

15 使用v-model绑定单选框

概述 使用v-model绑定单选框也比较常见,比如性别,要么是男,要么是女。比如单选题,给出多个选择,但是只能选择其中的一个。 在本节课中,我们演示一下这两种常见的用法。 基本用法 我们创建src/component…

测试自动化平台 | 测试开发工程师的进阶之路

一、测试工程师的现状 很多测试小伙伴在工作中有时会比较迷茫,不知该怎样突破瓶颈,更好的发展。 那么测试人员究竟该如何打破瓶颈继续向上提升呢?如果你苦于不知所措,又满怀斗志向上的话,不妨一起聊聊。测试职业发展…

(PC+WAP)装修设计公司网站模板 家装公司网站源码下载

(PCWAP)装修设计公司网站模板 家装公司网站源码下载 PbootCMS内核开发的网站模板,该模板适用于装修设计、家装公司类等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可; PCWAP,同一个后台&#xff0c…

暴雨AI服务器:推动大模型算力底座发展

语言大模型作为人工智能领域的重要分支,其强大的自然语言处理能力和模仿人类的对话决策能力,正逐渐成为人们的关注焦点。近日,据央视新闻报道,工业和信息化部赛迪研究院数据显示,今年我国语言大模型市场规模实现较快提…

D : B DS二叉排序树_树中第k小的元素

Description 给定一个二叉排序树和一个整数k,要求输出树中第k个最小元素(k从1开始计数)。 Input 第一行输入t,表示有t个测试样例。 第二行起,首先输入n,接着输入n个整数表示一个二叉排序树,接着输入k。 以此类推共…

分段函数1_分支结构 C语言xdoj112

题目描述: 编写程序计算分段函数f(x)的值。 输入格式&#xff1a;输入实数x的值 输出格式&#xff1a;输出f(x)的值&#xff0c;结果保留两位小数。 示例&#xff1a; 输入&#xff1a;4 输出&#xff1a;2.00 #include <stdio.h> #include <math.h>//分段函数1_分…

Linux常用基础命令(二)

查看当前的工作目录的路径--pwd 列表显示目录内容--ls 切换工作目录--cd 1.切换用户--su 格式&#xff1a; su 用户名 注意&#xff1a;普通用户切换到管理员用户需要输入密码&#xff0c;管理员用户切换到普通用户不需要输入密码&#xff0c;普通用户之间切换也要输入密码…

【漏洞复现】Apache Struts CVE-2023-50164

Struts2 官方披露 CVE-2023-50164 Apache Struts 文件上传漏洞&#xff0c;攻击者可利用该漏洞污染相关上传参数导致目录遍历&#xff0c;在具体代码环境中可能导致上传 Webshell&#xff0c;执行任意代码。 漏洞描述 Apache Struts2 是一个开源的 Java Web 应用程序开发框架&a…

【目标检测实验系列】YOLOv5创新点改进:融合高效轻量级网络结构GSConv,减轻模型复杂度的同时保持检测精度!(内含源代码,超详细改进代码流程)

自我介绍&#xff1a;本人硕士期间全程放养&#xff0c;目前成果:一篇北大核心CSCD录用,两篇中科院三区已见刊&#xff0c;一篇中科院三区在投。如何找创新点&#xff0c;如何放养过程厚积薄发&#xff0c;如何写中英论文&#xff0c;找期刊等等。本人后续会以自己实战经验详细…

stable diffusion webui之lora调用

1.触发词底模lora效果最好&#xff08;分数不一定要取到1&#xff0c;0.8也行&#xff09;&#xff1b; 2.引用时一定要使用<lora:>&#xff0c;例如<lora:C4D_geometry_bg_v2.5:0.8>&#xff1b; "prompt": "(masterpiece:1.3), (best quality:1.…

浅谈棉纺织厂电气防火措施及电气防火限流式保护器的应用

摘要&#xff1a;棉纺织厂属于火灾危险场所&#xff0c;在进行电气设计时要考虑并采取一定的防火措施。本文从接线、熔断器的选用、中性点接地方式的选择和接地等问题&#xff0c;介绍了电气防火的一些措施。并就引发火灾较严重的线路短路故障问题&#xff0c;介绍了电气防火限…

系统分析师(软考)知识点整理(二)

会计相关 会计是指记录、分类、汇总、计量和报告发送在企业经济活动中的财务数据的行为 #mermaid-svg-YBI5YPWzqWhRB4kI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-YBI5YPWzqWhRB4kI .error-icon{fill:#552222…

http -- 跨域问题详解(浏览器)

参考链接 参考链接 1. 跨域报错示例 Access to XMLHttpRequest at http://127.0.0.1:3000/ from origin http://localhost:3000 has been blocked by CORS policy: Response to preflight request doesnt pass access control check: No Access-Control-Allow-Origin header…

鸿蒙原生应用再添新丁!喜马拉雅入局鸿蒙

鸿蒙原生应用再添新丁&#xff01;喜马拉雅入局鸿蒙 来自 HarmonyOS 微博12月20日消息&#xff0c; #喜马拉雅正式完成鸿蒙原生应用版本适配#&#xff0c;作为音频业巨头的喜马拉雅 &#xff0c;将基于#HarmonyOS NEXT#创造更丰富、更智慧的全场景“声音宇宙”&#xff01;#鸿…

实验4.2 默认路由和浮动静态路由的配置

实验4.2 默认路由和浮动静态路由的配置 一、任务描述二、任务分析三、具体要求四、实验拓扑五、任务实施1.路由器的基本配置。2.配置默认路由&#xff0c;实现全网互通。3.配置浮动静态路由&#xff0c;实现链路备份。 六、任务验收七、任务小结八、知识链接1&#xff0e;默认路…

【密码学】使用mkcert安装CA、自签名ssl证书,配置nginx的https 证书笔记

文章目录 证书&#xff08;CA证书&#xff0c;服务端证书&#xff0c;客户端证书&#xff09;1 安装CA1.1 下载mkcert1.2 mkcert安装和配置根证书1.3设备安装根证书 2 自签名ssl证书2.1 CA 证书过程:2.2 自签名流程2.3签发证书2.4给已有的证书请求&#xff08;.csr&#xff09;…

嵌入式中串口输入

学习目标 掌握串口初始化流程掌握串口接收逻辑了解中断接收逻辑熟练掌握串口开发流程学习内容 需求 串口接收PC机发送的数据。 串口数据接收 串口初始化 static void USART_config() {uint32_t usartx_tx_rcu = RCU_GPIOA;uint32_t usartx_tx_port = GPIOA;uint32_t usartx…

12.19_黑马数据结构与算法笔记Java

目录 203 排序算法 选择排序 204 排序算法 堆排序 205 排序算法 插入排序 206 排序算法 希尔排序 207 排序算法 归并排序 自顶至下 208 排序算法 归并排序 自下至上 209 排序算法 归并加插入 210 排序算法 单边快排 211 排序算法 双边快排 212 排序算法 快排 随机基准…