架构师训练营第五周学习总结
第一课 Cache
缓存:多次读数据时,加快访问速度
缓冲:Buffer 读写数据时;常见于IO操作
1.缓存数据存储
1.hash表
hash算法:随机值,key相同则随机值不变;数据初始内存地址+单个元素占用空间*随机值
指标:缓存命中率
影响因素:键集合大小、缓存可用内存空间、缓存对象生存时间
2.常见缓存及种类
通读缓存:客户端->通读缓存->服务
1.代理缓存:用户端
2.反向代理缓存:nginx缓存
多次反向代理缓存
3.CDN:离用户近的网络服务商的机房
旁路缓存:客户端-->服务
1.浏览器对象缓存
2.本地对象缓存
3.分布式缓存
1.本地对象缓存构建分布式集群
缺点集群间缓存同步网络通信频繁、空间不存
2.分布式对象缓存
Memcached
余数哈希
路由算法:取余
伸缩:大量缓存不命中,数据打到数据库
一致性哈希
node、key、环(2^32-1
)、虚拟节点(解决数据倾斜)
缓存:高速访问;存储最终结果节省CPU;降低IO
缓存注意事项:
1.数据读写2:1以上;
2.缓存热点数据;
3.可以允许数据不一致与脏读;
4.避免缓存雪崩;
5.缓存预热
6.缓存穿透(缓存以避免数据达到后端存储)
Redis集群
复杂数据结构;多路复用;主从复制;原生集群
第二课 异步&集群
消息队列
同步调用 VS 异步调用:程序不会阻塞;回调函数
消息队列:实现异步处理,提升处理性能;优化写操作
优点:更好的伸缩性;削峰填谷;失败隔离和自我修复(生产者、消费者互不影响);解耦
事件驱动架构EDA: 耦合度低
负载均衡架构
解决问题:路由选择;网络通信
1.HTTP重定向负载均衡
暴露应用服务器
2.DNS负载均衡
DNS缓存;
3.反向代理负载均衡
小规模:HTTP协议较重,数据传输大,易成为瓶颈
4.IP负载均衡
转发TCP包;修改源地址、目标地址;
网络输出(响应)网卡带宽是瓶颈
5.数据链路层负载均衡
应用服务器直接返回客户端;虚拟IP;MAC地址
负载均衡算法:轮询、加权轮询;随机;最少链接;源地址散列
Session管理方案
1.Session复制
2.Session绑定:IP地址散列;服务重启时会话失效
3.Cookie记录Session
4.Session服务器
分布式数据库
MySQL主从复制
Binlog;Relay log;关闭DDL同步(耗时长);
一主多从:分摊负载;专机专用;冷备、热备;高可用
MySQL主主复制:
不能同时写;写高可用;
评论