高性能高并发系统的稳定性保障(2)
复制
扩容
现状分析:去年双十一到目前,峰值时的性能数据;软硬件性能指标;数据存储容量. 扩容规划;流量规划:核心系统20倍吞吐量;数据增长量规划;扩容依据;架构梳理;线上压测. 读扩容比写扩容难;读写分离. 异步化
本地内存队列:实时价格回源服务响应之后,通过BlockingQueue异步更新前端缓存.本地日志队列:库存预占.集中式缓存队列:商品变更任务下发系统. 异步化的一些例子: 1、操作系统内核的高速缓存队列,磁盘延迟刷盘; 2、mysql数据库复制、redis复制; 异步化需要注意的是: 1、任务要落地; 2、不可避免的重复执行,需要幂等; 3、是否需要保证顺序、如何保证顺序. 缓存
如何保障稳定性 宏观
可用性
可行性指标:999,一周10分钟;9999,一周1分钟不可用.可用性:从客户角度.可用性度量:A = MTBF / (MTBF + MTTR),其中MTBF表示mean time betweenfailures,而MTTR表示maximum time to repair or resolve. 高可用行性的成本和收益,好钢用在刀刃上. 如何快速切换:有可以切换的?可以不重启应用么? 操作快捷么?演练过么? 切换的影响:切换目标资源能否承受新增的压力;切换是否影响状态(数据的一致性、丢失问题). 监控到位、即时,减少故障发现时间;监控全面,增加故障分析时可以参考的数据. troubleshooting的能力,踩坑的精力,COE,问题本质、根源的追查. 软件质量:编码是否健壮、(异常处理、防御性、2/8原则)超时处理、日志是否全面合理、线程名称等等. 测试:case是否全面、自动回归. 上线:是否灰度:N+1,N+2;回滚方案、数据回滚. 分组和隔离
传统世界的例子:道路被划分为高速道路、自行道、人行道等,各行其道. 流量分组 举例:商品基础信息读服务.对使用者按照重要程度、请求量、SLA要求等因素分级,将服务实例和存储分组:交易、生产、网站、移动、promise、ERP… 读写分离 举例:商品主数据服务.按照使用者重要程度、实时性要求等因素,将数据库分组:ERP、POP、网站、大数据平台…
前置限流,快速失败:比如通过提供给调用方的JSF客户端,封装限流逻辑. Nginx层限流:自主研发的模块;几个规则:账户,IP,系统调用流程. 应用限流:减少并发数线程数;读少限,写多限;DB限流;连接数. 降级
监控和切换
review Nginx层限流:自主研发的模块;几个规则:账户,写多限;DB限流;连接数. (编辑:ASP站长网) |