第 13 章
分章自测题(三)
接下来第4章(4.1 + 4.2)。微服务板块(第4、5章合计)占 ACA 考试 40% 权重,是全卷最大头。
建议用法:先自己想答案,再看解析。做错的不用死记答案,回头把对应章节那一段再看一遍,搞清楚"为什么"比记住"是什么"更重要。
第4章自测:微服务和 Serverless 架构
单选题
1. 企业应用架构从单体走到微服务,中间经历了四个阶段。下列排列顺序正确的是?
| 选项 | 内容 |
|---|---|
| A | 单体 → 微服务 → SOA → 垂直 |
| B | 单体 → 垂直 → SOA → 微服务 |
| C | SOA → 单体 → 垂直 → 微服务 |
| D | 垂直 → 单体 → 微服务 → SOA |
正确答案:B
解析:四个阶段的逻辑是——单体改不动 → 按业务拆成几个独立应用(垂直)→ 引入 ESB 统一管通信(SOA)→ 去掉重中枢、彻底去中心化(微服务)。每一步都是为了解决上一步留下的问题。
2. 从 SOA 到微服务,最关键的转变是什么?
| 选项 | 内容 |
|---|---|
| A | 引入了 ESB 企业服务总线 |
| B | 去中心化——不再依赖一个重的中枢 |
| C | 所有服务共享同一个数据库 |
| D | 把所有功能打包在一个进程里 |
正确答案:B
解析:SOA 靠 ESB 这一个中枢统一管通信,ESB 本身容易成为瓶颈。微服务把治理能力下放到每个服务自己身上,用轻量级协议(HTTP/gRPC)直接通信。A 是 SOA 的特征,不是"从 SOA 到微服务"的转变;C 和 D 是更早期架构的特征。
3. EDAS 的定位是什么?
| 选项 | 内容 |
|---|---|
| A | 容器镜像仓库 |
| B | 一站式微服务 PaaS 平台,负责应用托管 + 微服务治理 |
| C | 纯粹的注册中心,只管服务发现 |
| D | 性能压测工具 |
正确答案:B
解析:EDAS(Enterprise Distributed Application Service)= 应用托管 + 微服务治理的 PaaS 平台。A 是 ACR,C 说的更像 Nacos/MSE 的一部分,D 是 PTS。记法:EDAS 管应用从生到死(部署→运行→扩缩容→发布→下线)。
4. EDAS 底层可以跑在哪些环境上?
| 选项 | 内容 |
|---|---|
| A | 只能跑在 ECS 虚拟机上 |
| B | 只能跑在容器/ACK 集群上 |
| C | ECS 虚拟机、容器、Kubernetes 都可以 |
| D | 只能跑在物理服务器上 |
正确答案:C
解析:EDAS 的优势之一就是部署形态灵活——ECS、容器、Kubernetes 都能跑,和第3章的 ACK 容器产品打通。这也是它三大优势之一(免运维、深度集成、部署形态灵活)。
5. Nacos 的全称是什么?
| 选项 | 内容 |
|---|---|
| A | Naming and Configuration Service |
| B | Dynamic Naming and Configuration Service |
| C | Network Access Control Service |
| D | Node Allocation and Coordination System |
正确答案:B
解析:Nacos = Dynamic Naming and Configuration Service,别漏了前面的 Dynamic。两个核心能力对应名字里的两个词:Naming → 服务发现(注册中心),Configuration → 配置管理(配置中心)。
6. 和 ZooKeeper、Eureka 相比,Nacos 的核心优势是什么?
| 选项 | 内容 |
|---|---|
| A | 只做注册发现,功能更纯粹 |
| B | 同时覆盖注册和配置两个能力,自带管理控制台 |
| C | 只做配置管理,不支持服务发现 |
| D | 需要更多运维投入,但性能最高 |
正确答案:B
解析:ZooKeeper 主要做注册发现,配置管理是附带的,运维门槛高;Eureka 只做注册发现,且已停更。Nacos 注册 + 配置二合一,自带管理控制台,运维门槛更低,是云原生场景的首选。
7. MSE(Microservices Engine)包含哪三个核心模块?
| 选项 | 内容 |
|---|---|
| A | 注册配置中心、微服务治理、云原生网关 |
| B | 容器编排、镜像仓库、服务网格 |
| C | 应用托管、数据库管理、日志采集 |
| D | 性能测试、混沌工程、链路追踪 |
正确答案:A
解析:MSE 三件套——①注册配置中心(托管版 Nacos/ZooKeeper/Eureka)②微服务治理(全链路灰度、无损上下线、离群实例摘除)③云原生网关(兼容 K8s Ingress,统一流量入口)。B 是容器产品家族,D 是第5章的产品。
8. MSE 和 EDAS 的关系,正确的说法是?
| 选项 | 内容 |
|---|---|
| A | MSE 和 EDAS 功能完全重复,不能同时使用 |
| B | EDAS 管应用托管和生命周期(偏 PaaS),MSE 管注册中心和网关(偏基础设施),两者可以搭配 |
| C | EDAS 是 MSE 的子产品 |
| D | MSE 管应用部署,EDAS 管注册中心 |
正确答案:B
解析:EDAS 偏 PaaS(管应用从生到死),MSE 偏基础设施(管注册中心、网关这些组件,不管应用部署本身)。两者可以独立用,也可以搭配:EDAS 管应用生命周期,MSE 管注册中心和网关。D 说反了。
9. Seata 的 AT 模式最核心的卖点是什么?
| 选项 | 内容 |
|---|---|
| A | 需要业务自己写 try / confirm / cancel 三个接口 |
| B | 业务代码不用写补偿逻辑,Seata 拦截 SQL 自动生成回滚日志,侵入性很低 |
| C | 只适合流程长、参与方多的业务编排 |
| D | 完全不支持回滚 |
正确答案:B
解析:AT = Automatic Transaction,核心就是"自动"——Seata 拦截 SQL 自动生成回滚日志,事务失败时自动反向补偿,开发体验接近本地事务。A 说的是 TCC 模式,C 说的是 SAGA 模式。
10. 下列分布式事务模式和适用场景的匹配,错误的是?
| 选项 | 内容 |
|---|---|
| A | AT——适合大多数数据库操作 |
| B | TCC——适合对性能和一致性要求极高的核心链路 |
| C | SAGA——适合流程长、参与方多的业务编排 |
| D | AT——适合不涉及数据库、纯内存计算的场景 |
正确答案:D
解析:AT 模式的工作原理是拦截 SQL 自动生成回滚日志——如果根本不涉及数据库操作,AT 就无从拦截,自然不适用。AT 的强项是数据库操作场景,不是纯内存计算。
11. 需要双倍资源、但切换瞬间完成且回滚也是一次性切回的发布策略是?
| 选项 | 内容 |
|---|---|
| A | 滚动更新 |
| B | 蓝绿发布 |
| C | 金丝雀发布(灰度发布) |
| D | 热修复 |
正确答案:B
解析:蓝绿发布 = 同时维护新旧两套完整环境,验证无误后一次性切流量。优点是切换瞬间完成、回滚也是一键切回;代价是需要双倍资源。滚动更新不需要双倍资源但新旧共存;金丝雀先放小流量验证,风险最小但验证周期长。
12. 金丝雀发布的核心思路是什么?
| 选项 | 内容 |
|---|---|
| A | 一次性把所有流量切到新版本 |
| B | 先把一小部分流量导到新版本,没问题再逐步放大比例 |
| C | 逐批替换旧版本实例 |
| D | 完全不发布,只在测试环境验证 |
正确答案:B
解析:金丝雀发布(又叫灰度发布)的精髓是风险可控——比如先放5%流量到新版本试水,没问题再10%→50%→100%。C 说的是滚动更新,做法相似但本质不同:滚动更新是逐批替换实例,金丝雀是按流量比例分配。
13. Serverless 到底是什么意思?
| 选项 | 内容 |
|---|---|
| A | 完全没有服务器 |
| B | 服务器依然存在,但运维责任从用户转移给了云厂商 |
| C | 用户必须自己管理所有服务器 |
| D | 只能在物理机上运行 |
正确答案:B
解析:Serverless ≠ 没有服务器,服务器依然存在,只是"管服务器"这件事变成了云厂商的事,用户只需要写业务逻辑。这是个常考的认知纠偏点。
14. 函数计算 FC 的计费方式是?
| 选项 | 内容 |
|---|---|
| A | 按购买的服务器数量月付 |
| B | 按函数实际的调用次数和执行时长付费,没有调用几乎不产生费用 |
| C | 一次性买断终身使用权 |
| D | 按代码行数计费 |
正确答案:B
解析:FC 是事件驱动的计算服务,计费按实际消耗(调用次数 × 执行时长),没有调用就几乎零费用——这正是 Serverless "按量付费"的核心价值,适合流量不确定、间歇性运行的场景。
15.(场景题)一家企业有大量已有的 Spring Boot 微服务应用,想上云但不想改代码,也不想管底层服务器。最适合用哪个产品?
| 选项 | 内容 |
|---|---|
| A | 函数计算 FC |
| B | SAE(Serverless 应用引擎) |
| C | ACK Pro 版 |
| D | ACR |
正确答案:B
解析:关键词"已有微服务应用 + 不改代码 + 不管服务器"直接指向 SAE。FC 要求把代码拆成函数粒度,不适合整个 Spring Boot 应用;ACK Pro 版需要用户自己管 Worker Node;ACR 是镜像仓库不是运行平台。SAE 支持 JAR/WAR/Docker 镜像直接部署,原有应用基本不用改造。
多选题
M1.(3个)微服务架构下,框架需要解决的问题包括?
| 选项 | 内容 |
|---|---|
| A | 服务注册与发现 |
| B | 配置管理 |
| C | 限流、熔断、降级 |
| D | 物理机的硬件采购 |
| E | 前端页面的 CSS 样式调整 |
正确答案:A、B、C
解析:微服务拆分后需要框架兜底的问题:服务怎么找到对方(注册发现)、配置怎么集中管理、调用链怎么容错(限流熔断降级)。D 和 E 跟微服务框架无关。
M2.(3个)关于 Dubbo 的历史,正确的说法是?
| 选项 | 内容 |
|---|---|
| A | 2008年在阿里内部诞生 |
| B | 2011年开源 |
| C | 从未暂停更新,一直保持活跃 |
| D | 2019年由 Apache 孵化毕业成为顶级项目 |
| E | 是用 Python 写的 |
正确答案:A、B、D
解析:C 说反了——2014年因为内部团队调整曾暂停更新,2017年才重启。E 也不对——Dubbo 是 Java 生态的 RPC 框架。时间线:2008年诞生 → 2011年开源 → 2014年暂停 → 2017年重启 → 2019年 Apache 毕业。
M3.(2个)关于 Dubbo3 和 Spring Cloud Alibaba 的选型,正确的说法是?
| 选项 | 内容 |
|---|---|
| A | 两者互斥,不能同时使用 |
| B | 团队已经在用 Spring Cloud 生态就选 Spring Cloud Alibaba |
| C | 对调用性能要求高或已有 Dubbo 基础就直接用 Dubbo3 |
| D | Dubbo3 不支持 gRPC 协议 |
| E | Spring Cloud Alibaba 不包含 Nacos |
正确答案:B、C
解析:两者不互斥——Dubbo3 可以作为 Spring Cloud Alibaba 的 RPC 层使用,A 说反了。D 不对——Dubbo3 原生支持 Triple 协议(兼容 gRPC)。E 也不对——Spring Cloud Alibaba 正是把 Nacos、Sentinel、Seata、RocketMQ 集成到 Spring Cloud 体系里的。
M4.(3个)关于三种发布策略,正确的说法是?
| 选项 | 内容 |
|---|---|
| A | 蓝绿发布需要双倍资源 |
| B | 金丝雀发布先把一小部分流量导到新版本验证 |
| C | 滚动更新不需要双倍资源 |
| D | 蓝绿发布的回滚需要很长时间 |
| E | 金丝雀发布和滚动更新完全一样 |
正确答案:A、B、C
解析:D 说反了——蓝绿发布的回滚是一次性切回旧环境,速度最快。E 也不对——滚动更新是逐批替换实例,金丝雀是按流量比例分配,维度不同。实际使用中最常见的是金丝雀 + 滚动的组合。
M5.(3个)关于 EDAS、SAE、FC 三者的区别,正确的是?
| 选项 | 内容 |
|---|---|
| A | EDAS 治理粒度是应用,用户需要规划实例规格和数量 |
| B | SAE 治理粒度是应用,用户不需要感知底层实例(自动伸缩) |
| C | FC 治理粒度是函数,用户完全不需要感知底层 |
| D | FC 适合长期稳定运行的核心微服务 |
| E | SAE 要求用户从零重写代码 |
正确答案:A、B、C
解析:三者是同一条谱系上"托管程度"的递进——EDAS 需要管实例 → SAE 自动伸缩不用管实例 → FC 连应用形态都不用管,只写函数。D 说反了——长期稳定的核心微服务适合 EDAS,FC 适合短时、事件触发的轻量任务。E 也不对——SAE 定位"零代码改造",原有 Spring Cloud/Dubbo 应用基本不用改。
M6.(2个)关于 Seata 分布式事务框架,正确的说法是?
| 选项 | 内容 |
|---|---|
| A | 目前是 Apache 孵化项目 |
| B | AT 模式通过拦截 SQL 自动生成回滚日志 |
| C | TCC 模式完全不需要业务写补偿逻辑 |
| D | 只支持 AT 一种模式 |
| E | Seata 是谷歌开源的项目 |
正确答案:A、B
解析:C 说反了——TCC 模式恰恰需要业务自己写 try / confirm / cancel 三个接口,开发量大但灵活;AT 才是"不用写补偿逻辑"的那个。D 不对——Seata 支持 AT、TCC、SAGA 三种模式。E 不对——Seata 是阿里开源的。
留言区待配置
部署 Twikoo 后端后,设置环境变量 NEXT_PUBLIC_TWIKOO_ENV_ID