第93篇
极客时间《许式伟的架构课》课程笔记。
“地基”:应用程序的基础架构
- 所有智能电子设备都可以称为“电脑”,所有电脑都可以统一看作由【中央处理器+存储+一系列输入输出设备】构成
- 中央处理器=CPU,负责按照指令执行命令;存储负责保存数据,包括要执行的命令,都是以数据形式保存在存储中
- 电脑能完成复杂而多样化的工作主要依赖两点:一是可编程性,指令序列的无穷可能性使得电脑能够做的事情存在无穷可能;二是开放设计的外部设备支持,CPU只和外部设备交换数据,并不理解这些设备具有什么能力,也不理解交换的数据代表什么含义
- 电脑的 CPU 是一个非常简洁的模型,它只读入和写出数据,对数据进行计算,这就是冯诺依曼计算机体系
- 编程语言+编译器解决了编写软件的困难,不需要直接用机器指令编写软件,更容易理解,便于维护
- 操作系统解决了软件治理问题和基础编程接口问题,实现多个软件在同一个电脑上和平共处,建立协作秩序
- 基础架构解决与业务无关的通用性问题,通常以独立软件存在,所以也称为基础软件,例如Linux、Nginx、MySQL、PHP等,这些基础软件极大降低了应用开发的难度
- 在软件服务化的大趋势下,很多基础软件都以互联网服务的方式提供,这就是“云计算”
完整的程序架构
- 在只需要关注应用程序本身的业务问题如何构建时,我们说自己是在设计应用程序的业务架构(或者叫“应用架构”)
- 客户端应用程序与服务端应用程序有非常大的区别,因为客户端要解决多样性问题,如操作系统,PC有Windows、Mac、Linux等、手机有iOS、Android、window mobile等,还有各种设备,如笔记本、平板电脑、手表、汽车等
- 浏览器是第一个想消除客户端多样性,并且跨平台提供统一编程接口的软件,可以将浏览器看作操作系统之上的操作系统,小程序可以理解为是移动版浏览器
总结
- 架构师需要的第一个能力是宏观的全局掌控能力
- 架构就是分解系统,明确没给子系统(或模块)的规格
- 架构思维就是分解系统的思考方式(方法论)
- 架构能力是内功,写代码的能力是武功招式,内功好,武功招式的运用才能得心应手
- 架构能力的提升,本质上是对你的知识脉络(全身经络)的反复梳理与融会贯通的过程