14

分章自测题(四)

·25 分钟

第5章(5.1–5.4)。微服务板块(第4、5章合计)占 ACA 考试 40% 权重,这一章偏"工具链"——消息队列、稳定性、压测、监控,产品名字多,但每个产品解决的问题很明确,抓住"谁解决什么问题"就不容易混。

建议用法:先自己想答案,再看解析。做错的不用死记答案,回头把对应章节那一段再看一遍,搞清楚"为什么"比记住"是什么"更重要。


第5章自测:消息队列和应用工具产品体系

单选题

1. 引入消息队列最直接的两个价值是?

选项内容
A加密传输和身份认证
B异步解耦和削峰填谷
C数据库备份和容灾
D前端页面渲染加速

正确答案:B

解析:消息队列的核心价值就两个——异步解耦(生产者发完消息就走,不用等消费者处理完,一方的抖动不会传导给另一方)和削峰填谷(流量洪峰先堆在队列里,消费者按自己的节奏慢慢消费)。这两个词考试里经常成对出现。


2. 高并发场景下同步调用容易引发雪崩,问题的根源是什么?

选项内容
A数据库表结构设计不合理
B同步调用把"生产请求的速度"和"处理请求的速度"绑在了一起
C服务器的操作系统版本太旧
D没有使用 HTTPS 协议

正确答案:B

解析:同步调用意味着上游发了请求就必须等下游处理完才能释放资源。一旦下游顶不住,上游的连接和线程资源也会被占满,压力沿调用链逐级往上传导,最终演变成级联故障(雪崩)。消息队列就是为了打断这种绑定。


3. RocketMQ 最典型的定位是什么?

选项内容
A海量日志采集管道
B业务消息——订单、支付、库存这类对可靠性和事务性要求高的场景
C前端静态资源分发
D大数据离线批处理

正确答案:B

解析业务事务选 RocketMQ,海量数据管道选 Kafka——这是最简单的选型口诀。RocketMQ 原生支持事务消息、顺序消息、延时消息、死信队列,天然适合和交易强相关的业务场景。A 是 Kafka 的定位。


4. 关于 RocketMQ 的历史,下列说法正确的是?

选项内容
A是 LinkedIn 开源的项目
B2012年阿里自研,是中国第一个非 Hadoop 生态的 Apache 顶级项目
C从未开源,只有阿里云商业版
D基于 Kafka 二次开发而来

正确答案:B

解析:RocketMQ 2012年阿里自研并开源,2016年捐给 Apache,2017年毕业成为顶级项目——是中国第一个非 Hadoop 生态的 Apache 顶级项目。A 说的是 Kafka,Kafka 才是 LinkedIn 开源的。


5. 下列哪种场景最适合用 Kafka 而不是 RocketMQ?

选项内容
A订单支付状态变更通知
B需要事务消息保证最终一致性的场景
C日志采集聚合和大数据实时流处理
D需要延时消息和死信队列的业务场景

正确答案:C

解析:Kafka 的核心优势是超高吞吐量,基于顺序追加日志的存储模型,天然适合海量数据管道。A、B、D 这些对事务语义、消息功能有高要求的场景,RocketMQ 更合适。


6. 限流、降级、熔断三者的共同点是什么?

选项内容
A都在"牺牲一部分"来保住"更重要的部分"
B都是在系统空闲时执行的预防措施
C都需要双倍的服务器资源
D都是前端层面的优化手段

正确答案:A

解析:限流牺牲超阈值的请求、降级牺牲非核心功能、熔断牺牲对已出问题下游的调用——方式不同,但本质都是局部牺牲,保全大局


7. 某个依赖服务已经持续返回错误,调用方应该采取什么措施?

选项内容
A限流——限制请求速率
B降级——关掉非核心功能
C熔断——停止调用该服务,一段时间后小流量尝试恢复
D重试——不断重试直到成功

正确答案:C

解析:关键词"依赖服务已经持续出错"→ 熔断。继续打请求过去只会越打越糟,不如先断开,等一段时间后小流量探测它是否恢复。限流是保护自己不被外部流量压垮,降级是主动放弃非核心功能,都不是针对"下游已经挂了"这个场景。D 无限重试是雪崩的帮凶。


