架构师第 5 周总结
一、分布式缓存
1.1 什么是缓存
缓存是存储在计算机上的一个原始数据复制集,以便于访问
1.2无处不在的缓存
CPU缓存,操作系统缓存,数据库缓存,JVM编译缓存,CDN缓存,代理与反向代理缓存,应用程序缓存,分布式缓存。
1.3缓存的数据存储
hash表,k,v的方式,一般value是字符串,如果是对象,需要把字符串序列化成对象。
1.4缓存的关键指标
缓存的命中率,影响缓存命中率的主要指标:缓存健集合大小,缓存可使用内存空间,缓存对象的时间。
1.5缓存的种类
代理缓存,反向代理缓存,对层方向代理缓存,内容分发CDN.
1.6使用缓存的方式
通读缓存(read-through),旁路缓存(cache-aside)。
1.7缓存为什么能显著提高性能
缓存数据通常来自内存,比磁盘上的数据有更快的访问速度
缓存存储数据的最终结果形态,不需要中间计算,减少CPU资源的消耗
缓存降低数据库、磁盘、网络的负载压力,使这些I/Oshe 别获得更好的响应特性。
1.8使用缓存的注意的问题
频繁修改的数据,没有热点的访问的场景不任何缓存
出现数据不一致与脏读,一般会对缓存设置失效时间
缓存雪崩:缓存服务崩溃,导致数据库宕机,进而导致整个网站不可用。
缓存预热:系统启动的时候就把热点数据加载好,这个缓存预加载的手段叫缓存预热。
缓存穿透:高并发请求某个不存在的数据,所有请求都落到了数据库上,对数据库造成很大的压力,解决办法是不存在的数据也缓存起来。
1.9redis vs memched
redis支持复杂的数据结构,支持多路复用异步I/O高性能,支持主从复制,原生集群与share nothing集群模式,
redis集群预分好16384个桶,当需要存数据时,根据CRC16 mod 16384 的值,决定将一个key放到哪个桶中。
redis-cluster把所有的物理节点赢到到【0-16383】slot上,cluster负责维护slot与服务器的映射关系。
客户端与redis节点直连,客户端不需要连接集群所有节点,连接集群中热河一个可以用节点即可。
所有的Redis节点彼此互联
二、消息队列与异步
缓存是为了提高读的性能,消息队列是提高写的性能。
2.1同步调用VS异步调用
同步调用请求链路长,响应慢,异步调用缩短了请求的链路,缩短了响应时间。
2.2消息队列构建异步调用架构
点对点模型
发布订阅模型
2.3消息队列的好处
实现异步处理,提升处理性能
更好的伸缩性
削峰填谷
失败隔离和自我修复
解耦
2.4事件驱动架构(EDA )
充分利用的消息队列的优点,各个消息消费者不在耦合。
三、负载均衡
3.1负载均衡的种类
http重定向负载均衡,缺点是,多次请求,性能差,应用服务器直接被用户访问安全低
DNS负载均衡
反向代理负载均衡,缺点是流量大了都响应都从负载均衡返回,带宽受限制。
ip负载均衡,三层的负载均衡LVS
数据链路层的负载均衡,二层的负载均衡LVS
3.2负载均衡的算法
轮询
加权轮询
随机
最少连接
原地址散列
3.3应用服务器集群的Session管理
session复制,缺点是集群规模受限
session绑定,应用服务频繁发布,造成session失效
利用Cookie记录session,带宽增加
session服务器,推荐
评论