常见面试题18

简介: 正向代理代表客户端发起请求,隐藏客户端身份,用于访问控制与隐私保护;反向代理代表服务器接收请求,实现负载均衡与安全防护;CDN通过全球节点加速内容分发;Nginx可作反向代理实现轮询、权重等负载均衡策略;CAP定理指出分布式系统无法同时满足一致性、可用性与分区容错性。

什么是正向代理

正向代理是一种网络代理服务器的运作模式,它充当客户端与外部服务器之间的中间人,代理客户端发起的请求,并将这些请求转发给外部服务器。在正向代理的架构中,客户端无法直接访问目标服务器,而是通过正向代理服务器来代为发起连接。以下是正向代理的基本工作原理:

  1. 客户端发送请求:客户端向正向代理服务器发起请求,请求中包含了要访问的目标服务器的信息。
  2. 代理服务器转发请求:正向代理服务器接收到客户端的请求后,会代表客户端向目标服务器发起实际的连接请求。
  3. 目标服务器响应:目标服务器接收到代理服务器发起的连接请求后,会向代理服务器返回响应数据。
  4. 代理服务器响应客户端:代理服务器再将目标服务器的响应数据返回给客户端,客户端则认为这些数据是直接从代理服务器获取的。

常见使用场景:访问受限资源、保护客户端隐私、访问跨境内容

总的来说,正向代理充当客户端的代理,代替客户端发起连接和获取数据,为客户端提供了更多的灵活性和隐私保护。

什么是反向代理

反向代理(Reverse Proxy)是一种代理服务器的部署方式,它代表服务器接收客户端的请求,并将这些请求转发给内部的服务器。与正向代理不同,反向代理是对外隐藏了真实的服务器,并充当了客户端与内部服务器之间的中间人。客户端认为它们直接与反向代理通信,而不知道实际处理请求的是内部的服务器。

反向代理的工作流程如下:

  1. 客户端发送请求:客户端向反向代理服务器发送请求,通常是访问某个网站或服务。
  2. 反向代理处理请求:反向代理服务器接收到客户端的请求后,根据配置的规则和负载均衡策略,将请求转发给内部的一个或多个服务器。
  3. 内部服务器响应:内部服务器接收到来自反向代理的请求后,处理请求并生成响应数据。
  4. 反向代理返回响应:反向代理服务器将内部服务器的响应数据返回给客户端,客户端认为这些数据是直接从反向代理获取的。

反向代理的主要作用包括负载均衡、安全防护、缓存加速等。通过反向代理,可以提高服务器的性能、可靠性和安全性,同时隐藏了内部服务器的实际地址,增强了系统的安全性。

总的来说,反向代理充当服务器的代理,代替服务器处理客户端的请求和响应,为服务器提供了更好的性能和安全保护。

什么是CDN服务

CDN(内容分发网络)是指一组分布在全球各地的服务器网络,用于加速互联网上静态和动态内容的传输。CDN 服务通过将内容缓存到离用户更近的服务器上,以提高用户访问这些内容的速度和性能。CDN 的基本原理是利用就近性原则,让用户能够从距离更近、网络质量更好的服务器获取所需的内容,而不必直接访问原始服务器。

CDN 服务的主要特点包括:

  1. 加速访问速度:通过在全球各地部署服务器,CDN 可以使用户能够从距离更近的服务器获取内容,减少网络延迟,提高访问速度。
  2. 负载均衡:CDN 可以根据用户的位置和网络状况,自动将请求分发到最优的服务器,从而实现负载均衡,提高服务的稳定性和可靠性。
  3. 减轻源服务器压力:CDN 可以缓存大量的静态资源,并在用户请求时直接返回,减轻了源服务器的负担,提高了源服务器的处理能力。
  4. 安全防护:CDN 可以提供一定程度的安全防护,例如防御 DDoS 攻击、恶意请求等,保护源服务器免受攻击。

CDN 服务通常用于加速网站的访问速度,提高用户体验,同时也可以用于视频直播、软件分发等领域。许多大型的互联网公司和网站都会使用 CDN 服务来优化其内容的传输和分发。

总的来说,CDN 服务通过在全球范围内部署服务器,提高了内容的传输速度、稳定性和安全性,为用户和网站提供了更好的体验和保护。

Nginx的负载均衡

