应对复杂系统中的意外故障与复杂性挑战
在当今的软件系统中,复杂系统的故障问题日益引人关注。下面通过几个实际案例,来深入探讨复杂系统中可能出现的意外情况以及复杂性的本质。
案例一:客户引发的重试风暴
以一个电影流媒体服务的分布式系统为例,该系统主要包含两个子系统:
- 系统 R :存储个性化用户界面。根据用户 ID,返回符合该用户电影偏好的个性化界面,并会调用系统 S 获取用户的额外信息。
- 系统 S :存储用户的各种信息,如账户有效性和可观看内容等。由于数据量过大,系统 S 又分为两个子组件:
- S - L :负载均衡器,使用一致性哈希算法将读密集型负载分配到 S - D 组件。
- S - D :存储单元,仅包含完整数据集的一小部分。例如,一个 S - D 实例可能存储所有姓名以字母“m”开头的用户信息,另一个则存储以字母“p”开头的用户信息。
该系统的维护团队在分布式系统和云部署方面经验丰富,采取了诸多合理措施,如设置合理的回退机制、制定缩放策略以控制成本等。S - D 数据有冗余的节点内缓存,当磁盘缓慢时可从缓存返回稍旧的结果,还设置了错误率增加警报和异常检测机制。
然而,有一天客户 Louis 在火车上使用笔记本电脑的浏览器观看视频时,视频出现异常,他不小心掉落电脑,之后视频冻结。Louis 多次点击刷新按钮,由于火车处于信号盲区,请求被积压。当 WiFi 信号恢复时,100 个请求同时发送到服务器。
服务器端,系统 R 接收到 100 个
超级会员免费看
订阅专栏 解锁全文

32

被折叠的 条评论
为什么被折叠?



