数据系统:数据库、消息队列、缓存……
既然是设计数据密集型应用,就跟技术选型有关,这张讲不同工具之间的共性、特性、各自的实现原理。
可靠性 Reliability
系统在困境(硬件故障、软件故障、人为错误)中仍可正常工作(正确完成功能,并能达到期望的性能水准)
可扩展性 Scalability
有合理的办法应对系统的增长(数据量、流量、复杂性)
可维护性 Maintainability
许多不同的人(工程师、运维)在不同的生命周期,都能高效的在系统上工作(使系统保持现有行为)
1、可靠性
造成错误的原因叫故障 fault,能预料并应对故障的系统特性可称为容错 fault-tolerant 或 韧性 resilient。系统不会容忍所有错误,比如地球被黑洞吞噬。。所以有意义的是讨论特定类型的错误。
故障≠失效,故障是局部的、场景性的,失效是整个系统gg;本书主要讨论的是可以恢复的故障
——硬件故障
为了减少系统的故障率,常见做法是增加单个硬件的冗余度:双路电源、备用电池……
——软件错误
不同于硬件故障是单台、相互独立的,系统错误往往是牵连一片
——人为错误
有人参与就有犯错的可能;措施:加一些限制、模拟环境、做各种测试、快速恢复、监控、良好管理&充分培训……
2、可扩展性
思考的问题:如果服务以特定方式增长,有什么选项可以应对增长?如何增加计算资源来处理额外的负载?
——描述负载 P19
2021.12.23更新
这书写的真好,我都提取不出来重点、关键字段啥的,停更,我还是先看吧……