Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >架构师应该具备哪些思维模型?

架构师应该具备哪些思维模型?

原创
作者头像
江帅帅
修改于 2020-06-08 02:56:17
修改于 2020-06-08 02:56:17
3410
举报
文章被收录于专栏:大数据工程师大数据工程师

架构师一直是程序员「羡慕且追求」的高度,今天来说说我(奈学教育CEO:孙玄)眼里优秀的架构师该如何定义。毕竟我也曾经是一名架构师:

在开始今天的话题之前我说一个和我前公司P9现在已经是P10的对话。

问题是这样的他说公司中间件架构师不熟悉公司业务,很多事落地不了,非常的疑惑。他最近主要任务就是和这些架构师聊天解惑:)

接着他说了一个类比的故事大概是这样的,

我们(架构师)要建设一条高速公路,来分别看看公路建造者(架构师)和司机(业务研发)的视角。

1,建造者 他们选用最好的沙子 水泥 更好的设计图纸和操作流程保证质量和处理异常情况(比如出入口提示,超车,紧急停车带)

2,司机同志 他们关心什么?

司机关心路宽么,有堵车可以提前告知么。

司机关心路平整么?当然关心,关心。

引出一个的问题:司机(业务研发)关心用最好的水泥么 ?

想象你是司机(业务研发)你你关心吗?

A,关心

B,不关心

欢迎留言留下你的思考。

我觉得一名优秀的架构师,在设计系统时需要有以下这四项关键能力:「平衡取舍、预判未来、抽象思维、容错机制」。

1. 平衡取舍

一个架构本质上总会有优有劣,它不可能是完美的、普适的,也不存在一个架构在 A 场景能用,在 B 场景也最适用的情况,所以就需要我们准确判断,作出取舍。

我们可以根据具体的业务需求来调整架构,也就是以当前的业务需求,选出最匹配的架构。另外,架构师还需要根据现状衡量好需求和资源、效率和安全、时延和吞吐等等之间的关系,做出判断。

比如对于在线交易系统,可能更重要的是保证它的低时延,因此就可以牺牲一定的吞吐量,而对于离线系统,吞吐量则更重要一些。

2. 预判未来

架构师需要具备一定的未来的预判能力,因为架构的调整周期通常比较长。这也是程序员和架构师之间一个很大的区别所在。

程序员负责一个项目,在当前的互联网大背景下,项目的迭代周期非常快,基本以天或周为单位,最多一个月。如果发现不合适的代码,需要重构,程序员基本也能在几天或几周内就能完成重构。

而架构的调整是相对漫长的过程,可能需要数月,甚至要几年。因此,在设计架构时就需要架构师具备预判意识,对很多不确定的事情做出预判和选择,诸如未来访问量会增长到什么量级,会不会产生新的业务,这些会对系统产生什么样新的要求等等。

3. 抽象思维

除了懂得取舍和拥有预判意识,架构师在设计架构时还要掌握抽象的方法,不能胡子眉毛一把抓,要做好分层和区隔。

因为架构师面对的是一个很庞大的系统,为了避免过早陷入细节,不要去看各个组件的细节,而是把它们的角色定义下来之后,再分块来思考。而在看每个分块时,其他分块都可以视为一个抽象的概念,另外,也需要考虑复用的问题。

举个例子,我之前在某送餐平台做在线客服机器人,就运用了分层思想,并且高复用,一个对话机器人可以完成各种各样的业务需求。这其实是一个非常复杂的系统,里面有各种各样的对话机器人的模块,有的特别适合去做检索式的查询,还有的适合做任务导向的、产品推荐导向的对话等等。

我们把对话机器人抽象成一个通用的接口,再将它分为一个个小机器人。这样一来,每个小机器人只需要关注自己的业务模块就行了。然后,我们会在前端再引入一个路由机器人,由路由机器人根据当前对话管理的状态,来判断当前的对话应该交给哪个小机器人去完成。这就是典型的分层的思想。

4. 容错机制

相比程序员,架构师面对的环境要恶劣的多,因为系统更复杂了,出错的概率也增加了,每个节点、每个功能都有可能出错,所以这就需要架构师为错误而设计(Design For Failure),事先提前做好解决方案。

