概述
设计一个高并发,高可用给的架构,主要说明设计一个高可用,高并发的架构需要用到的知识点以及关键点 掌握以下技术基本的,重点还是在于如何在业务开发中实践这些经验,并能根据实际业务场景选择合适的架构
设计高并发架构
系统拆分
将多个系统拆分为多个子系统,此时需要用法RPC中间件
- Spring Cloud
-
Spring Dubbo
- 技术踩坑
- 分布式锁
- 分布式session
- 分布式事务
使用缓存
大部分高并发场景都是读多写少,可以在缓存和数据库中都写入一份
- 相关技术
- 应用层缓存架构(encache)
- 技术踩坑
- 缓存一致性问题
- 缓存命中率问题
- 缓存穿透缓存失效问题
系统解耦
利用消息中间件实现系统解耦,针对大量写请求,可以使用mq扛住大量写并发请求,然后逐步将数据写入数据库
- 相关技术
- 消息中间件
- 技术踩坑
- 分布式事务,一致性
- 消息积压问题
- 重复数据消费
分库分表
- 相关技术
- 分库分表中间件
- 技术踩坑
- 从单库迁移到分库
- 数据库扩容与缩容
- 全局id生成
读写分离
更偏向于运维层面
- 相关技术
- Redis 主从架构
- Redis 集群架构
- Mysql主从架构
- MySql集群架构
分布式搜索引擎
- 相关技术
- Solr
- ElasticSearch
- 架构师之路
高并发高可用架构
- 1、亿级流量电商网站的商品详情页系统架构
面临难题:对于每天上亿流量,拥有上亿页面的大型电商网站来说,能够支撑高并发访问,同时能够秒级让最新模板生效的商品详情页系统的架构是如何设计的?
解决方案:异步多级缓存架构+nginx本地化缓存+动态模板渲染的架构
- 2、redis企业级集群架构
面临难题:如何让redis集群支撑几十万QPS高并发+99.99%高可用+TB级海量数据+企业级数据备份与恢复?
解决方案:redis的企业级备份恢复方案+复制架构+读写分离+哨兵架构+redis cluster集群部署
技术要点:redis集群规划与部署
- 3、多级缓存架构设计
面临难题:如何将缓存架构设计的能够支撑高性能以及高并发到极致?同时还要给缓存架构最后的一个安全保护层?
解决方案:nginx抗热点数据+redis抗大规模离线请求+ehcache抗redis崩溃的三级缓存架构
- 4、数据库+缓存双写一致性解决方案
面临难题:高并发场景下,如何解决数据库与缓存双写的时候数据不一致的情况?
解决方案:异步队列串行化的数据库+缓存双写一致性解决方案
- 5、缓存维度化拆分解决方案
面临难题:如何解决大value缓存的全量更新效率低下问题?
解决方案:商品缓存数据的维度化拆分解决方案
- 6、缓存命中率提升解决方案
面临难题:如何将缓存命中率提升到极致?
解决方案:双层nginx部署架构+lua脚本实现一致性hash流量分发策略
- 7、缓存并发重建冲突解决方案
面临难题:如何解决高并发场景下,缓存重建时的分布式并发重建的冲突问题?
解决方案:基于zookeeper分布式锁的缓存并发重建冲突解决方案
技术要点:zookeeper 临时与持久节点
- 8、缓存预热解决方案
面临难题:如何解决高并发场景下,缓存冷启动导致MySQL负载过高,甚至瞬间被打死的问题?
解决方案:基于storm实时统计热数据的分布式快速缓存预热解决方案
- 9、热点缓存自动降级方案
面临难题:如何解决热点缓存导致单机器负载瞬间超高?
解决方案:基于storm的实时热点发现+毫秒级的实时热点缓存负载均衡降级
- 10、高可用分布式系统架构设计
面临难题:如何解决分布式系统中的服务高可用问题?避免多层服务依赖因为少量故障导致系统崩溃?
解决方案:基于hystrix的高可用缓存服务,资源隔离+限流+降级+熔断+超时控制
- 11、复杂的高可用分布式系统架构设计
面临难题:如何针对复杂的分布式系统将其中的服务设计为高可用架构?
解决方案:基于hystrix的容错+多级降级+手动降级+生产环境参数优化经验+可视化运维与监控
技术要点:Hystrix
- 12、缓存雪崩解决方案
面临难题:如何解决恐怖的缓存雪崩问题?避免给公司带来巨大的经济损失?
解决方案:全网独家的事前+事中+事后三层次完美缓存雪崩解决方案
- 13、缓存穿透解决方案
面临难题:如何解决高并发场景下的缓存穿透问题?避免给MySQL带来过大的压力?
解决方案:缓存穿透解决方案,即使没有获取到数据也要进行空数据标记
- 14、缓存失效解决方案
面临难题:如何解决高并发场景下的缓存失效问题?避免给redis集群带来过大的压力?
解决方案:基于随机过期时间的缓存失效解决方案