8. AHAS 的流控降级模块底层基于哪个开源项目?

选项内容
AChaos Monkey
BSentinel
CPrometheus
DEnvoy

正确答案:B

解析:AHAS 流控降级 = Sentinel 的商业化托管版本。Sentinel 是阿里巴巴双十一技术体系里的核心流量控制组件(开源)。Chaos Monkey 是 Netflix 的混沌工程工具,Prometheus 是监控,Envoy 是服务网格代理。


9. 混沌工程的核心理念是什么?

选项内容
A等故障发生后再排查原因
B在生产或接近生产的环境中主动注入故障,提前验证系统的容错能力
C给所有服务加上最高级别的安全防护
D用代码审查代替测试

正确答案:B

解析:混沌工程 = 与其祈祷不出故障,不如主动制造可控的故障,验证系统是不是真的扛得住。Netflix 的 Chaos Monkey 是这个理念的代表——随机杀掉生产实例,逼团队把系统设计得能容忍单点故障。A 是"救火模式",混沌工程反对的恰恰是这种被动方式。


10. AHAS 的三个模块形成一条什么样的闭环?

选项内容
A架构感知(知道系统长什么样)→ 流控降级(出问题时兜底)→ 故障演练(提前验证兜底有效)
B日志采集 → 指标监控 → 链路追踪
C代码编译 → 自动测试 → 自动部署
D需求管理 → 代码审查 → 制品发布

正确答案:A

解析:AHAS 三模块——架构感知让你看清依赖关系,流控降级在出问题时兜底,故障演练提前验证兜底机制管不管用。B 说的是 ARMS 的能力,C 和 D 说的是 DevOps/云效。


11. PTS 压测报告里,P99 指标的含义是什么?

选项内容
A系统有 99% 的概率不会崩溃
B99% 的请求响应时间都低于这个值
C系统可以承受 99 个并发用户
D99% 的数据已经持久化

正确答案:B

解析:P99 是分位数指标——99%的请求响应时间都低于这个值。为什么看 P99 而不只看平均值?因为平均值容易被大量正常请求"拉低",掩盖少数用户的糟糕体验。P99 能反映真实的用户体验下限。


12. 可观测性的三大支柱是什么?

选项内容
ACPU、内存、磁盘
BMetrics(指标)、Logs(日志)、Traces(链路追踪)
C前端、后端、数据库
D开发、测试、运维

正确答案:B

解析:业界公认的可观测性三大支柱——Metrics(QPS/错误率这些数字指标)、Logs(系统运行的文本记录)、Traces(一次请求跨服务的完整路径)。ARMS 正是覆盖这三块的一站式产品。


13. ARMS 的前端监控模块(RUM)站在什么角度看问题?

选项内容
A服务器端的 CPU 和内存占用
B真实用户浏览器的角度——页面加载速度、首屏时间、JS报错
C数据库的查询性能
D消息队列的消费延迟

正确答案:B

解析:RUM = Real User Monitoring,关键词是"Real User"——不是从服务端看自己跑得好不好,而是从真实用户浏览器的角度看页面加载快不快、有没有白屏、JS 有没有报错。这个视角是其他监控手段替代不了的。


14.(场景题)完美日记大促改造方案中,用 PTS 做常态化压测、用 AHAS 做限流降级,改造后大促吞吐量提升了多少倍?

选项内容
A5 倍
B10 倍
C50 倍
D100 倍

正确答案:C

解析:完美日记 2020年4月三周年大促,系统吞吐量相比半年前提升了 50 倍。这个案例基本是第5章全套产品(ACK + Spring Cloud Alibaba + PTS + AHAS + 链路追踪)在真实大促场景的完整闭环。


多选题

M1.(3个)消息队列的核心角色包括?

选项内容
A生产者(Producer)
B消费者(Consumer)
C主题(Topic)
D负载均衡器(SLB)
E域名解析服务(DNS)

正确答案:A、B、C

解析:消息队列围绕三个核心角色——生产者发消息、消费者收消息、Topic 给消息分类。中间还有 Broker(消息服务器)负责暂存。D 和 E 是网络层的组件,和消息队列的核心模型无关。


M2.(3个)关于限流、降级、熔断,匹配正确的是?

