当今许多新型应用都属于数据密集型(data-intensive)而不是计算密集型(compute-intensive)。对于这些类型应用,CPU的处理能力往往不是第一限制性因素,关键在于数据量、数据的复杂度及数据的快速多变性。
数据密集型应用通常也是基于标准模块构建而成,每个模块负责单一的常用功能,例如,许多应用系统都包含以下模块:
可靠性:当出现意外情况如硬件、软件故障、人为失误等,系统应可能继续正常运转,虽然性能可能有所降低,但确保功能正确。
可扩展性:随着规模的增长,例如数据量、流量或复杂性,系统应以合理的方式来匹配这种增长。
可维护性:随着时间的推移,许多新的人员会参与到系统开发和运维,以维护现有功能或适配新场景等,系统都应高效运转。
对于软件,典型的期望包括:
可能出错的事情称为错误(fault)或故障,系统可以应对错误则称为容错(fault tolerant)或者弹性(resilient)
容错总是指特定类型的故障(而不是各种可能的类型),这样的系统才更有实际意义
故障(fault)与失效(failure)不完全一直。故障通常被定义为组件偏离其正常规格,而失效意味系统作为一个整体停止,无法向用户提供所需的服务,我们不太可能将故障概率降为零,因此通常设计容错机制来避免从故障引发系统失效