Nginx 是一个常用的高性能的 Web 服务器和反向代理服务器,它也可以用作负载均衡器。通过 Nginx 的负载均衡功能,可以将客户端的请求分发到多台后端服务器上,从而提高系统的性能、可靠性和可扩展性

Nginx 实现负载均衡的方式通常有两种:基于轮询的负载均衡和基于权重的负载均衡。

  1. 基于轮询的负载均衡:Nginx 默认的负载均衡方式是基于轮询的。当有新的请求到达时,Nginx 会按照事先配置好的后端服务器列表顺序,依次将请求转发给这些服务器。这样可以实现比较简单的负载均衡,但无法根据后端服务器的负载情况进行动态调整。
  2. 基于权重的负载均衡:除了默认的轮询方式外,Nginx 还支持基于权重的负载均衡。通过设置不同后端服务器的权重,可以让 Nginx 按照这些权重比例来分配请求,从而实现更灵活的负载均衡策略。

另外,Nginx 也支持其他负载均衡算法,如 IP 哈希、最小连接数等。这些算法可以根据具体的业务需求和场景选择合适的负载均衡策略。

CAP定理

分布式系统有三个指标:

  • Consistency(一致性)
  • Availability(可用性)
  • Partition tolerance (分区容错性)

它们的第一个字母分别是 CAP。Eric Brewer认为任何分布式系统架构方案都不可能同时满足这3个目标,这个结论就叫做 CAP 定理。

目录
相关文章
|
30天前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
259 2
|
28天前
|
负载均衡 算法 Java
【SpringCloud(3)】Ribbon负载均衡:IRule原理轮询算法;LB负载均衡;loadbalancer和IRule组件;Ribbon和Ngin负载均衡的区别
Spring Cloud Ribbon 是基于Netflix Ribbon实现的一套客户端的负载均衡工具 简单地说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时、重试等。就在在配置文件中列出Load Balancer(LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机链接等)去连接这些机器。我们很容易使用Ribbon实现自定义的负载均衡算法
314 136
|
28天前
|
数据库 微服务
常见面试题19
BASE理论提出“基本可用、软状态、最终一致性”,是分布式系统中对CAP定理的实践妥协。相比强一致的刚性事务(ACID),它属于柔性事务,强调高可用与最终一致,适用于Seata等分布式事务方案中的AT、TCC、SAGA模式,而非传统2PC的强一致性。
40 7
|
30天前
|
缓存 监控 算法
常见面试题17
本文介绍如何使用Sentinel配置限流,包括启动控制台、引入依赖、设置QPS或线程数规则,并讲解滑动窗口算法在时间窗口限流中的应用。同时概述了Gateway网关的路由、鉴权、限流、缓存、监控等核心作用,及其基于过滤器链的请求处理机制与常见内置过滤器的使用方式。
80 0
|
29天前
|
人工智能 搜索推荐 UED
一个牛逼的国产AI自动化工具,开源了 !
AiPy是国产开源AI工具,结合大语言模型与Python,支持本地部署。用户只需用自然语言描述需求,即可自动生成并执行代码,轻松实现数据分析、清洗、可视化等任务,零基础也能玩转编程,被誉为程序员的智能助手。
|
存储 缓存 负载均衡
Nginx入门笔记
Nginx入门笔记
513 0
|
2月前
|
SQL 关系型数据库 MySQL
四、Sqoop 导入表数据子集
在实际数据导入场景中,我们经常只需要数据库中的一部分数据,比如按条件筛选的行、特定的几列。这篇文章详细讲解了如何使用 Sqoop 的 --where、--columns、--query 等方式灵活实现子集导入,配有完整示例和注意事项,助你更精准地控制数据流向 HDFS 或 Hive。
99 1
|
29天前
|
存储 缓存 安全
c盘清理软件推荐
c盘清理软件推荐
|
1月前
|
XML SQL Java
常见面试题15
Spring Boot配置优先级:命令行参数 > 系统属性 > application.properties > .yml > .yaml;自动配置基于@Import与条件注解,SpringBoot3使用xxx.imports替代spring.factories。自定义starter需分离starter与autoconfigure模块。MyBatis支持XML或注解映射结果集,参数传递可用@Param或直接传对象/Map。
90 4
http://www.vxiaotou.com