选项内容
A限流——限制单位时间请求量,超过阈值直接拒绝
B降级——主动放弃非核心功能,保住核心链路
C熔断——依赖服务持续失败时,暂停对它的调用
D限流——依赖服务出错时,停止调用它
E降级——提高所有功能的响应速度

正确答案:A、B、C

解析:D 把限流和熔断搞混了——限流是控制请求速率保护自己,熔断是停止调用已出问题的下游。E 也不对——降级是放弃非核心功能,不是提速。记法:限流保护自己,降级放弃非核心,熔断隔离下游


M3.(3个)AHAS 的三大模块包括?

选项内容
A流控降级
B架构感知
C故障演练
D链路追踪
E代码托管

正确答案:A、B、C

解析:AHAS 三件套——流控降级(Sentinel 商业版)、架构感知(自动画依赖拓扑)、故障演练(混沌工程实践)。D 是 ARMS 的能力,E 是云效 Codeup 的能力。


M4.(3个)关于性能测试的类型,匹配正确的是?

选项内容
A负载测试——逐步加压到预期负载,验证正常流量下系统是否达标
B压力测试——持续加压超过预期直到系统崩溃,找出真实上限
C稳定性测试——长时间维持负载,检查是否有内存泄漏等累积问题
D负载测试——直接把系统压到崩溃
E压力测试——只测5分钟就出结论

正确答案:A、B、C

解析:三种测试回答不同的问题——负载测试问"正常流量下行不行",压力测试问"上限在哪",稳定性测试问"长时间跑会不会出问题"。D 把负载测试和压力测试搞混了,E 是不严谨的做法。


M5.(3个)ARMS 的核心功能模块包括?

选项内容
A应用监控——无侵入探针采集应用性能数据
B链路追踪——TraceID/Span 机制可视化请求路径
C前端监控(RUM)——从真实用户浏览器角度看体验
D消息队列管理——管理 RocketMQ 集群
E容器编排——管理 Kubernetes 集群调度

正确答案:A、B、C

解析:ARMS 四大模块是应用监控、链路追踪、前端监控(RUM)、Prometheus 监控——都围绕"看得见"这个主题。D 是消息队列产品自己的事,E 是 ACK 的事。记法:ARMS 只管"看",不管"跑"


第5章补充题

单选题(续)

15. 系统可用性常说的"四个9"(99.99%),一年大概能容忍多长时间的故障?

选项内容
A约 8.7 小时
B约 52 分钟
C约 5 分钟
D零故障

正确答案:B

解析:三个 9(99.9%)≈ 一年 8.7 小时故障;四个 9(99.99%)≈ 一年约 52 分钟。每多一个 9,容忍的故障时间缩短约 10 倍。A 是三个 9 的数据,别搞混。


16. RocketMQ 原生支持的事务消息,解决的是什么问题?

选项内容
A保证消息的传输加密
B保证"发消息"和"改本地数据库"这两个操作的最终一致性
C保证消息按顺序消费
D保证消息在多个 Topic 之间自动路由

正确答案:B

解析:事务消息是分布式事务的一种轻量方案——比如下单时既要扣库存(改数据库),又要通知物流(发消息),事务消息保证这两步要么都成功、要么都不生效。C 说的是顺序消息,另一个功能。


17. Kafka 的超高吞吐量源于什么存储模型?

选项内容
A随机读写的关系型数据库
B基于顺序追加的日志(log),Partition 独立顺序写
C内存缓存,不做持久化
D分布式文件系统 HDFS

正确答案:B

解析:Kafka 的 Partition 各自独立做顺序追加写,顺序写磁盘的吞吐量远高于随机写,这是它海量吞吐的根基。而且 Partition 数量可以按需扩展,吞吐量几乎线性增长。


18.(场景题)大促期间系统压力大,团队决定暂时关闭"猜你喜欢"推荐功能,把资源留给下单支付。这属于什么措施?

选项内容
A限流
B降级
C熔断
D扩容

正确答案:B

解析主动放弃非核心功能,保住核心链路 = 降级。"猜你喜欢"是非核心的,下单支付是核心的。限流是控制请求速率,熔断是隔离已出问题的下游,这里的场景是主动选择"关掉什么"。


