本文对《设计数据密集型应用》第一章中的可靠性、可扩展性和可维护性几个关键概念进行归纳总结。
一、可靠性
-
概念:即使系统发生意外故障,它仍能继续正常运行。
-
意义:可靠性非常重要,因为许多严重故障往往是错误处理不当造成。
-
实现方式:
(1) 处理硬件故障:增加冗余,如RAID、双电源等。
(2) 处理软件错误:深入考察系统内在依赖,进行全面测试等。例如针对特定输入引发系统崩溃的软件bug进行修复。
(3) 处理人为失误:设置详细监控、完善审查流程等。例如对系统运维人员进行培训,减少配置错误。
二、可扩展性
- 概念:系统能够按合理方式对应规模增长,如数据量增加。
- 讨论方式:考虑系统增长方式和对应措施。
- 关键描述:负载参数和性能指标。例如每秒请求数、响应时间等。
- 实现手段:垂直扩展(升级机器)和水平扩展(分布到更多机器)。
三、可维护性
-
概念:随时间推移,系统仍高效运行,不断有新人员加入。
-
包含方面:可运维性、简单性、可演化性。
-
实现方式:
(1)可运维性:提供系统可观测性,支持自动化,提供完善文档等。
(2)简单性:减少系统复杂度,新人员易理解。
(3)可演化性:后续能轻松进行功能改进和非典型场景适配。
总结
综上,构建可靠、可扩展且可维护的数据密集型系统需要从设计初期考虑这三个方面,才能使系统平稳演进,避免技术债务。