【第五周】技术选型(一)
分布式缓存架构
缓存
介于数据访问者和数据源之间的高速存储,当数据需要多次读取的时候,用于加快读取的速度。
缓存(cache)和缓冲(buffer)的分别:
Buffer(缓冲区)是系统两端处理速度平衡(从长时间尺度上看)时使用的。它的引入是为了减小短期内突发 I/O 的影响,起到流量整形的作用。比如生产者——消费者问题,他们产生和消耗资源的速度大体接近,加一个 buffer 可以抵消掉资源刚产生/消耗时的突然变化。
Cache(缓存)则是系统两端处理速度不匹配时的一种折衷策略。因为 CPU 和 memory 之间的速度差异越来越大,所以人们充分利用数据的局部性(locality)特征,通过使用存储系统分级(memory hierarchy)的策略来减小这种差异带来的影响。
缓存的应用场景举例:
CPU 缓存
操作系统缓存
数据库缓存
JVM 编译缓存
CDN 缓存
代理和反向代理缓存
前端缓存
应用程序缓存
分布式对象缓存
缓存数据存储一般是以 Hash 表形式
一致性 Hash: 简单来讲,一致性哈希比普通哈希表多做了一次哈希
关键指标:
命中率:
主要指标:(实际应用的指导意义不大)
缓存键集合大小
缓存可使用内存空间
缓存对象生命周期 TTL(Time To Live)
通读缓存
旁路缓存
各种介质数据访问延迟
技术栈各个层次的缓存
合理适用缓存
缓存适用的读写比在 2:1 以上才有意义
LRU, LFU, LRFU
数据不一致与脏读
缓存雪崩
缓存预热
缓存穿透
Redis VS Memcached
Redis 支持复杂的数据结构, 计算向数据迁移
Redis 支持多路复用异步 IO 高性能
Redis 支持竹筒复制高可用
Redis 原生集群与 share nothing 集群模式
消息队列与异步架构
消息队列构建异步调用架构
模型:
点对点
发布订阅
优点:
提升处理性能
更好的伸缩性
削峰填谷
失败隔离和自我修复
解耦
事件驱动架构 EDA
主要 MQ 产品:
RabbitMQ
RocketMQ
Kafka
负载均衡架构
类型
HTTP 重定向负载均衡
DNS 负载均衡
反向代理负载均衡
IP 负载均衡
数据链路层负载均衡
算法:
轮询
加权轮询
随机
最少连接
源地址散列
评论