一个大型多租户平台共享同一套应用和数据库资源。某个租户的异常流量耗尽公共连接池,导致所有租户同时不可用。若目标是把类似故障限制在一小部分租户内,较合适的架构方向是()。
单元化架构把工作负载复制成多个相对独立的Cell,并将用户或租户稳定路由到其中一个。单个Cell过载或故障时,影响被限制在该Cell承载的范围内。
选项分析
错误。更大的共享实例可能提高容量,但故障影响范围仍是全体租户。
错误。CDN只能缓解部分静态或可缓存流量,公共数据库连接池仍可能被耗尽。
正确。独立Cell配合稳定路由可限制资源争抢和故障扩散。
错误。失去租户身份后更难实施配额、隔离、审计和路由。
本题为什么容易错
单元化架构容易被理解成“多部署几份”。若多个Cell仍共用一个无隔离的数据库、队列或控制面,公共依赖故障依旧可能让全站一起中断。
简短答案
如何避免一个租户的异常流量拖垮所有用户,正确答案是 C(按稳定分片规则把租户分配到多个相对独立的Cell,每个Cell具备完整服务能力并限制跨Cell共享故障点)。单元化架构把工作负载复制成多个相对独立的Cell,并将用户或租户稳定路由到其中一个。单个Cell过载或故障时,影响被限制在该Cell承载的范围内。
易混淆概念对比表
| 概念 | 本题判断 | 区别要点 | 记忆提示 |
|---|---|---|---|
| 把所有租户继续集中到一个更大的单体实例中 | 本题干扰项 | 错误。更大的共享实例可能提高容量,但故障影响范围仍是全体租户。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 只增加首页CDN缓存,不调整后端共享资源 | 本题干扰项 | 错误。CDN只能缓解部分静态或可缓存流量,公共数据库连接池仍可能被耗尽。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 按稳定分片规则把租户分配到多个相对独立的Cell,每个Cell具备完整服务能力并限制跨Cell共享故障点 | 本题正确答案 | 正确。独立Cell配合稳定路由可限制资源争抢和故障扩散。 | 看到题干核心场景时优先联想到它 |
| 关闭租户识别,让所有请求使用同一匿名身份 | 本题干扰项 | 错误。失去租户身份后更难实施配额、隔离、审计和路由。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
本题易混淆选项怎么区分
- 把所有租户继续集中到一个更大的单体实例中:错误。更大的共享实例可能提高容量,但故障影响范围仍是全体租户。
- 只增加首页CDN缓存,不调整后端共享资源:错误。CDN只能缓解部分静态或可缓存流量,公共数据库连接池仍可能被耗尽。
- 关闭租户识别,让所有请求使用同一匿名身份:错误。失去租户身份后更难实施配额、隔离、审计和路由。
知识点详解
单元化架构将完整工作负载复制为多个相对独立的单元,使用租户ID、账户ID或其他稳定键进行分片路由。每个Cell有明确容量边界,可独立部署、监控和恢复。它能缩小故障影响范围,但会增加路由、数据分片、跨Cell操作和运维复杂度。设计时还要评估全局控制面和共享服务,避免它们重新成为单点。
备考速记
扩容让系统扛得多,Cell让故障坏得少;稳定分片,减少共因。
Cell-based Architecture 在Blast Radius场景中的作用
若平台有1000个租户,分成10个Cell,单Cell故障的理论用户影响可从全部租户缩小到约十分之一。实际效果取决于分片均衡和共享依赖是否真正受控。
同类题怎么考
- 根据多租户资源争抢选择故障隔离架构。
- 识别Cell架构中仍可能造成共同失效的共享依赖。
Cell-based Architecture 在系统架构设计师软考中的考法
题干强调“限制影响范围、租户隔离、局部故障”时,优先考虑Cell或舱壁式隔离;只增加实例数解决的是容量,不一定解决共同故障域。
解题思路
题目真正问的不是“怎样扛更多流量”,而是“怎样少坏一片”。如果所有租户继续共用同一个连接池,机器再大仍保留共同故障点。把租户稳定分到多个完整Cell,每个Cell有独立容量和故障边界,某个租户失控时最多影响所在Cell,所以选 C。
考点定位
Cell不是普通横向扩容实例。关键在于完整能力、稳定分片和故障隔离,尤其要减少会让所有Cell共同失败的共享依赖。
易错提醒
- 路由规则不稳定,同一租户的请求不断跨Cell跳转。
- 业务数据分在Cell内,但全体仍共享容量很小的中心鉴权服务。
- 没有设计Cell级监控和扩容,局部过载直到用户投诉才发现。
备考提示
- 画三格Cell,分别标出租户集合、应用、数据和配额,再圈出仍共享的依赖。
- 比较普通副本扩容和Cell隔离:前者先看吞吐,后者先看影响范围。
你可能还想了解
- Cell架构和普通集群有什么区别?
- 单元化架构怎样限制爆炸半径?
- 多个Cell还能不能共享数据库?
本文小结
单元化架构按稳定规则把租户分到多个相对独立的完整Cell,使过载和故障尽量局限在单个Cell,而不是影响所有用户。