跳到主要内容

题目 41 - 题目 15

41.Nginx 支持哪些负载均衡调度算法?​

  1. weight 轮询(默认):
  • 功能:按权重比例分配请求到不同的后端服务器。
  • 特点:后端服务器权重值越大,分配到的请求越多。服务器故障时,Nginx 会自动将其从队列中剔除。
  • 适用场景:适用于后端服务器硬件配置不同,需要根据性能调整请求分配的场景。
  1. ip_hash:
  • 功能:根据客户端 IP 地址的哈希结果将请求固定分配给某台后端服务器,有助于维持会话状态。
  • 特点:每个客户端固定访问同一台服务器。
  • 适用场景:适用于需要保持会话状态的 Web 应用。
  1. fair:
  • 功能:根据后端服务器的响应时间动态调整请求分配,响应时间短的服务器分配到更多请求。
  • 特点:结合了 weight 轮询和 ip_hash 的优点,能更智能地分配请求。
  • 注意:Nginx 默认不支持 fair 算法,需要安装 upstream_fair 模块。
  • 适用场景:适用于需要根据服务器性能实时调整负载的场景。
  1. url_hash:
  • 功能:根据访问的 URL 的哈希结果将请求分配给固定的后端服务器,有助于提高缓存效率。
  • 特点:每个 URL 固定访问后端的一台服务器。
  • 注意:Nginx 默认不支持 url_hash 算法,需要安装 hash 软件包。
  • 适用场景:适用于 Nginx 作为静态服务器时,提高缓存效率的场景。

42.正向代理和反向代理分别是什么?​

正向代理​

正向代理是客户端和原始服务器之间的中介。客户端发送请求到代理服务器,代理服务器转发请求到目标服务器,并将响应返回给客户端。其特点包括:

  • 客户端明确知道要访问的服务器。
  • 服务器只知道请求来自代理服务器,不知道具体客户端。
  • 用途:访问受限资源、缓存加速、访问授权、记录用户访问行为、隐藏用户信息。

反向代理​

反向代理隐藏了服务器集群的详细信息,客户端无感知代理的存在。其作用包括:

  • 分发请求到多个后端服务器,实现负载均衡。
  • 保护内网安全,作为公网访问的前端。

43.encodeURIComponent 和 encodeURI 的区别​

  • escape():这是最古老的 Javascript 编码函数,它对 ASCII 字母、数字和特定标点符号("@ * _ + - . /")之外的字符进行编码。虽然这个函数现在已经不推荐使用,但由于历史原因,它在一些地方仍然被采用。

  • encodeURI():这个函数是专门用于对整个 URL 进行编码的。它不会对 ASCII 字母、数字、特定标点符号以及 URL 中有特殊含义的符号(如"; / ? : @ & = + $ , #")进行编码。编码后,它会输出符号的 UTF-8 形式,并在每个字节前加上"%"符号。

  • encodeURIComponent():这个函数用于对 URL 的组成部分进行个别编码,而不是对整个 URL 进行编码。与 encodeURI()不同的是,encodeURIComponent()会对"; / ? : @ & = + $ , #"这些在 encodeURI()中不被编码的符号进行编码。具体的编码方法与 encodeURI()相同。

44.强缓存和协商缓存分别是什么?​

浏览器缓存分类:

  • 强缓存:浏览器直接从本地缓存获取资源,无需与服务器通信。
  • 协商缓存:浏览器与服务器进行一次通信,由服务器决定是否使用缓存。

强缓存与协商缓存的区别:

  • 强缓存无需向服务器发送请求,而协商缓存需要。
  • 在 Chrome 中,强缓存的请求状态码为 200 (from cache),而协商缓存为 304 (not modified)。

强缓存控制:

  • Expires:HTTP 1.0 规范,指定资源失效的绝对时间。
  • Cache-Control:HTTP 1.1 规范,常用 max-age 指定资源的相对有效期。

协商缓存控制:

  • Last-Modified/If-Modified-Since:基于文件最后修改时间。
  • Etag/If-None-Match:基于服务器生成的资源唯一标识。

45.什么是对象存储 OSS?​

对象存储 OSS(Object Storage Service)是一种云存储服务,提供海量、安全、低成本、高持久的存储解决方案。它具有与平台无关的 RESTful API 接口,允许在任何应用、任何时间、任何地点存储和访问任意类型的数据。

  1. 存储空间(Bucket):Bucket 是存储对象(Object)的容器,具有地域、访问权限、存储类型等配置属性。
  2. 对象(Object):对象是 OSS 存储数据的基本单元,由元信息、用户数据和文件名组成,通过唯一的 Key 标识。
  3. 地域(Region):地域代表 OSS 的数据中心位置,用户可以根据费用和请求来源选择合适的地域创建 Bucket。
  4. 访问域名(Endpoint):Endpoint 是 OSS 对外服务的访问域名,根据地域和访问方式的不同,Endpoint 也会有所变化。
  5. 访问密钥(AccessKey):AccessKey 包括 AccessKey ID 和 AccessKey Secret,用于身份验证。AccessKey ID 用于标识用户,而 AccessKey Secret 用于加密签名字符串和验证签名字符串。
  6. 存储类型:OSS 提供四种存储类型:标准、低频访问、归档、冷归档,以适应不同的数据访问频率和成本要求。
Loading Comments...