Files
autumn-recruitment/05.架构/service-governance/服务注册与发现_test.md
T

6.2 KiB
Raw Blame History

tags, create time
tags create time
test/review
architecture
arch/microservice
service-discovery
2026-08-09 12:00

服务注册与发现 — 测试题

概述

本测试覆盖服务注册/注销/续约流程、Eureka/AP 取向、Nacos CP/AP 可切换、Consul 特性以及 CAP 理论在注册中心中的体现。共 10 道题目(6 选择 + 3 填空 + 1 简答)。


一、选择题(6道,由浅入深)

难度阶梯: Q1-Q2 基础概念 → Q3-Q4 核心原理 → Q5-Q6 深入应用/边界场景

Q1(基础)— 考察定义层面

服务注册的标准三步走流程是:

A. 注册 → 查询 → 注销 B. 注册 → 续约(心跳)→ 注销 C. 发现 → 健康检查 → 更新 D. 心跳 → 续约 → 下线

Q2(基础)→

Eureka 的自我保护机制在什么条件下会被触发?

A. 15 分钟内超过 50% 实例未发送心跳 B. 15 分钟内超过 85% 实例未发送心跳 C. 所有实例同时宕机 D. 注册中心 CPU 使用率超过 90%

Q3(进阶)— 核心原理

Nacos 在同一套代码中为什么能既支持 AP 又支持 CP 模式?

A. 通过动态切换一致性协议实现,运行时修改配置即可 B. 两种模式使用不同的数据存储路径和服务类型 C. Nacos 有两个独立的二进制进程分别处理 AP 和 CP D. 基于 K8s Namespace 做逻辑隔离

Q4(进阶)— 比较/辨析

Consul 的三个独特优势不包括以下哪一项?

A. Serf Gossip 协议的成员管理 B. 丰富的健康检查方式(TCP/HTTP/script/Docker/TTL) C. 内嵌 Raft 一致性的 KV 存储 D. 原生支持多级缓存(本地 + 远程)

Q5(深入)— 场景推理

某金融系统对数据一致性要求极高,在选型服务注册中心时最应该考虑哪个因素?

A. 需要高可用容忍短暂不一致 → 选 Eureka B. 需要强一致性 → 选 Nacos CP 模式或 Consul TCP 接口 C. DNS 接口最快 → 选 Consul DNS D. 客户端缓存最可靠 → 选 Eureka 并关闭自我保护

Q6(深入)— 源码级/边界场景

PACELC 理论对 CAP 做了哪些补充?

A. PACELC 指出无分区时也需权衡延迟与一致性 B. PACELC 指出分区恢复后需先进行数据同步再服务 C. PACELC 引入了第三维度——性能,CAP 只有两个维度 D. PACELC 证明 CAP 定理在分布式系统中是错误的


二、填空题(3道)

F1 — 填空1

Eureka 的消费者会缓存服务列表,默认每 _____ 秒刷新一次。这样即使注册中心完全不可用,消费方依然能根据本地缓存继续通信。

提示: 回顾原文 Eureka 小节中关于客户端缓存的描述。

F2 — 填空2

Consul 的 DNS 接口因为是 _____ 模式的——直接指向随机节点读取本地内存缓存,不经过 Raft 日志——所以速度极快但可能读到旧数据。

提示: 回想 CAP/PACELC 表格中 Consul DNS 的行。

F3 — 填空3

Nacos 通过 _____ 实现环境隔离(dev/test/prod),每个命名空间有独立的服务和配置视图。底层基于 PostgreSQL 存储元数据。

提示: Nacos 的环境隔离术语来自 Kubernetes。


三、简答题(1道)

S1

面试官问你:"Eureka 的自我保护机制在生产环境中什么时候该关?"请给出你的完整回答,包括:

  • 自我保护机制的作用是什么
  • 关了会有什么风险
  • 什么场景下可以关
  • 如果不关应该如何监控

答题框架提示:

  1. 解释机制的原理和风险
  2. 分场景讨论
  3. 给出具体的监控建议

参考答案与解析

选择题答案

题号 正确答案 解析
Q1 B 标准三步:① 注册服务(POST /register);② 心跳续约(维持 lastDirtyTimestamp);③ 主动注销(DELETE /deregister)。故障场景下感知延迟通常为续约超时周期(30~90 秒)。
Q2 B 15 分钟内超过 85% 实例未发心跳触发保护窗口锁定,不再剔除任何实例。宁可多调几次失败也不主动剔。
Q3 B 不同模式使用不同的存储路径和服务类型:CP 用 nacos.v1.auth.user(Raft),AP 用 nacos.v1.instance(Distro)。不是运行时切换而是物理隔离的路径。
Q4 D Consul 的优势是 Serf Gossip、丰富健康检查、KV 存储。多级缓存不是 Consul 的功能,那是 Redis/Caffeine 层的职责。
Q5 B 金融系统需要强一致性,应选 Nacos CP 模式(Raft)或 Consul TCP 接口(Raft Leader)。Eureka 最终一致不适合。DNS 可能 stale。关闭自我保护会增加雪崩风险。
Q6 A PACELC = PA(Partition tolerant, choose Availability)+ EC(Else, choose Between Consistency and Latency)。CAP 只讨论分区场景,PACELC 补充了无分区时的 L/C 权衡。

填空题答案

题号 答案 解析
F1 30 消费者每 30 秒刷新一次本地缓存。结合 Eureka 的续约超时周期(通常 30~90 秒),故障检测延迟约在一个续约周期左右。
F2 AP Consul DNS API 直接读取随机节点的本地内存缓存,不走 Raft 日志,因此速度快但读到的可能是 stale data。如果需要强一致则走 TCP 端口。
F3 namespace Nacos 的 namespace 相当于 K8s 的 Namespace,实现 dev/test/prod 的物理隔离。每个 namespace 独立存储服务列表和配置数据。

简答题参考答案

S1:参考答案要点:

  1. 机制作用:自我保护防止因网络抖动大量实例被误判为宕机而批量剔除,避免雪崩式下线。
  2. 关了的风险:一旦关闭,心跳稍微延迟就会被剔除,一批实例被认为故障全部移除,调用方拿不到任何健康实例。
  3. 适用场景:金融类对一致性要求高的场景可以考虑关闭;普通互联网业务不建议关,误判的危害大于不调用的危害。
  4. 监控建议:生产环境必须监控 eureka.server.selfPreservationThreshold 指标,当该阈值被触发时告警通知运维介入检查。

评分标准:答出任意 2 个要点即可得满分;完全正确需覆盖全部要点。

关联笔记