架构演进与迁移模式(Strangler/防腐层/绞杀者)

共 18 题
#

1. Anti-Corruption Layer 在对接遗留系统时的适配器作用

A ACL 只做日志,不转换
B ACL 让新系统直接依赖遗留系统
C ACL 是适配器,负责模型/协议转换并隔离遗留系统,保护新系统领域模型 ✓ 正确答案
D ACL 会污染新系统模型
#

2. 迁移完成后如何安全移除旧实现与兼容代码

A 兼容代码应长期保留
B 迁移完成后立即删除所有旧代码
C 确认无流量依赖后先停旧实现,再删旧代码与兼容代码,并监控验证 ✓ 正确答案
D 移除旧实现无需确认无流量
#

3. 历史数据回填中大表迁移的批处理分片、进度记录与对账校验,回填失败如何断点续传

A 一次性全量迁移大表
B 用分片批处理 + 进度记录 + 对账校验,失败从断点续传 ✓ 正确答案
C 迁移失败必须从头开始
D 回填无需对账校验
#

4. Throttling/Rate Limiting 在网关层的多租户公平策略

A 按租户设置独立配额与隔离,避免单一租户抢占资源 ✓ 正确答案
B 所有租户共享一个限流桶
C 限流只按全局 QPS
D 多租户限流无需公平
#

5. Strangler Fig 模式如何逐步把单体流量迁移到新服务

A 旧单体始终保留全部流量
B 一次性迁移所有功能
C 无法切流,只能全量切换
D 通过路由按功能逐步把流量从单体切到新服务,逐个替换 ✓ 正确答案
#

6. 事件最终一致下的幂等消费者设计中唯一事件 ID + 去重表/布隆过滤器,确保重复消费不产生副作用

A 用唯一事件 ID + 去重表保证重复消费只执行一次,布隆过滤器加速判重 ✓ 正确答案
B 重复消费一定产生副作用
C 去重表与业务无需在同一事务
D 布隆过滤器无误判
#

7. 错误分类(可重试/不可重试/程序错误)对系统弹性意义

A 程序错误无需处理
B 所有错误都应重试
C 业务校验失败应无限重试
D 可重试错误用重试恢复,不可重试错误不重试,程序错误需修复 ✓ 正确答案
#

8. 防腐层(ACL)如何在新旧系统间做模型与协议转换

A ACL 让新系统直接依赖旧系统协议
B ACL 做模型与协议转换,隔离新旧系统,新系统用干净模型 ✓ 正确答案
C ACL 只做日志
D ACL 不封装旧系统
#

9. API 版本兼容演进中新增字段给默认值、删除字段先废弃后移除,语义化版本如何约束破坏性变更

A 删除字段立即移除
B 新增字段给默认值、删除字段先废弃后移除,语义化版本用 MAJOR 约束破坏性变更 ✓ 正确答案
C 破坏性变更不需升版本
D 新增字段必须所有消费者配合
#

10. Circuit Breaker 与重试/超时在云原生的标准组合

A 超时防无限等待,重试恢复瞬时错误,熔断防故障扩散 ✓ 正确答案
B 熔断后仍无限重试
C 超时与弹性无关
D 重试无需熔断兜底
#

11. Outbox 模式如何保证领域事件可靠发布,本地事务同时写业务表与 Outbox 表,独立进程轮询 Outbox 发布到消息队列

A 事件直接发消息,不落库
B 业务表与 Outbox 表在不同事务写
C 本地事务同时写业务表与 Outbox 表,独立进程轮询发布到 MQ,保证可靠发布 ✓ 正确答案
D 发布失败事件丢失
#

12. Bulkhead(舱壁)模式如何隔离故障避免雪崩

A 用独立资源池隔离依赖,一个依赖故障不影响其他,避免雪崩 ✓ 正确答案
B 所有依赖共享一个线程池
C 舱壁无法隔离故障
D 一个慢依赖会拖垮所有依赖是正常设计
#

13. 事件驱动架构如何降低界限上下文间的耦合

A 事件驱动增加耦合
B 上下文必须直接同步调用
C 上下文通过事件交互,发布方不依赖订阅方,降低耦合 ✓ 正确答案
D 订阅方依赖发布方实现
#

14. 如何用路由/网关在调用方无感下切流新旧实现

A 网关按规则把请求分发到新旧实现,调用方无感,支持灰度与回滚 ✓ 正确答案
B 调用方需感知新旧实现
C 切流无法回滚
D 网关只做负载均衡,不切流
#

15. 绞杀者模式与蓝绿/灰度发布的配合关系

A 绞杀者一次性替换全部
B 绞杀者与发布方式无关
C 蓝绿/灰度无法回滚
D 绞杀者决定迁移哪些功能,蓝绿/灰度决定如何安全切流,配合实现可控迁移 ✓ 正确答案
#

16. 绞杀者模式中如何保证新旧系统双写的数据一致性窗口与对账机制?

A 双写丢失数据无影响
B 双写是同步的,无一致性窗口
C 对账无需修复差异
D 双写存在短暂一致性窗口,靠缩短窗口与对账机制保证最终一致 ✓ 正确答案
#

17. 单体拆分时如何用“模块边界先行”(模块化单体)降低迁移风险,什么信号表明可以拆成微服务?

A 先模块化单体划清边界,降低拆服务风险,再按独立部署/团队/数据边界信号拆微服务 ✓ 正确答案
B 应直接拆成微服务,跳过模块化单体
C 模块边界不清晰也能安全拆服务
D 拆微服务与数据边界无关
#

18. 并行运行期的监控中新旧系统错误率与延迟基线对比、差异告警与自动回滚阈值如何设定

A 无需对比基线
B 只要新系统延迟略高就立即回滚
C 对比新旧系统错误率与延迟基线,设差异告警与自动回滚阈值,异常自动回滚 ✓ 正确答案
D 告警与回滚阈值无关