01 | 架构到底是指什么?
李运华
该思维导图由 AI 生成,仅供参考
你好,我是华仔。
2018 年,我发布了《从 0 开始学架构》这门课程,分享了我之前在电信业务和移动互联网业务方面的经验和感悟。
后来,我转岗去了蚂蚁国际,从事更加复杂的支付业务。为什么说支付业务更加复杂?因为它涉及的关联方多、业务流程长、业务模型复杂,对安全、高可用、高性能等都有更高的要求。我有幸参与了一个海外钱包从 0 到 1 的建设过程,积累了不少实战经验,于是对复杂业务的架构设计有了新的理解。
2020 年,因为身体等原因,我离开了蚂蚁国际,之后就一边休养身体,一边系统地总结梳理过去的经验,先后创作了《大厂晋升指南》和《架构实战营》。在打磨课程和与各位同学交流的过程中,我对于架构学习的难点和应用的痛点,又有了新的心得体会。
因此,我决定更新这门课程的部分内容,把这些新的收获也全部分享出来,希望能帮助你与时俱进地提升架构水平。
架构到底是指什么
对于技术人员来说,“架构”是一个再常见不过的词了。我们会对新员工培训整个系统的架构,参加架构设计评审,学习业界开源系统(例如 MySQL 和 Hadoop)的架构,研究大公司的架构实现(例如微信架构和淘宝架构)……
虽然“架构”这个词很常见,但如果深究一下,“架构”到底是指什么,大部分人就搞不清楚了。例如以下这些问题,你能够准确地回答吗?
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了软件架构的概念及其与框架的区别。首先,文章从系统与子系统、模块与组件、框架与架构三组概念出发,深入解析了架构的定义和区分。其次,通过微信系统为例,阐述了系统和子系统的关系,以及模块和组件的区别,使读者更好地理解架构的概念和应用。此外,文章重新定义了软件架构为“4R架构”,包括Rank、Role、Relation和Rule四个关键词,并以支付系统为例展示了系统架构图和系统序列图。最后,文章提出了一个思考题,引导读者对自己对架构的理解进行深入思考。通过本文的阐述,读者能够快速了解软件架构的概念及其与框架的区别,以及重新定义的“4R架构”,并对自己的理解进行深入思考。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学架构》,新⼈⾸单¥68
《从 0 开始学架构》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(477)
- 最新
- 精选
- 公号-技术夜未眠架构是顶层设计;框架是面向编程或配置的半成品;组件是从技术维度上的复用;模块是从业务维度上职责的划分;系统是相互协同可运行的实体。
作者回复: 精炼!
2018-04-28252251 - 每天都在找小黄车搬砖的:“头,我们要造什么?”;(做什么系统?) 工程师:“龙之梦商城”;(XXX系统,比如微博系统) 搬砖的:“图纸画出来了嘛?”;(架构是怎么设计的?) 工程师:“一楼主要以女性消费为主体、二楼以大众娱乐为主体、三楼以美食为主体”;(相当于微博系统中的各个子系统,比如评论子系统、动态子系统、消息子系统) 搬砖的:“头,说人话”; 工程师:“一楼有卖衣服、化妆品的,二楼有唱歌、看电影的,三楼有吃的”;(【模块】按照逻辑区分,比如存储数据模块、搜索模块、消息推送模块) 搬砖的:“有没有很知名的店啊?”; 工程师:“有的,一楼有香奈儿、优衣库...、二楼有好乐迪、万达影院....、三楼有海底捞、避风塘.....”;(【组件】按照物理区分,存储数据模块对应Mysql、搜索模块对应ElasticSearch、 消息推送模块对应Kafka) 搬砖的:“对了,头,商城大门有啥需要叮嘱的施工规范不?或有啥简化施工工艺的新技术嘛?”;(有框架的可以用吗?) 工程师猛吸了一口烟,把烟头扔在地上,用皮鞋左右撵了两下,缓缓从嘴里崩出四个字。 “老样子吧”。(Spring全家桶甩起来)
作者回复: 极客时间卧虎藏龙,里面的用户个个都很有才,口才又好,长得又帅,我超喜欢😂
2018-04-28161091 - 景三用人来比喻,架构是骨头,搭起整个软件。框架是大脑,约束软件应该怎么做。模块是吃喝拉撒走,负责不同的功能。组件是躯干四肢头,组成一个人。而子系统就是呼吸系统运动系统,属于软件的一部分,独立工作却又遵从指挥
作者回复: 很形象😂
2018-05-286100 - 顿晓我们要做的东西都能抽象为一个系统,架构既可做动词也可做名词,作为动词就代表系统的设计,作为名词就代表系统的表现形式。 所以架构首先继承了系统的属性: 0、系统整体有价值 1、由多个有关系的个体组成 2、涌现,整体大于个体之和,也就是文中说的“流”出来的新的价值 系统的架构从无到有由人来执行,所以也具备人思考和交流的属性: 0、思维带宽较小,不能同时考虑很多事情,需要把系统做分解(模块和组件) 1、线性思想和交流,多维关系要降级到二维关系(4+1视图等多种方法论) 2、人作为个体的个性化-也即多样性,架构没用统一标准,适合自己/团队/公司最重要。
作者回复: 你已经开始解剖架构的本质了,后面章节会讨论这个话题。 通常“架构”还是用作名词,动词就用“架构设计”,有的观点用“构架”,有点拗口和容易混淆,所以我一般宁愿用“架构设计”
2018-04-2885 - wocow系统与子系统:系统是由一系列有关联,按特定规则组成的个体,并且产生新的能力,而系统与子系统则是观察的交角度不同 模块与组件:模块是从逻辑角度去看待,而组件是从物理角度去看待 框架与架构:框架是规范也是约束,可以理解为封闭性的话题,定义好,让别人如何去使用,而架构是一种结构,是一种开放性的话题,如何去设计组织架构,如何让架构更具有拓展性,减少沟通错误成本
作者回复: 提炼了精华,赞
2018-04-29268 - Joker是不是可以这么认为,就是做架构就是对于解决一个或者一类问题,构建一个系统,你需要为这个系统根据业务划分模块,需要加入能组合起来的组件和框架,然后你需要构建一系列规则,让这些组件和框架跑起来,各自发挥各自的能力,来实现一个个模块,然后这些模块又组合起来成了整个系统,所以做架构需要很熟悉业务,会业务逻辑划分,要熟悉很多框架,组件,知道他们的能力,熟悉怎么组合他们完美的运作起来!
作者回复: 非常正确:问题,模块,规则,系统,架构四要素😃
2018-05-22246 - 小龙框架和架构其实不一定有什么关联关系。架构是为了实现某个功能而设计的一种结构方式。虽然架构一词高大上,但你只要实现了自己的功能,你的结构就是架构。有了架构,你就有了工作的思路和方向。框架是实现功能的一种规范,你必须在这种规范下工作。注意,定义中说框架是定义组建的规范,所以框架里面不一定非得有组建和模块。 模块是从职责划分的角度来观察,实现某个功能的职责,称之为模块。比如登陆模块。要实现的某个功能,我们一般称之为模块。 组件的本质是可以独立实现某项功能的零件。它的特点是独立,可替换 组件与模块的区别是,组件可能是为了实现模块而实现的。但是实现功能的模块不能称为组件。
作者回复: 点赞
2018-07-0833 - tick微信是系统,微信的登录是子系统, 学生管理是系统,学生管理的登录就是模块,这是为什么呢,模块和子系统啥区别?
作者回复: 子系统是独立运行的,模块是子系统的逻辑组成部分,如果学生管理系统规模很大(例如在线学校),需要支撑每秒上万的登录请求,那么学生管理的登录模块一样可以升级为子系统。
2018-04-2819 - 线条系统根据业务或功能划分为各个模块,某些模块可能又被升级为子系统; 模块中可能使用了很多组件来实现某些具体功能 ; 同时,也可能使用了某些框架来作为开发的基础,而架构则描述了各个子系统或模块间如何协调工作。不知这么理解合理不?
作者回复: 理解正确
2018-06-2410 - wudy框架偏技术,就像作者所说的是一种开发规范,是一种开发思路,应用于系统或子系统中,使得开发人员能快速设计出程序编写的代码组织结构;而架构相对偏业务一点,是针对业务需求,分解整个系统,梳理出数据流转逻辑,有哪些子系统、子模块、组件组成,他们之间的相互关系是怎么样的,需要更多的考虑未来需求的变化,考虑系统的可扩展性,可靠性,容错性等。
作者回复: 总结挺好的
2020-06-278
收起评论