分布式概念:分布式缓存

缓存技术一般是指,用一个更快的存储设备存储一些经常用到的数据,供用户快速访问。
分布式缓存就是指在分布式环境或系统下,把一些热门数据存储到离用户近、离应用近的位置,并尽量存储到更快的设备,以减少远程数据传输的延迟。

Redis 分布式缓存原理

每个节点都负责一部分数据的存储,同时,每个节点还会进行主备设计来提高 Redis 的可靠性。

1.Redis 支持多数据结构。

支持的数据结构不仅有简单的 k/v 类型,还可以支持 List、Set、Hash 等复杂类型的存储。

以 Hash 这种复杂类型的存储为例,Redis 将 Hash 视作一个整体当作数据库的 value(可以是一个对象,比如结构体对象)进行存储。如果把 Hash 结构的整体看作对象的话,Hash 结构里的 key-value 相当于该对象的属性名和属性值。

2.Redis 支持持久化。

数据从内存这种易失性存储设备中写入磁盘,从而让数据永久保存。

RDB(Redis DataBase),也称快照方式。 Redis 会定时将内存中的数据备份到磁盘中,形成一个快照,比如每天保存一下过去一周的数据。缺点:容易数据丢失,如节点故障时新数据还未持久化。

AOF(Append Only File)。与数据库复制技术中 binary log 类似。
AOF_FSYNC_NO (不同步),即不会自动触发写操作的同步;
AOF_FSYNC_EVERYSEC (每秒同步),即每隔一秒都会将写操作同步到磁盘;(默认)
AOF_FSYNC_ALWAYS (每次写都同步),即每次发生写操作会立即同步到磁盘。

3.Redis 支持主备同步。

异步复制技术,但 Redis 可以通过配置 min-replicas-to-write 和 min-replicas-max-lag 这两个参数来有效地保证数据一致性。

比如,设置 min-replicas-to-write=3、min-replicas-max-lag=10,表示当至少有 3 个备数据库连接主数据库的延迟时间小于 10s 时,主数据库才可以执行写操作。延迟时间是从最后一次收到备数据库的心跳开始计算,通常每秒发送一次心跳。

完整同步流程:

1.当备服务器启动时,会向主服务器发送 SYNC 命令;
2.主服务器收到命令后会生成 RDB(快照)文件,并记录从现在起新执行的写操作;
3.RDB 生成后会发送给备服务器,备服务器通过 RDB 文件进行数据更新;
4.更新完成后,主服务器再将新记录的写操作发送给备服务器,备服务器执行完这些新记录的写操作,便与主服务器的数据保持一致了。

计算机体系结构缓存

由于内存和 CPU 访问速度相差很大,为了提高 CPU 的性能,计算机内部在 CPU 与内存之间设置了相应的缓存。

大多数机器分为三级缓存:L1 高级缓存、L2 高级缓存和 L3 高级缓存。就访问速度来讲,L1 高级缓存 > L2 高级缓存 > L3 高级缓存 > 内存。其中,L1 高级缓存的访问速度,几乎和 CPU 中寄存器的访问速度一样快。

网络访问中的缓存

网络访问数据时,需要与远程服务器交互来进行传输,而网络间数据传输以及远程服务器对请求的响应,会耗费很多时间。如果本机器的磁盘可以对你经常访问的远程内容进行存储,这样就不用每次都与远程服务器交互,从而减少网络数据传输与服务器响应的延迟,极大地提高性能。

你可能感兴趣的:(分布式)