6.2 KiB
tags, create time
| tags | create time | ||||
|---|---|---|---|---|---|
|
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 的自我保护机制在生产环境中什么时候该关?"请给出你的完整回答,包括:
- 自我保护机制的作用是什么
- 关了会有什么风险
- 什么场景下可以关
- 如果不关应该如何监控
答题框架提示:
- 解释机制的原理和风险
- 分场景讨论
- 给出具体的监控建议
参考答案与解析
选择题答案
| 题号 | 正确答案 | 解析 |
|---|---|---|
| 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:参考答案要点:
- 机制作用:自我保护防止因网络抖动大量实例被误判为宕机而批量剔除,避免雪崩式下线。
- 关了的风险:一旦关闭,心跳稍微延迟就会被剔除,一批实例被认为故障全部移除,调用方拿不到任何健康实例。
- 适用场景:金融类对一致性要求高的场景可以考虑关闭;普通互联网业务不建议关,误判的危害大于不调用的危害。
- 监控建议:生产环境必须监控
eureka.server.selfPreservationThreshold指标,当该阈值被触发时告警通知运维介入检查。
评分标准:答出任意 2 个要点即可得满分;完全正确需覆盖全部要点。