总结5

2020-07-08  本文已影响0人  yz08150

缓存

缓存有多个级别的缓存,从 cpu缓存 到 内存 到 redis远程缓存,都可以认为是缓存

缓存 和 缓冲的区别

缓存 cache
缓冲 buffer

区别在于 缓存 用户多次的读取
而 缓冲 用于写和读

缓存数据存储

一般使用 Hash 表的方式

缓存的关键指标

缓存命中率

影响缓存命中率的主要原因
缓存种类
客户端侧的代理缓存
反向代理缓存

比如 nginx 等

多层反向代理缓存
CDN

动静分离的访问,动态资源 和 静态资源访问的域名是分开的
动静资源合在一起的
实际用的是动静分离的方式

通读缓存
旁路缓存
浏览器对象缓存
// webstorage 缓存
var preferences = {/* data object to be stored */};
localStorage.setItem('preferences', JSON.stringify(preferences));

var cachedData = localStorage.getItem('preferences');
var preferences = JSON.parse(cachedData);
本地对象缓存

放在应用程序中的缓存
比如服务器的应用程序中,或者客户端的应用程序中
这种集群方式已经不适用了,同步内容太多

远程分布式对象缓存

比如 memchaced redis

一致性 hash

image.png

基于虚拟节点的一致性 hash


image.png

合理的使用缓存

消息队列与异步调用架构

有两种模式
点对点
发布订阅

消息队列的好处

负载均衡架构

HTTP重定向负载均衡 实际中不使用

重定向负载均衡服务器,返回 302 重定向一个 ip上

DNS 负载均衡 现实中一定要使用
反向代理负载均衡 现实中使用受限

比如 nginx
一般只能用在 代理的后端服务器数量 不超过 10 台,具体的还需要根据情况来看
因为 nginx 等只在 http 代理,所以所有的流量等都需要通过 nginx , nginx 的性能网卡等是个瓶颈
所以,应用受限,但通常一般的应用,也够用了
但对于大型的互联网产品,肯定不行了

IP 负载均衡 现实中经常应用

IP 负载均衡,在 ip 层实现负载均衡,可以和 nginx 一起使用
但, 同样还有个问题,流量问题,如果还是都通过同一个服务转发,还是有瓶颈,
所以,需要更好的性能,使用下面的方式

数据链路层负载均衡 经常使用

回复,不再通过代理返回,而是直接返回给客户端

应用服务器集群的 Session 管理

包含以下手段

session 复制 现实中不使用

有新session,复制给其他所有服务器

session 绑定 现实中不使用

让用户只请求在同一台机器上

利用 cookie 记录session 现实中经常使用
Session 服务器 现实中经常使用

使用专门的服务器存储 session,比如 redis

分布式数据库

Mysql主从复制 现实中经常使用

从服务器 获取主服务器的 binlog 来同步

注意,对于 建表等 DDL语句,不要同步,否则,从服务器会非常耗时,最好手动的操作从数据库

Mysql 一主多从复制 现实中经常使用

同样 DDL 语句最好不要 同步过去

一主多从复制的优点 :

Mysql 主主复制 现实中经常使用

注意事项 :

上一篇下一篇

猜你喜欢

热点阅读