Open qiwihui opened 3 years ago
数据密集型(data-intensive)而非计算密集型(compute-intensive):
影响数据系统设计的因素很多,包括参与人员的技能和经验、历史遗留问题、系统路径依赖、交付时限、公司的风险容忍度、监管约束等。
重要的三个问题;
可靠性(Reliability)
系统在困境(adversity)(硬件故障、软件故障、人为错误)中仍可正常工作(正确完成功能,并能达到期望的性能水准)。
可扩展性(Scalability)
有合理的办法应对系统的增长(数据量、流量、复杂性)。
可维护性(Maintainability)
随着时间的推移,许多新的人员参与到系统开发和运维, 以维护现有功能或适配 新场景等,系统都应高效运转。
期望:
故障(fault)和失效(failure):
系统不见得一直可靠,比如负载增加,系统需要持续变化。
软件开发本身开销并不算大,日后的维护升级需要花费更多。
软件系统的三个设计原则:
可运维性(Operability)
方便运营团队来保持系统平稳运行。
简单性(Simplicity) 简化系统复杂性,使新工程师能够轻松理解系统。注意这与用户界面的简单性并 不一样。
可演化性(Evolvability) 后续工程师能够轻松地对系统进行改进,井根据需求变化将其适配到非典型场 景,也称为可延伸性、易修改性或可塑性。
保证代码简洁,让新加入的码农也能理解代码。一个很有效的方法是抽象,用高级类来描述统一的行为。
方便后续重构、加入新功能那个,与前面的简单性息息相关。
GitHub repo: qiwihui/blog Follow me: @qiwihui Site: QIWIHUI
GitHub repo: qiwihui/blog
Follow me: @qiwihui
Site: QIWIHUI
第一章:可靠性,可扩展性,可维护性
数据密集型(data-intensive)而非计算密集型(compute-intensive):
影响数据系统设计的因素很多,包括参与人员的技能和经验、历史遗留问题、系统路径依赖、交付时限、公司的风险容忍度、监管约束等。
重要的三个问题;
可靠性(Reliability)
系统在困境(adversity)(硬件故障、软件故障、人为错误)中仍可正常工作(正确完成功能,并能达到期望的性能水准)。
可扩展性(Scalability)
有合理的办法应对系统的增长(数据量、流量、复杂性)。
可维护性(Maintainability)
随着时间的推移,许多新的人员参与到系统开发和运维, 以维护现有功能或适配 新场景等,系统都应高效运转。
可靠性
期望:
故障(fault)和失效(failure):
硬件故障
软件故障
人为故障
可扩展性
系统不见得一直可靠,比如负载增加,系统需要持续变化。
衡量负载(Load)
衡量性能(Performance)
应对负载增加的方法
可维护性
软件开发本身开销并不算大,日后的维护升级需要花费更多。
软件系统的三个设计原则:
可运维性(Operability)
方便运营团队来保持系统平稳运行。
简单性(Simplicity) 简化系统复杂性,使新工程师能够轻松理解系统。注意这与用户界面的简单性并 不一样。
可演化性(Evolvability) 后续工程师能够轻松地对系统进行改进,井根据需求变化将其适配到非典型场 景,也称为可延伸性、易修改性或可塑性。
可运维性
简单性
保证代码简洁,让新加入的码农也能理解代码。一个很有效的方法是抽象,用高级类来描述统一的行为。
可演化性
方便后续重构、加入新功能那个,与前面的简单性息息相关。
参考