除了应用出错,还有可能产生数据丢失的情况,这个可以通过备份来预防。

另外,如果出现故障,该怎样做到快速恢复呢?我们现在普遍的做法是不修只换,因为如果要修复一个异常状态,可能修复后还会出现连带问题,而如果能通过技术手段,删除已出现的故障,换一个全新的系统,就能够保证它迅速恢复到正常状态。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
顶级架构师应具备如下5个思维模型!
《The Effective Engineer》的作者在写书的过程中,为了了解那些顶级程序员和普通程序员的区别,采访了很多硅谷顶级科技公司的顶尖软件工程师。他发现这些给世界带来巨大影响的的工程师们至少有以下5个共同的思维模式:
陶朱公Boy
2023/08/22
2520
顶级架构师应具备如下5个思维模型!
系统思维才是架构师的真内核
技术架构师是在技术领域扮演着关键角色的专业人员。他们在业务需求分析、项目实施、技术架构治理等多个环节中发挥着重要的作用。
悟空聊架构
2025/05/10
900
系统思维才是架构师的真内核
程序员晋升架构师的十项必备技能
1、卓越的程序员 Fred George先生说:“不编程的架构师的职业生涯是短暂的”。他说这句话的背景主要是针对有些架构师的设计与实现有断层的问题而言的,因为如果架构师不去实践,只是想当然的认为“没问题,这个想法能实现”,那么对于项目的落实而言是个很大的隐患。支付宝架构师冯大辉也表示过,架构师是一个比较“虚”的岗位,主要的问题都在“落地”的过程中。 2、抽象思维 很多优秀的架构师们都一致的表示,逻辑思维和抽象思维能力是一个架构师最重要的素质。eBay的Randy Shoup先生称拥有条理清晰的逻辑思维能力的
用户1257215
2018/01/30
1.1K0
没有架构师的命,却得了架构师的病!
小团队一般 10 人左右,其中常常是技术最牛的人做架构师(或 TL)。所以,架构师在广大码农中的占比大概平均不到 10%。
架构师修炼
2020/08/27
5830
没有架构师的命,却得了架构师的病!
架构师之路一-架构师入门指引
导读:本系列文章教你怎么样成为一名架构师,而本篇文章则带你先认识一下什么是架构师,架构师的工作是什么?
JAVA日知录
2020/03/12
3.3K0
在首席架构师眼里,架构的本质到底是什么?
目前讨论架构实操(术)的文章较多,讨论架构理念(道)的较少,本文基于作者在大型电商系统架构方面的一些实践和思考,和大家聊聊架构理念性的东西,希望能够抛砖引玉,推进大家对架构的认识。
本人秃顶程序员
2019/06/04
8410
在首席架构师眼里,架构的本质到底是什么?
架构师必备的几项技能(上)
1 架构师概念 2 是一位出色的程序员 不编程的架构师的职业生涯是短暂的 架构师是一个比较“虚”的岗位,主要的问题都在“落地”的过程中 eBay的架构师Randy Shoup先生是总结架构师在项目中的
java思维导图
2018/03/15
9720
架构师必备的几项技能(上)
一个思维习惯,让你成为架构师
  程序员的迷茫不仅仅是面对技术繁杂的无力感,更重要的是因为长期埋没于软件 世界的浩大的分工体系中,无法看清从业务到软件架构的价值链条,无法清楚定位自 己在分工体系的位置,处理不好自身与技术、业务的关系所致。
