架构师第 5 周总结

用户头像
老姜
关注
发布于: 2020 年 07 月 07 日

一、分布式缓存



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



  1. redis支持复杂的数据结构,支持多路复用异步I/O高性能,支持主从复制,原生集群与share nothing集群模式,

  2. redis集群预分好16384个桶,当需要存数据时,根据CRC16 mod 16384 的值,决定将一个key放到哪个桶中。

  3. redis-cluster把所有的物理节点赢到到【0-16383】slot上,cluster负责维护slot与服务器的映射关系。

  4. 客户端与redis节点直连,客户端不需要连接集群所有节点,连接集群中热河一个可以用节点即可。

  5. 所有的Redis节点彼此互联



二、消息队列与异步



缓存是为了提高读的性能,消息队列是提高写的性能。



2.1同步调用VS异步调用



同步调用请求链路长,响应慢,异步调用缩短了请求的链路,缩短了响应时间。



2.2消息队列构建异步调用架构



  1. 点对点模型

  2. 发布订阅模型



2.3消息队列的好处



  1. 实现异步处理,提升处理性能

  2. 更好的伸缩性

  3. 削峰填谷

  4. 失败隔离和自我修复

  5. 解耦



2.4事件驱动架构(EDA )



充分利用的消息队列的优点,各个消息消费者不在耦合。



三、负载均衡

3.1负载均衡的种类



  1. http重定向负载均衡,缺点是,多次请求,性能差,应用服务器直接被用户访问安全低

  2. DNS负载均衡

  3. 反向代理负载均衡,缺点是流量大了都响应都从负载均衡返回,带宽受限制。

  4. ip负载均衡,三层的负载均衡LVS

  5. 数据链路层的负载均衡,二层的负载均衡LVS

3.2负载均衡的算法

  1. 轮询

  2. 加权轮询

  3. 随机

  4. 最少连接

  5. 原地址散列

3.3应用服务器集群的Session管理



  1. session复制,缺点是集群规模受限

  2. session绑定,应用服务频繁发布,造成session失效

  3. 利用Cookie记录session,带宽增加

  4. session服务器,推荐



用户头像

老姜

关注

还未添加个人签名 2017.11.16 加入

还未添加个人简介

评论

发布
暂无评论
架构师第5周总结