架构师训练营 - 第 5 周总结
缓存:
定义:介于数据访问者和数据源之间的一种高速存储。
应用场景:当数据需要读取时,用于加快读取速度。
典型应用场景:CPU缓存、操作系统缓存、数据库缓存、JVM编译缓存、CDN缓存、代理与反向代理缓存、前端缓存、应用程序缓存、分布式对象缓存。
数据存储模式:Hash表
关键指标:缓存命中率(影响点:缓存键集合大小、缓存可用内存空间、缓存对象生存时间)
两种分类:
通读缓存(read-through):给客户端返回缓存资源,并在请求未命中缓存时获取实际数据。如代理缓存、反向代理缓存、CDN缓存。
旁路缓存:应用代码通常会询问对象缓存需要的对象是否存在,如果存在,则会获取并使用缓存的对象。如果不存在或已过期,应用会连接主数据源来组装对象,并将其保存回对象缓存中以便将来使用。
缓存hash算法:
余数hash:简单、扩容时可能导致大量缓存重新分布迁移。
一致性hash算法(不带虚拟节点):通过环形链表解决了扩容缓存迁移的问题,但存在着负载不均衡的问题。
一致性hash算法(带虚拟节点):利用虚拟节点解决了负载不均衡的问题,需要针对不同数量的集群节点设置不同的虚拟节点的值。
缓存可能面临的问题:
数据不一致与脏读
缓存雪崩
缓存穿透
消息队列:
同步调用VS异步调用:同步调用就是客户端等待调用执行完成并返回结果。异步调用就是客户端不等待调用执行完成返回结果,不过依然可以通过回调函数等接收到返回结果的通知。
消息队列架构:
消息队列应用场景:
异步
解耦
削峰填谷
主要消息队列产品:rabbitMQ/kafaka/rocketmq/activemq
负载均衡架构:
类别:
HTTP重定向负载均衡
DNS负载均衡
反向代理负载均衡
IP负载均衡
数据链路层负载均衡
负载均衡算法:
轮询
加权轮询
随机
最少连接
源地址散列
集群Session管理常用方式:
session复制
session绑定
利用cookie记录session
session服务器
分布式数据库:
Mysql复制方式:
主从复制
一主多从复制
主主复制:
评论