许式伟的架构课
许式伟
七牛云CEO
立即订阅
19977 人已学习
课程目录
已更新 71 讲 / 共 77 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 怎样成长为优秀的软件架构师?
免费
基础平台篇 (21讲)
01 | 架构设计的宏观视角
02 | 大厦基石:无生有,有生万物
03 | 汇编:编程语言的诞生
04 | 编程语言的进化
05 | 思考题解读:如何实现可自我迭代的计算机?
06 | 操作系统进场
07 | 软件运行机制及内存管理
08 | 操作系统内核与编程接口
09 | 外存管理与文件系统
10 | 输入和输出设备:交互的演进
11 | 多任务:进程、线程与协程
12 | 进程内协同:同步、互斥与通讯
13 | 进程间的同步互斥、资源共享与通讯
14 | IP 网络:连接世界的桥梁
15 | 可编程的互联网世界
16 | 安全管理:数字世界的守护
17 | 架构:需求分析 (上)
18 | 架构:需求分析 (下) · 实战案例
19 | 基础平台篇:回顾与总结
加餐 | 我看Facebook发币(上):区块链、比特币与Libra币
加餐 | 我看Facebook发币(下):深入浅出理解 Libra 币
桌面开发篇 (16讲)
20 | 桌面开发的宏观视角
21 | 图形界面程序的框架
22 | 桌面程序的架构建议
23 | Web开发:浏览器、小程序与PWA
24 | 跨平台与 Web 开发的建议
25 | 桌面开发的未来
26 | 实战(一):怎么设计一个“画图”程序?
27 | 实战(二):怎么设计一个“画图”程序?
28 | 实战(三):怎么设计一个“画图”程序?
29 | 实战(四):怎么设计一个“画图”程序?
30 | 实战(五):怎么设计一个“画图”程序?
31 | 辅助界面元素的架构设计
课外阅读 | 从《孙子兵法》看底层的自然法则
加餐 | 想当架构师,我需要成为“全才”吗?
32 | 架构:系统的概要设计
33 | 桌面开发篇:回顾与总结
服务端开发篇 (14讲)
34 | 服务端开发的宏观视角
35 | 流量调度与负载均衡
36 | 业务状态与存储中间件
37 | 键值存储与数据库
38 | 文件系统与对象存储
39 | 存储与缓存
40 | 服务端的业务架构建议
41 | 实战(一):“画图”程序后端实战
42 | 实战(二):“画图”程序后端实战
43 | 实战(三):“画图”程序后端实战
44 | 实战(四):“画图”程序后端实战
45 | 架构:怎么做详细设计?
46 | 服务端开发篇:回顾与总结
加餐 | 如何做HTTP服务的测试?
服务治理篇 (11讲)
47 | 服务治理的宏观视角
48 | 事务与工程:什么是工程师思维?
49 | 发布、升级与版本管理
50 | 日志、监控与报警
加餐 | 怎么保障发布的效率与质量?
51 | 故障域与故障预案
52 | 故障排查与根因分析
53 | 过载保护与容量规划
54 | 业务的可支持性与持续运营
55 | 云计算、容器革命与服务端的未来
56 | 服务治理篇:回顾与总结
架构思维篇 (8讲)
57 | 心性:架构师的修炼之道
用户故事 | 站在更高的视角看架构
58 | 如何判断架构设计的优劣?
59 | 少谈点框架,多谈点业务
60 | 架构分解:边界,不断重新审视边界
加餐 | 实战:“画图程序” 的整体架构
61 | 全局性功能的架构设计
62 | 重新认识开闭原则 (OCP)
许式伟的架构课
登录|注册

02 | 大厦基石:无生有,有生万物

许式伟 2019-04-19
你好,我是七牛云许式伟。
在上一讲中,我们把“构建一个应用程序”类比成“构建一座大厦”,并从宏观全局的视角剖析了应用程序这座大厦的构成。今天,我们将更加近距离地去解剖这座大厦的地基:冯·诺依曼体系结构。

