Logo
Section 1 / 6

系统的基本架构

基于TPM面试的技术基础进行深入探讨。

导入

系统的基本架构

基于TPM面试的技术基础进行深入探讨。

结构的强度取决于其基础,因此深入理解基础知识至关重要。本课程将帮助我们了解客户端如何与服务器通信,并解释系统中的其他基本要素,如TCP、IP、HTTP、缓存等。

构建系统时会使用多种架构类型,最常见的有对等网络(peer-to-peer)和客户端-服务器架构。这两种架构的区别在于:对等网络侧重于网络资源共享,而客户端-服务器架构则侧重于信息共享,其中中心服务器负责存储数据。下面我们详细探讨这两种架构,并了解它们在系统设计中的应用。

客户端-服务器架构

客户端-服务器架构是系统设计中的关键组成部分,广泛应用于各类系统中。互联网就是一个典型的客户端-服务器架构实例,所有计算机都通过这种架构相互通信。

接下来我们来理解它的运作机制:

客户端发起数据请求,服务器则返回相应的响应。换句话说,服务器监听来自网络的传入请求,并为客户端提供服务。

客户端与服务器通过网络连接。在分布式系统中,各个组件可以分布在不同位置,但能够独立完成各自的任务。

...
Architecture

为了更深入地理解这一机制,我们以一个经典的面试题为例:

“当你输入一个网址,比如 www.educative.io,但客户端无法找到该网站的服务器时,会发生什么?”

协议

协议是指用于网络通信的一组规则。根据应用程序的不同用途,存在多种类型的协议。在上述 www.educative.io 的例子中,使用的协议是 HTTP 或 HTTPS。

HTTP 是 Web 应用中最常用的协议,它基于 TCP/IP 协议,用于在万维网上传输 HTML 文件、图片及其他内容。该协议的默认端口是 80。

DNS

我们上述问题中最关键的部分是 DNS。DNS 解决了将请求路由到正确服务器这一核心难题。正如前面所述,客户端可能并不知道 www.educative.io 服务器在全球的具体位置。

所有通信都在网络上进行,每台设备都有一个唯一的地址。因此,www.educative.io 的服务器也拥有一个有效的 IP 地址。我们需要建立一种映射关系,将人类可读的名称(如 www.educative.io)与唯一标识该服务器的 IP 地址对应起来。这个映射问题正是由 DNS 来解决的。

DNS 全称为 域名系统(Domain Name System)。它为我们提供了易于记忆的人类可读地址,计算机可以通过这些地址查找对应的 IP 地址。这非常有用,因为记住网站的 IP 地址几乎不可能,但记住域名却很容易。因此,DNS 在当今互联网运行和网站访问中扮演着至关重要的角色。

也许你会认为 DNS 只是一个简单的地址映射目录。但你是否想过,如今全球有多少个网站?是否有可能将所有域名记录集中存储在一个单一服务器中?

在设计解决方案之前,我们必须考虑多个因素,例如冗余性、数据复制、客户端延迟等。显然,仅靠一个独立的服务器难以实现全球范围内的高效、可扩展的服务。

...
Search

DNS 作为分布式系统

DNS 实际上是一个分布式系统,其组件分布于不同地理位置,并通过网络进行通信。

它是一个庞大的分层分布式系统,由多个独立的服务器维护各自的注册信息,并为客户端提供服务。

DNS 具备分布式系统的全部特性,包括容错能力、高可用性、一致性、可扩展性和安全性。

DNS 如何工作

  • 缓存无处不在。每个浏览器都会维护自己的 DNS 缓存,保存用户最近访问过的网站信息。当我们输入 www.educative.io 时,浏览器会先检查自身的 DNS 缓存。如果找到对应记录,就直接返回 IP 地址并发送请求。
  • 如果浏览器缓存中没有 www.educative.io 的记录,则客户端会向其互联网服务提供商(ISP)发送查询请求。如果 ISP 的缓存中有该记录,就会返回已缓存的 IP 地址。
  • 假设连 ISP 的缓存也没有结果,请求将被转发至 DNS 解析器。DNS 解析器是一个服务器,它从根服务器开始逐级查询域名。它掌握着顶级域名(TLD)服务器的信息。在本例中,educative.io 是目标网站,因此 .io 是顶级域名,根服务器会指向 .io 的 TLD 服务器。
  • 接下来,查询过程递归地向下进行,进入 Educative 所属的域名区域。解析器会查询该域下的服务器,获取二级域名 “educative” 对应的 IP 地址。
  • 最后,DNS 将查询结果缓存一段时间。下次再访问时,无需重新查询域名服务器。

总结

在客户端-服务器架构中,所有的通信和请求都是通过网络完成的。HTTP 是客户端与服务器之间最常用的通信协议。

客户端发出请求并提交查询,服务器接收请求并处理后,通过网络返回响应。

攻克行为面试(软技能)

分布式系统的组成部分