好了,现在我们可以确定的一点是:每个编写或开发软件的人都需要像分布式系统工程师 一样去思考。但这句话到底意味着什么?在实际中,它意味着:丢弃那种单计算机(节 点)的思考模式(single-computer mode of thinking)。
直到最近,我们才可以将计算机视为一个相对确定性的东西(a relatively deterministic thing)。当编写一个在某台机器上运行的代码时,我们能够确定性地假设很多东西,例如 ,内存查询的方式。但现在已经没有应用还运行在单台机器上了 —— 云就是这个时代的计 算机(the cloud is the computer now),它就像一个生命系统(living system),一 直在持续不断地变化,尤其是在越来越多的公司开始采用持续交付这种新范式的过程中。
因此,你必须开始:
接受这样的假设:支撑你的软件运行的系统一定会发生故障 对为什么会发生故障以及故障可能会以怎样的形式发生做出预案 针对这些预案设计数据收集方案 这并不是像说一句“我们需要更多测试”那么简单。传统的测试哲学中,假定 所有测试用例都是能够描述出来的,但在分布式系统中这一点不再成立。(这并不是说 测试不重要了,而是说测试不再是万灵药。)
当处于一个分布式环境、并且大部分故障模 式都是无法提前预测也无法测试时,监控就成了唯一的理解应用行为的方式。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。