从 0 开始学架构
李运华
网名“华仔”,前阿里资深技术专家(P9)
152571 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 66 讲
结束语 (1讲)
结课测试 (1讲)
从 0 开始学架构
15
15
1.0x
00:00/00:00
登录|注册

01 | 架构到底是指什么?

Rule
Relation
Role
Rank
4+1视图
角度
结构
基础功能
规范
单元复用
物理部署角度
职责分离
业务逻辑角度
能力
规则
关联
能力
规则
关联
Rule
Relation
Role
Rank
4R架构
架构
框架
组件
模块
子系统
系统
4R架构定义
系统序列图
系统架构图
重新定义架构
框架与架构
模块与组件
系统与子系统
定义
架构

该思维导图由 AI 生成,仅供参考

你好,我是华仔。
2018 年,我发布了《从 0 开始学架构》这门课程,分享了我之前在电信业务和移动互联网业务方面的经验和感悟。
后来,我转岗去了蚂蚁国际,从事更加复杂的支付业务。为什么说支付业务更加复杂?因为它涉及的关联方多、业务流程长、业务模型复杂,对安全、高可用、高性能等都有更高的要求。我有幸参与了一个海外钱包从 0 到 1 的建设过程,积累了不少实战经验,于是对复杂业务的架构设计有了新的理解。
2020 年,因为身体等原因,我离开了蚂蚁国际,之后就一边休养身体,一边系统地总结梳理过去的经验,先后创作了《大厂晋升指南》和《架构实战营》。在打磨课程和与各位同学交流的过程中,我对于架构学习的难点和应用的痛点,又有了新的心得体会。
因此,我决定更新这门课程的部分内容,把这些新的收获也全部分享出来,希望能帮助你与时俱进地提升架构水平。

架构到底是指什么