19. 全链路压测相比单场景压测的核心优势是什么?

选项内容
A只需要更少的测试时间
B能发现跨环节的短板——整体承载能力取决于链路上最弱的那一环
C不需要任何压测工具
D只测一个接口就够了

正确答案:B

解析:全链路压测模拟用户从进入网站到完成下单支付的完整路径,能暴露木桶效应——单独测某个接口可能很快,但串起来走一遍才发现瓶颈卡在另一个环节。PTS 正是脱胎于阿里双11全链路压测的方法论。


20. 分布式链路追踪的核心实现机制是什么?

选项内容
A每个服务独立记日志,手动拼接
B请求进来时生成全局唯一的 TraceID,随请求跨服务传递,每一跳记录一段 Span
C所有服务共享同一份日志文件
D只在网关层记录,不深入到各个服务

正确答案:B

解析:TraceID 是"线索",Span 是"片段"——一次请求跨十几个服务,TraceID 把它们串起来,每个 Span 记录某一跳的耗时和状态,最后拼成完整的调用链路图。这就是 ARMS 链路追踪模块落地的机制。


21. ARMS 和 SLS(日志服务)的关系是什么?

选项内容
A功能完全重复,只需要用其中一个
BARMS 侧重应用性能指标和链路追踪,SLS 侧重日志的统一存储和检索,两者配合覆盖更完整的可观测性
CSLS 是 ARMS 的子模块
DARMS 只管日志,SLS 只管指标

正确答案:B

解析:可观测性三大支柱里,ARMS 更偏 Metrics 和 Traces,SLS 更偏 Logs。两者各有侧重、配合使用,不是谁替代谁。D 说反了。


22.(场景题)申通快递云原生改造前的架构痛点是什么?

选项内容
A业务量太小,不需要微服务
B基于 VMware 虚拟化和 Oracle 数据库,业务逻辑耦合在存储过程里,环境不一致
C已经是完整的云原生架构,不需要改造
D使用了过多的微服务导致管理混乱

正确答案:B

解析:申通原来是典型的传统架构——VMware + Oracle,很多业务逻辑写在 Oracle 存储过程和触发器里,系统之间靠数据库同步工具传递数据。上云后用 ACK + 云数据库替代,先容器化解决环境一致性,再微服务化拆分业务。


多选题(续)

M6.(3个)RocketMQ 支持的消息类型/能力包括?

选项内容
A事务消息
B顺序消息
C定时/延时消息
D视频转码
EDNS 解析

正确答案:A、B、C

解析:RocketMQ 的消息能力很丰富——事务消息(保证本地数据库和消息的最终一致性)、顺序消息(保证消费顺序)、定时/延时消息(到指定时间才投递)、还有死信队列(消费失败的兜底)。D 和 E 跟消息队列无关。


M7.(2个)关于 Kafka 的适用和不适用场景,正确的是?

选项内容
A适合日志采集聚合和大数据实时流处理
B适合需要复杂事务消息语义的订单支付场景
C不适合数据分析(那是 MaxCompute/Spark 的活)
D适合把数据直接分发给终端用户
E不适合任何高吞吐场景

正确答案:A、C

解析:Kafka 管的是数据的搬运和缓冲——日志采集、流处理是它的主场。但数据分析是计算引擎的活,分发到终端是 CDN 的活,Kafka 不管"算"也不管"最后一公里"。B 的复杂事务语义是 RocketMQ 的强项。


M8.(3个)关于压测报告的核心指标,正确的是?

选项内容
ART(响应时间)衡量一次请求耗时多久
BTPS/QPS 衡量系统每秒处理的事务或请求数
CP99 比平均值更能反映真实的用户体验下限
D只要平均 RT 低就说明系统没问题
E错误率高说明压测工具出了 bug

正确答案:A、B、C

解析:D 是常见误区——平均值容易被大量正常请求拉低,1% 的用户等了 10 秒你看不到,P99/P95 才能暴露这种"长尾"问题。E 也不对——错误率高通常说明被测系统已经顶不住了,不是压测工具的问题。

💬

留言区待配置

部署 Twikoo 后端后,设置环境变量 NEXT_PUBLIC_TWIKOO_ENV_ID