解剖架构的关键点是什么?

在解剖之前,我想和你先谈谈“解剖学”:我们应该如何去分析架构设计中涉及的每一个零部件。换一句话说,当我们设计或分析一个零部件时,我们会关心哪些问题。
第一个问题,是需求。这个零部件的作用是什么?它能被用来做哪些事情?(某种意义上来说更重要的是)它不会被用来做哪些事情?
你可能会说,呀,这个问题很简单,既然我设计了这个零部件,自然知道它是用来干嘛的。但实质上这里真正艰难的是“为什么”:为何这个零件被设计成用来干这些事情的,而不是多干一点事情,或者为什么不是少干某些事情?
第二个问题,是规格。这个零部件接口是什么样的?它如何与其他零件连接在一起的?
规格是零部件的连接需求的抽象。符合规格的零部件可以有非常多种可能的实现方案,但是,一旦规格中某个条件不能满足了,它就无法正常完成与其他零件的连接,以达到预期的需求目标。
规格的约束条件会非常多样化,可能是外观(比如形状和颜色),可能是交互方式(比如用键盘、鼠标,或者语音和触摸屏),也可能是质量(比如硬度、耐热性等等)。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《许式伟的架构课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(108)

  • 明翼
    笔记:老师通过对冯诺依曼计算机架构体系的剖析,让我们了解在为支持复杂的计算时候,大师是如何将计算的核心设计为跳转,通用计算等简单核心功能的CPU;
    通过对外设接口的抽象隔离了复杂的而又有无限可能的外设;
    方便存取指令和数据的内存。
    简单来说就是找到变化部分,通过抽象接口层来隔离变化,让核心部件功能单一化
    2019-04-19
    52
  • 葫芦娃
    计算机专业第一课应该讲这个,然后才能知道学习算法,数据结构,编译原理,操作系统,网络通信的意义,都是核心能力的外围
    2019-04-19
    42
  • 青石
    《倚天屠龙记》里有个很有意思的桥段,张三丰问了张无忌三次,第一次问:我刚刚演练的太极剑法你还记得多少呢?无忌答还记得一大半,过了一会儿张三丰又问:现在还记得多少呢?无忌答还记得一小半。再过了一会,张三丰又问:这次还记得多少呢?张无忌答全忘记了。张三丰神秘的一笑,说道:现在你可以和他们去打了。

    前人的经验、个人的经历,就像武功招式,打法套路,关键时刻起着指导作用,但真正架构看的是内功心法,如何灵活运用,招式的拆分再组合,无招胜有招。

    经历过拿锤子找钉子的困惑,现在更习惯放空自己,根据用户需求、业务痛点来设计,同时适度考虑部分扩展问题。

    总结下来,觉得适度很重要,再合适的时间做适合的事情。

    作者回复: 很通透

    2019-04-20
    2
    32
  • MarksGui
    这不仅仅传授的是招式,这是一种意境!这样的举例分析确实让人眼前一亮。
    2019-04-19
    32
  • 公号-代码荣耀
    输入–计算–存储–输出
    输入–存储–计算–输出
    以上两种抽象的计算模型在我们的每个函数、组件、服务、分层设计中是一脉相承的。大道至简,我理解这既是架构设计的套路,也是架构设计的第一性原理
    2019-04-19
    21
  • crazier.huang
    如何来确定需求中哪些是稳定的?对架构角度,关注需求到什么层次吗?

    作者回复: 挺好的问题。需求分析的重要性怎么形容都不过分。准确的需求分析是做出良好架构设计的基础。很多优秀的架构师之所以换到一个新领域一上来并不一定能够设计出好的架构,往往需要经过几次迭代才趋于稳定,原因在于新领域的需求理解需要一个过程。除了心里对需求的反复推敲的严谨态度外,对客户反馈的尊重之心也至关重要。

    2019-04-19
    1
    18
  • fy
    赞赞,用这么浅显的语言阐释了冯若依曼体系结构的用来“解决了一切可以‘计算’的问题”,同时理清楚了冯若依曼架构的由来,计算,存储,输入输出。这三者之间的联系。通过多样变化的需求,抽象出来说明冯若伊曼哪部分是稳定的,哪部分是变化的!
    2019-04-19
    16
  • 苟范儿
    看到了数学公式 y = F(x) ,突然发现这个中学就接触的简单公式蕴含的内容十分丰富。再看老师这么结合冯诺伊曼的体系结构 ,y = F(x) 实际上代表的是一种世界观,所有看见的(输入 x ),都可以理解(函数 F)出新的东西(输出 y)。
    另外,最初的编程课学的循环、条件、顺序几种结构,看似简单,却是程序的根基,不管有多少编程语言,这几种结构从来都没变过。
    2019-04-19
    14
  • vwarship
    在学校学习计算机原理的时候,感觉那么枯燥难懂,被老师以架构视角进行解读感觉超级简单,不过一下子还很难搞懂,接下来研究一下老师精心准备的代码,希望可以站在架构的角度搞懂一二。

    作者回复: 🤝

    2019-04-19
    14
  • kyushu
    需求分析:站的角度很重要。架构设计也一样,总是提高一个level去看待,才能不局限于当前。

    作者回复: 是的,架构设计切记见招拆招

    2019-04-19
    9
  • Barry
    写的真好,真正理解的人才能用最浅显易懂文字来描述
    2019-04-19
    8
  • fy
    赞👍,用最简单浅显的语言来说明冯若依曼体系结构,说明解决计算
    2019-04-19
    8
  • 燕羽阳
    推荐一本书《系统架构,复杂系统的产品设计与开发》
    书中提到了 形式、功能和涌现等概念。
    形式是物理组成,每个形式有自己的功能。这里对应文中的规格。
    涌现是指系统整体展现的功能、性能等。应当是1+1>2。有点类似于解决文中的需求。

    作者回复: 多谢推荐

    2019-04-20
    7
  • 虫大侠
    道理不外乎如是, 从业一段时间的,基本可以明了其中的运转逻辑;
    难点在于,对于业务的把控,有点像是中医的望闻问切一样,很难get到计算机科学的严谨性规律,可以一以贯之;
    个人理解还是要踩坑, 经历过了, 思考过了之后, 有了切肤之痛之后形成的架构观;
    觉得架构的技能, 有点过于依赖于经验的积累, 鲜少有速成的道路;
    靠天分,靠一两句话, 抑或几篇课程, 能够让自己走上正途, 还是无法让自己做到游刃有余;
    个人理解, 这还是一门复杂学科. [唉😔唉]

    作者回复: 架构无速成之路,一靠匠心,二靠悟心。所谓悟心,反复梳理脉络后之顿悟哉。

    2019-04-20
    7
  • 朱成亮
    架构第一关键点是理解和分析需求,弄明白需求中核心和可扩展;然后针对性的设计系统来解决这两个问题。
    2019-04-19
    6
  • 上善若水
    力透纸背
    2019-04-19
    6
  • 梦醒十分
    艺术家应该窃取灵感,老师是让我们懂的如何窃取冯.诺依曼的灵感。厉害👍
    2019-04-19
    6
  • coderfocus
    写的也太棒了,谢谢老师
    2019-04-19
    6
  • CoderLim
    1、解剖架构的关键是需求和规格;
    2、需求的关键是稳定点和变化点;
    3、举个栗子,从冯体系理解架构;
    2019-04-19
    5
  • 划时代
    《程序员的自我修养》开篇也讲冯诺依曼体系,发现科班出身都喜欢讲。

    作者回复: 可惜我不是科班出身

    2019-04-24
    4
收起评论
99+
返回
顶部