tulip notes
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Star-Lord

希望一天成为大师的学徒
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • SCAlibaba-Nacos

  • SCAlibaba-Sentinel

  • 负载均衡与服务调用

  • 服务熔断与降级

  • 服务链路追踪与网关

  • 分布式实战与细节

  • 其他

    • 版本选择
    • 面试问题A
      • 使用微服务时,使用过那些注册中心,它们各自有什么优劣
        • CAP问题
        • 注册中心的各自区别
      • 负载均衡中,客户端负载和服务端负载的区别
        • 客户端负载均衡(Client-Side Load Balancing)
        • 服务端负载均衡(Server-Side Load Balancing)
    • 配置细节或文件
  • 《SpringCloud》笔记
  • 其他
EffectTang
2024-11-01
目录

面试问题A

# Cloud面试问题

# 使用微服务时,使用过那些注册中心,它们各自有什么优劣

这是一个经典的CAP问题。

CAP 理论是分布式系统设计中的一个重要概念,由 Eric Brewer 在 2000 年提出,并由 Seth Gilbert 和 Nancy Lynch 在 2002 年证明。CAP 理论指出,一个分布式系统最多只能同时满足以下三个特性中的两个。

# CAP问题

cap分别指的是:

一致性(Consistency):

  • 一致性要求所有节点在同一时间看到相同的数据。也就是说,当一个更新操作完成之后,所有的读取操作都应该返回最新的数据。
  • 例如,在一个分布式数据库中,当一个节点更新了一条记录,其他节点在读取这条记录时应该看到最新的值。

可用性(Availability):

  • 可用性要求每一个请求都能在有限时间内收到非错误的响应,而不保证返回的是最新版本的数据。
  • 例如,在一个分布式系统中,即使部分节点失效,系统仍然能够响应客户端的请求。

分区容忍性(Partition Tolerance):

  • 分区容忍性要求系统能够在网络分区的情况下继续运行。网络分区是指系统中的某些节点之间的通信失败,但这些节点本身仍然是正常的。
  • 例如,在一个分布式系统中,如果网络故障导致某些节点无法相互通信,系统仍然需要能够继续工作。

# 注册中心的各自区别

由于分布式系统无法同时满足这三个特性,因此在设计时需要根据具体需求进行权衡。常见的权衡方案包括:

CP(一致性 + 分区容忍性):

  • 优先保证一致性和分区容忍性,牺牲可用性。
  • 例如,Paxos 和 Raft 共识算法设计的系统通常是 CP 系统。在发生网络分区时,系统会选择暂停部分操作以保证数据的一致性。

AP(可用性 + 分区容忍性):

  • 优先保证可用性和分区容忍性,牺牲一致性。
  • 例如,许多 NoSQL 数据库(如 Cassandra)设计为 AP 系统。在网络分区时,系统仍然可以响应请求,但可能会返回旧数据或不一致的数据。

CA(一致性 + 可用性):

  • 优先保证一致性和可用性,牺牲分区容忍性。
  • 这种组合在实际的分布式系统中很少见,因为网络分区是不可避免的。如果一个系统不具有分区容忍性,那么在发生网络分区时,系统将无法正常工作。

在微服务架构中,注册中心通常需要在高可用性和分区容忍性之间做出权衡。以下是一些常见的选择:

Consul:

  • Consul 是一个高可用的分布式服务网格,它支持 CP 和 AP 模式。
  • 默认情况下,Consul 是一个 CP 系统,但在配置时可以选择 AP 模式以牺牲一致性换取更高的可用性。

Zookeeper:

  • Zookeeper 是一个高性能的协调服务,它是一个 CP 系统。
  • Zookeeper 优先保证一致性和分区容忍性,但在发生网络分区时,部分节点可能会不可用。

Nacos:

  • Nacos 在设计时考虑了 CAP 理论的权衡,它主要是一个 AP(可用性 + 分区容忍性)系统
  • Nacos 支持多数据中心部署,可以跨多个地理区域提供高可用性和容灾能力。在网络分区或其他故障情况下,Nacos 仍然能够响应客户端的请求,确保服务的连续性和稳定性。

# 负载均衡中,客户端负载和服务端负载的区别

# 客户端负载均衡(Client-Side Load Balancing)

客户端负载均衡是指客户端负责选择后端服务器来发送请求。客户端会维护一个后端服务器列表,并根据某种负载均衡算法(如轮询、随机、最少连接数等)选择一个服务器进行通信。

# 服务端负载均衡(Server-Side Load Balancing)

服务端负载均衡是指客户端将请求发送到一个中间层(如负载均衡器),负载均衡器再将请求转发到后端服务器。负载均衡器负责选择后端服务器,并将请求分发给选定的服务器。比如:如 Nginx、HAProxy、AWS ELB 等,就是典型的服务端负载均衡。

#

#面试
上次更新: 2025/04/23, 16:23:16
版本选择
配置细节或文件

← 版本选择 配置细节或文件→

最近更新
01
面向切面跟自定义注解的结合
05-22
02
时间跟其他数据的序列化
05-19
03
数据加密与安全
05-17
更多文章>
Theme by Vdoing | Copyright © 2023-2025 EffectTang
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式