对于技术人员来说,“架构”是一个再常见不过的词了。我们会对新员工培训整个系统的架构,参加架构设计评审,学习业界开源系统(例如 MySQL 和 Hadoop)的架构,研究大公司的架构实现(例如微信架构和淘宝架构)……
虽然“架构”这个词很常见,但如果深究一下,“架构”到底是指什么,大部分人就搞不清楚了。例如以下这些问题,你能够准确地回答吗?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了软件架构的概念及其与框架的区别。首先,文章从系统与子系统、模块与组件、框架与架构三组概念出发,深入解析了架构的定义和区分。其次,通过微信系统为例,阐述了系统和子系统的关系,以及模块和组件的区别,使读者更好地理解架构的概念和应用。此外,文章重新定义了软件架构为“4R架构”,包括Rank、Role、Relation和Rule四个关键词,并以支付系统为例展示了系统架构图和系统序列图。最后,文章提出了一个思考题,引导读者对自己对架构的理解进行深入思考。通过本文的阐述,读者能够快速了解软件架构的概念及其与框架的区别,以及重新定义的“4R架构”,并对自己的理解进行深入思考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学架构》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(477)

  • 最新
  • 精选
  • 公号-技术夜未眠
    架构是顶层设计;框架是面向编程或配置的半成品;组件是从技术维度上的复用;模块是从业务维度上职责的划分;系统是相互协同可运行的实体。

    作者回复: 精炼!

    2018-04-28
    25
    2251
  • 每天都在找小黄车
    搬砖的:“头,我们要造什么?”;(做什么系统?) 工程师:“龙之梦商城”;(XXX系统,比如微博系统) 搬砖的:“图纸画出来了嘛?”;(架构是怎么设计的?) 工程师:“一楼主要以女性消费为主体、二楼以大众娱乐为主体、三楼以美食为主体”;(相当于微博系统中的各个子系统,比如评论子系统、动态子系统、消息子系统) 搬砖的:“头,说人话”; 工程师:“一楼有卖衣服、化妆品的,二楼有唱歌、看电影的,三楼有吃的”;(【模块】按照逻辑区分,比如存储数据模块、搜索模块、消息推送模块) 搬砖的:“有没有很知名的店啊?”; 工程师:“有的,一楼有香奈儿、优衣库...、二楼有好乐迪、万达影院....、三楼有海底捞、避风塘.....”;(【组件】按照物理区分,存储数据模块对应Mysql、搜索模块对应ElasticSearch、 消息推送模块对应Kafka) 搬砖的:“对了,头,商城大门有啥需要叮嘱的施工规范不?或有啥简化施工工艺的新技术嘛?”;(有框架的可以用吗?) 工程师猛吸了一口烟,把烟头扔在地上,用皮鞋左右撵了两下,缓缓从嘴里崩出四个字。 “老样子吧”。(Spring全家桶甩起来)

    作者回复: 极客时间卧虎藏龙,里面的用户个个都很有才,口才又好,长得又帅,我超喜欢😂

    2018-04-28
    16
    1091
  • 景三
    用人来比喻,架构是骨头,搭起整个软件。框架是大脑,约束软件应该怎么做。模块是吃喝拉撒走,负责不同的功能。组件是躯干四肢头,组成一个人。而子系统就是呼吸系统运动系统,属于软件的一部分,独立工作却又遵从指挥

    作者回复: 很形象😂

    2018-05-28
    6
    100
  • 顿晓
    我们要做的东西都能抽象为一个系统,架构既可做动词也可做名词,作为动词就代表系统的设计,作为名词就代表系统的表现形式。 所以架构首先继承了系统的属性: 0、系统整体有价值 1、由多个有关系的个体组成 2、涌现,整体大于个体之和,也就是文中说的“流”出来的新的价值 系统的架构从无到有由人来执行,所以也具备人思考和交流的属性: 0、思维带宽较小,不能同时考虑很多事情,需要把系统做分解(模块和组件) 1、线性思想和交流,多维关系要降级到二维关系(4+1视图等多种方法论) 2、人作为个体的个性化-也即多样性,架构没用统一标准,适合自己/团队/公司最重要。

    作者回复: 你已经开始解剖架构的本质了,后面章节会讨论这个话题。 通常“架构”还是用作名词,动词就用“架构设计”,有的观点用“构架”,有点拗口和容易混淆,所以我一般宁愿用“架构设计”

    2018-04-28
    85
  • wocow
    系统与子系统:系统是由一系列有关联,按特定规则组成的个体,并且产生新的能力,而系统与子系统则是观察的交角度不同 模块与组件:模块是从逻辑角度去看待,而组件是从物理角度去看待 框架与架构:框架是规范也是约束,可以理解为封闭性的话题,定义好,让别人如何去使用,而架构是一种结构,是一种开放性的话题,如何去设计组织架构,如何让架构更具有拓展性,减少沟通错误成本

    作者回复: 提炼了精华,赞

    2018-04-29
    2
    68
  • Joker
    是不是可以这么认为,就是做架构就是对于解决一个或者一类问题,构建一个系统,你需要为这个系统根据业务划分模块,需要加入能组合起来的组件和框架,然后你需要构建一系列规则,让这些组件和框架跑起来,各自发挥各自的能力,来实现一个个模块,然后这些模块又组合起来成了整个系统,所以做架构需要很熟悉业务,会业务逻辑划分,要熟悉很多框架,组件,知道他们的能力,熟悉怎么组合他们完美的运作起来!

    作者回复: 非常正确:问题,模块,规则,系统,架构四要素😃

    2018-05-22
    2
    46
  • 小龙
    框架和架构其实不一定有什么关联关系。架构是为了实现某个功能而设计的一种结构方式。虽然架构一词高大上,但你只要实现了自己的功能,你的结构就是架构。有了架构,你就有了工作的思路和方向。框架是实现功能的一种规范,你必须在这种规范下工作。注意,定义中说框架是定义组建的规范,所以框架里面不一定非得有组建和模块。 模块是从职责划分的角度来观察,实现某个功能的职责,称之为模块。比如登陆模块。要实现的某个功能,我们一般称之为模块。 组件的本质是可以独立实现某项功能的零件。它的特点是独立,可替换 组件与模块的区别是,组件可能是为了实现模块而实现的。但是实现功能的模块不能称为组件。

    作者回复: 点赞

    2018-07-08
    33
  • tick
    微信是系统,微信的登录是子系统, 学生管理是系统,学生管理的登录就是模块,这是为什么呢,模块和子系统啥区别?

    作者回复: 子系统是独立运行的,模块是子系统的逻辑组成部分,如果学生管理系统规模很大(例如在线学校),需要支撑每秒上万的登录请求,那么学生管理的登录模块一样可以升级为子系统。

    2018-04-28
    19
  • 线条
    系统根据业务或功能划分为各个模块,某些模块可能又被升级为子系统; 模块中可能使用了很多组件来实现某些具体功能 ; 同时,也可能使用了某些框架来作为开发的基础,而架构则描述了各个子系统或模块间如何协调工作。不知这么理解合理不?

    作者回复: 理解正确

    2018-06-24
    10
  • wudy
    框架偏技术,就像作者所说的是一种开发规范,是一种开发思路,应用于系统或子系统中,使得开发人员能快速设计出程序编写的代码组织结构;而架构相对偏业务一点,是针对业务需求,分解整个系统,梳理出数据流转逻辑,有哪些子系统、子模块、组件组成,他们之间的相互关系是怎么样的,需要更多的考虑未来需求的变化,考虑系统的可扩展性,可靠性,容错性等。

    作者回复: 总结挺好的

    2020-06-27
    8
收起评论
显示
设置
留言
99+
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部