许式伟的架构课
许式伟
七牛云 CEO
84945 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 89 讲
许式伟的架构课
15
15
1.0x
00:00/00:00
登录|注册

01 | 架构设计的宏观视角

客户端应用程序的架构体系
服务端应用程序的架构体系
操作系统
编程语言+编译器
冯·诺依曼计算机体系
架构能力的重要性
完整的程序架构是怎样的?
应用程序的基础架构
结语
为什么需要建立宏观视角?
架构设计的宏观视角

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

你好,我是七牛云许式伟。今天我们来谈谈架构设计的宏观视角。
在信息科技高度发展的今天,我们每个人随时随地都可以接触到由程序驱动的智能电子设备,包括手机(如 iPhone、oppo 拍照手机)、平板电脑(如 iPad)、手表(如 iWatch、小天才智能手表)、音箱(如天猫精灵)、汽车(如特斯拉)等等。
这些东西背后是怎么工作的?单就其中的软件系统而言,这些小小的设备上往往运行着成千上万个软件模块,这些模块是如何如此精密地一起协作的?
对此,我过去接触过很多的软件开发工程师,或者架构师,很多人对这些原理也是一知半解,虽然“知其然”,但却“不知其所以然”。甚至有些朋友可能觉得,学这些有什么用处呢,在我看来,这部分内容恰恰是我们成为架构师很重要的一门基础课。

为什么需要建立宏观视角?

如同造房子有建筑工人(负责搬砖)和建筑师(负责架构设计)一样,软件系统的开发过程同样需要有程序员(负责搬“砖”)和架构师(负责架构设计)。作为架构师,我们需要的第一个能力是宏观的全局掌控能力。
如果把应用程序比作一座大厦,那么我们作为大厦的架构师,需要把大厦的结构搭建好,让程序员可以把砖填充进去,我们都知道,一个大厦的结构建得是否稳固,与地基密不可分。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文从计算机基础架构出发,深入探讨了软件系统的架构设计。首先介绍了冯·诺依曼计算机体系的重要性,以及编程语言、编译器和操作系统的作用。强调了基础软件如Linux、Nginx等对应用开发的重要性。对服务端和客户端应用程序的架构体系进行了详细分析,讨论了浏览器在消除客户端多样性方面的作用。文章指出,具备架构思维对程序员来说至关重要,将成为脱颖而出的关键。整体而言,本文通过对基础架构的解析,让读者快速了解了架构设计在软件系统开发中的关键作用,以及基础架构对应用开发的重要性。

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

