最近看分布式系统的相关文章。无论是分布式计算的MapReduce或是分布式存储的GFS,一致性的raft算法等等,都无不提到分布式中的容错性,每一块都对容错性进行了大篇幅的描述说明。Google的分布式系统是非常典型的基于机器随时可能发生故障,客户端不应该感知到的基础进行搭建的。从系统设计之初他们就考虑到这一点。
回过头来看日常的程序设计,常常会强调程序的鲁棒性,即要求无论输入输出或程序运行在什么样的机器、机器出现怎么样的问题,程序都应该可以正常执行、正常退出且不应该得到完全不正确的结果。
很多人都知道程序鲁棒性,容错性的重要性,如同许多人都知道TDD是Test Drive Develop,但是知道是一回事,做到又是另一回事。所以谷歌成为了谷歌,其他人成为了其他人。