系统设计入门
讲师:neetcode.io
口袋资源独家Neetcode付费课程,独家中英文字幕,配套资料齐全!
用不到1/10的价格,即可享受同样的高品质课程,且可以完全拥有,随时随地都可以任意观看和分享。
计算机结构
在进入系统设计流程之前,最重要的是要了解计算机的组成模块、它们的重要性以及它们在系统设计中的作用。
组件
磁盘
磁盘是计算机中的主要存储设备。它具有持久性,这意味着无论机器处于何种状态(开机或关机),数据都将被持久保存。大多数现代计算机在磁盘中存储的信息都在TB(兆兆字节)左右。
回顾一下,一个字节由 8 位组成,而比特是计算机中最小的计量单位–二进制计量单位,用0 或 1 表示。一兆位是10 12 个字节,即一万亿字节。USB 驱动器等磁盘存储设备的存储量可能达到GB(千兆字节),即10 9,或十亿字节。
您可能会遇到这样的术语:硬盘(HDD)和固态硬盘(SDD)。硬盘(HDD)和固态硬盘(SSD)都是持久存储设备,后者更受欢迎,速度也更快。不过,它的价格通常要高一些。
硬盘是机械式的,有一个读写头。硬盘使用时间越长,磨损就越大,速度也就越慢。固态硬盘的速度明显更快,因为它们没有活动部件,依靠电子方式读写数据(类似于 RAM)。
内存
随机存取存储器也用于存储信息,但通常比磁盘驱动器小得多。随机存取存储器的大小一般从 1GB 到 128GB 不等,因为随机存取存储器比磁盘空间昂贵得多。这样做的好处是,读写 RAM 的速度明显快于磁盘。例如,向 RAM 中写入 1 MB 的数据可能需要微秒级(百万分之一秒,或1/106 秒),而向磁盘中写入相同数量的数据可能需要毫秒级(千分之一秒,或1/103 秒)”。
注:这些数字只是粗略估计,随着硬件技术的改进可能会发生变化。
RAM 可将打开的应用程序保存在内存中,包括程序分配的任何变量
。内存通常被称为易失性内存,这意味着一旦关闭计算机,数据就会被删除。因此,在关闭计算机前将工作保存到磁盘中非常重要。
值得注意的是,内存和磁盘之间并不直接通信。它们依赖中央处理器来促进它们之间的数据传输。
中央处理器
中央处理器(CPU)是 RAM 和磁盘之间的中介。中央处理器也被称为计算机的 “大脑”,负责读写 RAM 和磁盘。
例如,当您编写代码并运行时,您的代码会被翻译成一组二进制指令存储在 RAM 中。这句话可以说得更清楚一些:”中央处理器读取并执行这些指令,其中可能涉及操作存储在 RAM 或磁盘中的数据。从磁盘读取数据的一个例子是打开文件系统中的文件并逐行读取。
所有计算都在中央处理器内完成,如加法/减法/乘法等。这只需几毫秒的时间。它从 RAM 中获取指令,解码这些指令并执行解码后的指令。在最底层,所有这些指令都以字节表示。
CPU 还包括一个高速缓冲存储器。高速缓冲存储器是一种速度极快的存储器,与 CPU 位于同一芯片上。
缓存
大多数 CPU 都有 L1、L2 和 L3 缓存,这些物理组件的速度比 RAM 快得多,但它们只能存储 KB 或几十 MB 的数据。
每次请求读取操作时,都会先检查缓存,然后再检查 RAM 和磁盘。如果请求读取的数据在缓存中,并且自上次访问以来没有变化,那么就会从缓存而不是 RAM 中获取数据。读写缓存比读写 RAM 和磁盘要快得多。缓存中存储的内容由操作系统决定。
缓存是一个重要的概念,应用于计算机体系结构之外的许多领域。例如,网络浏览器使用缓存来跟踪经常访问的网页,以便更快地加载它们。这些存储的数据可能包括 HTML、CSS、JavaScript 和图像等。如果数据在缓存网页时仍然有效,加载速度就会更快。但在这种情况下,浏览器使用磁盘作为缓存,因为进行互联网请求比从磁盘读取要慢得多。
高速缓存是 CPU 的一部分,这只是它比 RAM 快的部分原因。高速缓存就是所谓的 SRAM。如果您有兴趣,可以查看麻省理工学院的这一资料,其中提供了温和的介绍。
上图展示了 CPU、内存、高速缓存和磁盘如何在抽象层面上相互影响。
摩尔定律
摩尔定律是一种观测结果,它表明中央处理器中的晶体管数量每两年翻一番。从下图来看,这似乎是一个线性图,但从 Y 轴上的刻度可以看出,这是一个指数图。因此,在晶体管数量翻番的同时,计算机的成本却往往减半。然而,近年来,晶体管的数量以及计算机的速度开始趋于稳定。
结束语
这三种内存都有各自的用途。如果你正在写一篇文章,而电脑要关闭,你会希望把它存储在磁盘驱动器上。在执行多任务时,你希望打开的程序存储在内存中。在 Windows 系统中,如果多次打开文件资源管理器,你会发现每次打开的速度都会加快。这就是缓存。
既然我们已经了解了计算机体系结构,那么我们就可以开始了解应用程序体系结构,包括什么是分布式系统,它从开发人员和最终用户的角度提供了生产应用程序的基本剖析。