全部留言(144)

  • 最新
  • 精选
  • 小青蛙/ka
    置顶
    当计算在本地完成,我们用的就是操作系统本身;而计算在云端完成时,我们用的就是云服务了,这时候操作系统就成为了我们使用这些云服务的管道。 既然人们用的是服务,那么用什么管道连接到这个服务就无所谓了。管道和管道的区别将仅在两方面存在:体验和是否能接入这些服务(比如Palm WebOS是否有微博客户端)。要是未来的应用程序都在浏览器中接入,那么第二个区别基本就不存在了。 from https://36kr.com/p/18656

    作者回复: 是这样

    2019-04-16
    2
    44
  • 落石
    置顶
    管道化可否理解为随着浏览器成为事实意义上应用的使用平台,操作系统的功能变得单一,单一到只为浏览器提供服务,从逻辑概念上可以理解为服务器与浏览器之间数据传输的管道?

    作者回复: 是这个意思

    2019-04-16
    3
    212
  • hua168
    人精力有限,如果什么都懂,那不是不精了?通才?还能做架构师吗?还是“一专多能”,先“专”,精通一样;再“多能”,了解其它技术?

    作者回复: 挺好的问题。架构师绝对不是要把自己打造为全才。架构师掌控全局的核心思想是打通经络,让自己的内力在全身自然流通,浑然一体。在不影响理解的情况下,你需要放弃很多实现细节的专研,但有一天你需要细节的时候,你能够知道存在这些细节并且快速钻研进去。

    2019-04-21
    4
    61
  • 1900
    “一旦某种浏览器流行起来,开发人员都在浏览器上做应用,那么必然会导致底层操作系统管道化”,我可以理解成微信(移动端的浏览器)和小程序(微信上的应用)么?如果可以这样类比,那微信岂不是会被安卓和iOS这些手机操作系统封杀😂

    作者回复: 你不觉得现在已经有些微妙了么,苹果和腾讯之间

    2019-04-16
    2
    36
  • paradox
    许老师,能简短地说下你理解的“架构思维”?

    作者回复: 我的理解比较朴素:架构就说分解系统,明确每个子系统(或模块)的规格。架构思维就是分解系统的思考方式(方法论)。

    2019-04-17
    32
  • flyCoder
    突然觉得离架构师还有好远。。。

    作者回复: 架构能力的构建不是0到1的突变,进一分有进一分的欢喜。加油

    2019-04-18
    2
    15
  • hua168
    老师,我能问一个题外话吗? 像我这种在中小公司30多岁才的小运维,发现面试很多都卡年龄,很多中小公司大一点的直接pass掉,基本不给你面试的机会,发展方向是什么?构架师是不是一种选择?目前情况是: 1. 一些常用环境的搭建 1)web:nginx、apache 2)数据库:mysql、mongoDB、生产环境只用到主从,mongoDB副本集,mysql群集没用 3)负载均衡:nginx、haproxy 4)版本控制:git(gitlab) 5)监控:zabbix 6)容器docker,在学k8s 7)日志:ELK 8)测试:用AB压力测试多 9)DevOps:主要是gitlab+jenkins 10)编程:shell、会点简单的python/django、会点简单的php/thinkphp5、java/srpingBoot(在学) 11)大数据:还没开始学 2. 去年才学编程java,之前一直用shell脚本,学java主要是考虑j: 1) java传统,成熟教程多 2).维护更好的维护java web网站 3)可以大数据 4)主要是通过java来加强运维专业的python,达到能运维开发的目标 网络(自学完CCNP)、linux和编程,这3样编程是最弱的,打算加强一下,学2年开发向运维开发方向,慢慢管理/架构师方向发展,但是发现并不是和自己想的那样,很多公司卡年龄,面试机会少很多。所以有点迷茫不知道怎办?老师经历丰富,能简单指点一下吗,感激!

    作者回复: 天助自助者,能力提升为先。年龄不是问题。

    2019-04-22
    3
    14
  • hua168
    老师请问一下: 1.现在运维开发基本上都用Go,python慢慢变少了,java也少用了……现在运维开发是要学Go吗? 2.架构师要学数据结构和算法吗?很多都说算法是“内功”,中小公司好像学了都基本用不到 3. 现在不是流行docker+k8s、微服务、DevOps、AI等,那些主流技术都要了解吗? openstack云计算这两年基本不讲了,是否不用学习?

    作者回复: 1、学Go挺好,建议学,生产效率很高的开发工具。 2、算法用不到其实更准确的说法是想不到,或者是已经有人实现了你只需要调用,不需要自己实现。但是只有你知道了背后的道理,你才能明白算法对应的限制在哪里,什么情况下应该用什么算法。 3、高阶的技术可以按需学,按精力学,更根本的还是要打好基础,这也更有助于你判断是否应该深入学习某些技术。

    2019-04-21
    13
  • 苟范儿
    业务写的多了,很容易把自己眼光局限在搬砖的思维中。 今天又重新温习了下冯诺伊曼体系结构,技术迭代再快。优秀的基础理论、底层架构变化却很少。 冯诺伊曼体系架构:运算器、控制器、存储器、输入、输出设备,二进制数,顺序执行。

    作者回复: 👍

    2019-04-17
    13
  • lanya
    现有的软件及系统都是以基于冯·诺依曼体系架构的,以后的量子计算机、生物计算机将是完全另外一种形态的体系,会颠覆现有的体系。

    作者回复: 这有可能,我下一篇会提到这件事情

    2019-04-16
    13
收起评论
显示
设置
留言
99+
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部