数据密集型应用系统设计(1)

文章目录

  • 可靠、可拓展可维护的应用系统
    • 软件系统最重要的三个特征:
      • 可靠性
      • 可扩展性
      • 可维护性
    • 小结

可靠、可拓展可维护的应用系统

软件系统最重要的三个特征:

可靠性

即使发生了某些错误,系统也可继续正常工作

故障(faults),或者叫错误,与失效(failure)不同。失效意味着系统作为整体停止服务,故障只是组件偏离了正常规格。

常见的故障包括硬件故障、软件错误、人为失误。

可扩展性

可扩展性用于描述系统应对负载增加能力。

负载由负载参数来描述。参数的最佳选择取决于系统的体系结构。

系统性能描述:在批处理系统中我们更看重吞吐量,在在线系统中更看重服务的响应时间。

由于即使是反复发送、处理相同的请求的响应时间变化也有可能很大,所以我们采用百分位数。中位数可以被称为50百分位数,表示为p50。

应对负载增加通常是在垂直扩展(升级到更强大的机器)和水平扩展(将负载分布到多个更小的机器)之间取舍。一般的做法是将数据库运行在一个节点上,直到高扩展性或高可用性的要求而不得不做水平扩展。

可维护性

可运维性:方便运营团队来保持系统平稳运行。

简单性:简化系统复杂性,使新工程师能够轻松理解系统。

简化系统设计主要意味着消除意外方面的复杂性,而不是减少系统功能。其最好手段之一是抽象,例如高级编程语言、SQL。

可演化性:后续工程师能够轻松改进系统,也被称为可延伸性、可塑性。

目标是轻松修改数据系统,使其适应不断变化的需求。

小结

可靠性意味着即使发生故障,系统也可以正常工作。故障包括硬件(一般是随机、不相关的)、软件(系统的,更难处理)、人为方面。容错技术可以很好地隐藏某种类型故障,避免影响最终用户。

可扩展性是指负载增加时,有效保持系统性能的相关技术策略。首先要理解如何定量描述负载和性能。对于可扩展的系统,增加处理能力的同时,还可以在高负载情况下持续保持系统的高可靠性。

可维护性意味着很多方面,本质是为了让工程和运营团队更加轻松。良好的抽象可以帮助降低复杂性,并使系统更加易于修改和适配新场景。良好的可操作性意味对系统健康状况有良好的可观测性和有效的管理方法。

你可能感兴趣的:(计算机系统,系统架构)