原文地址:https://www.douyacun.com/article/f3001599ffb501015479de963e377bcf
高并发通用设计方法
为什么分层
如何分层
todo:各层功能界限不明确
高并发设计三大目标
吞吐量 和 响应时间
99分位值的响应时间控制在200ms以内,不超过1s请求占比控制在99.99以内
平均值 少量的慢请求无法反映
最大值 过于敏感
分位值 能很好反应一段时间的性能状况,例如90分位(100个请求响应时间排序,排在90的就是分位点),分位值越高,对于慢请求越敏感
系统无故障运行的能力,系统可用行需要从系统设计和系统运维来保证
系统设计时考虑如何自动化发现故障,出现故障如何解决。具体的优化方法故障转移、超时控制、限流
故障转移:
proxy_next_upstream
超时控制: 不让请求一直保持,经过一段时间后让请求失败,释放资源
内网服务
降级: 保证核心服务的稳定而牺牲非核心服务的做法
限流: 对并发请求进行限速来保护系统
运维可以从灰度发布,故障演练来考虑提升系统的可用性
灰度发布: 业务稳定运行过程,系统是很少发生故障,90%的故障时发生在上线变更阶段,除了提供回滚方案就是灰度发布
故障演练: 模拟线上事故,比如:在线上随机关闭节点
系统扩展会增加系统设计的复杂度,设计思路有:存储层扩展、业务层扩展
第一步 做业务服务化拆分,减少单一主库压力
第二步 系统运行一段时间后,单一的业务数据库仍然会超过在容量和请求量仍然会超过单机的限制,这次就需要按数据特征做水平拆分,问题时节点不是随意增加的