一,可靠性的挑战
1,人为故障是线上系统故障的首要原因,应该怎么避免
1.1简化设计,易于测试
1.2充分测试,覆盖场景
1.3快速回滚,降低损失
1.4完善监控
1.5规范流程,这点最重要
2,软件故障
2.1简单架构,降低复杂度带来的不可控
2.2选择稳定的软件,包括开源
2.3要有自动恢复机制,比如限流,进程自动拉起
3,硬件故障
3.1多机服务,但会带来数据复制和一致性问题
二,可扩展性
1,响应时间定义:客户端发起请求,收到结果的时间
2,时延定义:服务处理请求的时长
3,如何描述性能
3.1通常性能是指吞吐量和时延
3.2时延应关注95line,99line,99.9line,平均时延会掩盖问题
4,无状态服务扩展相对容易,有状态服务从单个节点扩展到分布式多机系统复杂性会大大增加
5,很难有一种通用的架构,背后取舍因素包括数据读取量、写入量、待存储的数据量、数据的复杂程度、响应时间要求等等
三,可维护性
1,可运维性,自动化与规范流程
2,简单性,新接手的工程师易理解,消除意外复杂性的最好手段之一是抽象
3,可演化性,易于改变,比如兼容性
参考《数据密集型应用系统设计》
原文出自:https://blog.csdn.net/daiyudong2020/article/details/104453426
end