架构师训练营第 5 周总结
分布式缓存架构
缓存:介于数据访问者与数据源之间的一种高速存储,当数据需要多次读取时,提高数据读取的速度。(如果数据不是经常使用那使用缓存就没有意义反而会影响性能)
缓存的关键指标:缓存命中率
影响缓存命中率指标:缓存键集合大小、缓存可使用内存空间、缓存对象生存时间
缓存类型:
通读缓存(代理缓存、反向代理缓存、CDN缓存):客户端连的是通读缓存而不是原始服务器
旁路缓存(对象缓存):获取缓存对象不存在或者过期,应用会连数据源,对象组装保存回对象缓存中
本地对象缓存:对象直接缓存在应用服务器中,缓存服务器和应用服务器部署在一起。缺点:需要更新同步到其他应用服务器,资源浪费,性能消耗大;
远程分布式对象缓存:Memcached 使用一致性hash算法,缓存服务器并不知道有其他缓存服务器存在;redis 支持复杂数据结构,缓存服务器知道在一个集群中,连接集群中任何一个可用节点都可以获取,节点互联。
分布式缓存的常见问题:
缓存穿透(解决方案:放入一个特殊对象)
缓存击穿(解决方案:更新缓存时使用分布式锁锁住服务,防止请求穿透直达DB)
缓存雪崩(解决方案:缓存时间使用基本时间加上随机时间)
消息队列和异步架构
消息队列异步架构组成:消息生产者、消息队列、消息消费者
消息队列模型:点对点模型,发布订阅模型
消息队列好处:实现异步处理,提升处理性能;更好的伸缩性;削峰填谷;失败隔离和自我修复;解耦;
主流产品:RabbitMQ、ActiveMQ、RocketMQ、Kafka
负载均衡服务器
负载均衡架构:HTTP重定向负载均衡、DNS负载均衡、反向代理负载均衡、IP负载均衡、数据链路层负载均衡
负载均衡算法:轮询、加权轮询、随机、最少连接、原地址散列
session管理:session复制、session绑定、利用cookie记录session、session服务器
分布式数据库
MySQL复制:主从复制、一主多从复制、主主复制
主主复制两个数据库不能并发写入;复制只是增加读并发处理能力,没有增加写并发处理能力和存储能力;更新表结构会导致巨大的同步延迟;
评论