前言
此系列文章主要翻译自书籍《Design Data-Intensive Application》。这本书的主要目的是探讨思考如何思考数据系统的方法,那些系统是如何设计的,为什么这么设计,以及其中解决的问题。现在数据是系统的核心,这本书可以帮助我们如何设计好的数据系统,也可以解答我们对其他数据系统如何设计的好奇。
第一部分 数据系统的基础
第一章 可用、可扩展、可维护
可靠性
软件满足可靠性要做到以下几点:
- 应用按照用户预想的那样工作
- 在预期的数据量和负载下,性能足够好
- 阻止未认证的接入和使用
这些组合起来就是“正确地工作”。那么我们可以将“可靠性”理解为“即便事情出错,也能一直正确地工作”。
事情出错,我们可以称之为“故障”,系统能够处理这些故障,那么它们就是由弹性的。并不是所有的故障都要考虑,比如地球突然毁灭,需要把服务器放到太空中备份。我们只需要考虑一些特定的故障。
硬件故障
添加备份硬件,系统要能接受整台机器的丢失。
软件错误
很难遇见,一般是节点间系统性的错误。
软件故障经常会沉睡一段时间,环境变化后才会触发。
没有快速解决的方法,一些建议:仔细思考假设场景和交互;进程隔离;允许进程停止和重启;测量、监控和分析生产系统的行为;如果一个系统需要提供保障(比如一个消息队列,入站消息数要等于出站消息数),那么要求它能够在运行时持续监测自己,并在出现矛盾时发出警告。
<