lyb-geek
2018/11/08
4550
直击架构本质:优秀架构师必须掌握的几种架构思维
架构的本质是管理复杂性,抽象、分层、分治和演化思维是我们工程师/架构师应对和管理复杂性的四种最基本武器。
范蠡
2019/11/06
1.3K0
直击架构本质:优秀架构师必须掌握的几种架构思维
如何成为一个Java高薪架构师?
什么是架构,什么是架构师?这似乎是聊架构话题时永恒的问题。 从内心讲我真的不想回答架构具体需要做什么,架构师应该具体负责什么。因为从实际情况看,在不同的系统层级,不同的需求下架构师的职责也会不同;从不同的技术角度看,架构师又是个变色龙——一时是技术的大拿,一时是技术的规划者,一时是技术团队的指挥者。 那么,该如何回答“什么是架构,什么是架构师”这个问题呢?这或许需要先搞清楚另外一个问题——一名程序员是如何走上架构师之路的?我从许多朋友那里了解到了很多实际案例,程序员走上架构师之路,总结起来最多的原因是因为他
Java高级架构
2018/04/19
7050
如何成为一个Java高薪架构师?
闲话如何成为一个架构师
停了很久,继续上路。计划写一个系列,先预告:《如何成为架构师》,《如何做一名好开发》,《如何做系分》,《如何转型技术管理》。
芋道源码
2018/09/30
4650
大咖们如何评判优秀架构师?
李力:我成为架构师从某种程度上是一件机缘巧合的事情,腾讯没有架构师这样一个实际存在只去做架构规划的岗位,我们技术人员都统称为工程师。腾讯云在2012-13年刚开始研究做云服务器产品的时候,我深入研究了OpenStack这个当时业界最知名的架构,思考我们的云服务器应该怎样去设计才能很好支撑起海量业务。最终在选用开源的OpenStack方案还是自研之间,我们选择了后者。于是我自己设计出了腾讯自研的大规模任务调度系统VStation,从这个项目后我开始觉得自己从工程师变成架构师了,因为我需要去规划一些技术方案和未来的产品走向。再后来,我成为了腾讯云服务器和区块链业务的负责人。
腾讯云开发者
2020/05/08
3.6K2
怎样成为一个优秀的架构师?
架构师是一个既能掌控整体又能洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。看似完美的“人格模型”背后,是艰辛的探索。
一个会写诗的程序员
2019/10/09
1K0
怎样成为一个优秀的架构师?
走进Android架构,体会架构师的魅力(附架构师必备技术详解)
有关android架构方面的知识少之又少,而对与架构的理解有关架构的文章也都是智者见智仁者见仁。在我身边听到最多的话就是架构=What?、架构=框架、架构=设计模式、架构=MVP/MVVM。那么架构到底是什么那?架构又有何用处?它在android中又能给你带来意想不到的效果? 希望有兴趣的能和各位讨论讨论。
Android技术干货分享
2019/09/27
8630
走进Android架构,体会架构师的魅力(附架构师必备技术详解)
技术硬实力,如何才能成为一名架构师
学习是一件需要长期投入的事情,尤其是在当下大环境恶劣的背景下,我们程序员必须要多多的投资自己,去加强自己的技术硬实力和软实力。
35岁程序员那些事
2022/09/23
3780
架构的本质:如何打造一个有序的系统?
我们知道,现在的软件系统越来越复杂,当然相应地,架构的作用也越来越明显。作为开发人员,我们每天都在和架构打交道,在这个过程中,对于架构也经常会产生各种各样的问题:
架构师修炼
2020/07/20
9550
架构的本质:如何打造一个有序的系统?
AI 时代架构师的破局之道与进阶之路,腾讯云架构师技术沙龙圆满落幕
AI 技术发展日新月异,AI 在自动编程展现巨大的潜力,因此企业对开发者提出更高的要求,不仅会写代码,还需具备架构设计、产品思维等综合能力。在这样的背景下,AI 时代下架构师的价值定位是怎样?面对技术的更新迭代,架构师如何规划自身成长路径,更好地增强竞争力,以寻求破局之道?
TVP官方团队
2025/04/28
1660
AI 时代架构师的破局之道与进阶之路,腾讯云架构师技术沙龙圆满落幕
架构师是怎样炼成的
软件架构师定义 软件工程师的职业发展方向: 软件架构师: 制定高级设计决策,并确定技术标准,包括编程标准,工具和平台的软件专家 软件架构: 系统的基本组织构成,这种组织主要体现在其组件,组
攻城狮Chova
2022/01/22
6690
架构师是怎样炼成的
架构师的自我修养
软件架构,指从宏观角度说明一套软件系统的组成和特性。 架构设计与需求分析,概要设计,详细设计最大的区别在于“宏观”二字。要去架构师必须具有大局观,从全局角度思考问题。
科技新语
2022/10/12
4120
相关推荐
顶级架构师应具备如下5个思维模型!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档