标签:架构 队列 ash 故障 方式 有序 接受 没有 元数据
开源 内存存储 数据结构存储 1.字符串(数字) 2.列表 3.hash 4.set 集合 5.sorted set 有序集合
用途 :数据库 缓存 消息队列(发布和订阅)
内建主从复制,自动进行分片完成数据分布式存储
单进程 cpu资源占用率小 主要是占用内存资源
RDB:snapshotting, 二进制格式;按事先定制的策略,周期性地将数据从内存同步至磁盘;数据文件默认为dump.rdb;
客户端显式使用SAVE或BGSAVE命令来手动启动快照保存机制;
SAVE:同步,即在主线程中保存快照,此时会阻塞所有客户端请求;
BGSAVE:异步;backgroud
AOF:Append Only File, fsync
记录每次写操作至指定的文件尾部实现的持久化;当redis重启时,可通过重新执行文件中的命令在内存中重建出数据库;
BGREWRITEAOF:AOF文件重写;
不会读取正在使用AOF文件,而是通过将内存中的数据以命令的方式保存至临时文件中,完成之后替换原来的AOF文件;
主要完成三个功能:监控、通知、自动故障转移
选举:流言协议、投票协议
CAP理论
C 多个节点上的数据保持一致
A 客户发送请求后能否在接受的时间内得到响应结果
P 网络发生分区(脑裂)后服务是否依然可用
BASE理论
BA 基本可用
S 柔性事务 即状态可以在一个时间窗口内是不同步的
E 最终一致性
不适合对事务要求高的场景
集群的构建方式
1.有中心节点
把中心节点的数据存储到共享存储系统 适合大规模集群 中心节点存储的是集群中每个节点的元数据信息
共享的存储系统: zookeeper consul etcd
2.无中心节点
集群中每个节点都存储整个集群的元数据信息 不适合大规模集群
不能提升写数据的效率 存储能力也没有扩展
对数据做了冗余备份 可以提供读写分离机制
水平扩展 redis服务端的性能,扩展redis数据库的存储能力 自带集群分片技术
集群中每个服务器上存储的数据都是不一致的,每个节点的宕机都会导致一部分数据的丢失 所以必须对集群中的每个节点做数据冗余备份(主从同步)
访问Redis集群中的数据必须使用智能客户端,否则在向redis集群服务器中读写数据的时候会提出错误
将数据进行拆分,将数据水平的分散到不同的服务器上
id 1-2000 node1
id 20001-5000 node2
分片片键
在需要分片的表中选一个字段,用这个字段的值作为数据拆分的依据
为了实现在集群中方便随时移除和添加后端服务器,在调度器上保存的不是分片信息和服务器之间的对应关系,而是保存的hash片键和分片之间的关系 当后端服务器发生变动的时候只需要修改分片和服务器的映射关系即可 客户端不再关心底层的服务器是否发生变化
标签:架构 队列 ash 故障 方式 有序 接受 没有 元数据
原文地址:https://www.cnblogs.com/yxh168/p/9351575.html