每一次系统故障多是因为程序运行失败或错误,偶尔也会有因为环境问题,比如:机器掉电、硬件故障、虚拟机错误等。但即便是环境原因引发的系统故障,也是因为程序编写考虑不足导致的。曾经就碰到因为硬盘故障导致服务假死(挂起)引发的系统故障,这就是程序的编写并未考虑硬盘 I/O 阻塞导致的挂起问题。
实际上,现今程序运行环境的可靠性并不如我们想象的高,而程序员很容易忽视这一点。之所以容易忽视是在于平时的开发、调试中我们很难遇到这些环境故障,而在一个部署规模稍大的分布式系统中这样的环境故障就比较常见了。
每一次系统故障多是因为程序运行失败或错误,偶尔也会有因为环境问题,比如:机器掉电、硬件故障、虚拟机错误等。但即便是环境原因引发的系统故障,也是因为程序编写考虑不足导致的。曾经就碰到因为硬盘故障导致服务假死(挂起)引发的系统故障,这就是程序的编写并未考虑硬盘 I/O 阻塞导致的挂起问题。
实际上,现今程序运行环境的可靠性并不如我们想象的高,而程序员很容易忽视这一点。之所以容易忽视是在于平时的开发、调试中我们很难遇到这些环境故障,而在一个部署规模稍大的分布式系统中这样的环境故障就比较常见了。