混沌工程:为未知做好准备吧

发表于:2022-1-29 09:20

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:方正    来源:51Testing软件测试网原创

#
混沌
  在最简单的C/S模型当中,一次网络通讯会发生这样的过程:
  1.客户端将消息发送到网络上。
  2.网络向服务器发送消息。
  3.服务器验证消息。
  4.如果需要,服务器更新其状态。
  5.服务器将回复发送到网络上。
  6.网络向客户端发送回复。
  7.客户端验证回复。
  8.如果需要,客户端更新其状态。
  在这个过程中可能发生的所有故障排列是令人难以置信的。例如,网络随时可能出现故障,数据存储可能出现故障或过载,或者验证逻辑可能失败导致应用程序崩溃。应对这一挑战的传统方法是测试。但是测试解决的问题常常是在有一个期望结果的前提下,通过断言来验证已知条件,例如结果是否是我们期待的,函数结果返回是否正确。
  但随着分布式系统变得越来越复杂,测试已经达到极限。它通常无法解决生产环境的复杂性,例如发生在网络上的随机故障和其他奇怪的间歇性错误;配置限制和配置漂移;未知的呢?你怎么能测试你不知道的东西?
  例如,在实例动态启动和停止的系统中,如果任何实例磁盘空间不足会发生什么情况?如果一个实例没有剩余空间来写入日志,它在大多数情况下会快速失败,这是一个真正的问题,因为快速失败会产生一个黑洞。因为它失败得很快,通常会欺骗负载均衡器,认为该实例可以自由地接收更多请求,而这反过来也会导致更多的失败。
  如果我们能更早地发现这一点,我们就可以事先进行改进并避免中断。例如:
  1 — 使用日志轮换。
  2 — 使用集中式日志服务。
  3 — 监控磁盘空间。
  4 — 在每周运营会议上审查指标。
  5 — 当设备上只剩下 10% 的磁盘空间时发出一些警报。
  幸运的是,有一种实践可以帮助解决这种未知数——正如你可能猜到的,混沌工程。

......
查看更多精彩内容,请点击下载:
  版权声明:本文出自《51测试天地》第六十四期。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号