技术点 redis
2020-07-03 18:23:29 0 举报
技术点 redis
作者其他创作
大纲/内容
EVENT base
执行所有请求命令
slave
msg3AE_readable
20
1
oracalmysql
w
C
数据a
client
r
commit
阻塞
entry 结构
entry1
否
previous_entry_length
99
cq_item
serversocket
-1
1.用户发送一个请求2. hytrix 接受请求 ,本地请求树 设置,如果 5000 个请求过来,拦截3000 个,处理 2000 走 下面步骤,3000个走降级组件2.接受请求直接查询 ecache 本地缓存3.本地缓存没有查询 redis 分布式缓存4. ecache 和redis 不存在,查询数据库5. 数据库结果写入 redis 和 ecache
fd
hash(服务器ip) % 2^ 32
zlbytes
连接应答处理器
zlbytes: 记录整个压缩列表使用的内存大小zltail: 记录压缩列表表尾距离起始位置有多少字节zllen: 记录压缩列表节点数量,值得注意的一点是,因为它只占了2个字节,所以最大值只能到65535,这意味着压缩列表长度大于65535的时候,就只能通过遍历整个列表来计算长度了zleng: 压缩列表末端标志位,固定值为 OxFFentry1-N: 压缩列表节点
A
加入等待列表
force prepare log
从队列取出一个 cq_item
3
redis zskiplist seach (68)
fd
partition-tolerance 分区容错性
prepare
entry n
线程和 socket 绑定
监听读取 fd
客户端
CP
用户
5
force commit log
建立连接
读socket并解析请求
68
文件事件分派器
consistent hashing
将等待列表平均分配给IO 线程
memcache 线程模型
entry2
mongodbhbaserediszookeeper
压缩列表 ziplist
队列 msg1 msg2 msg3
master
AP
哨兵模式 :特点:1.保证高可用 2.监控各个节点 3.自动故障迁移缺点:1. 主从模式,切换需要时间丢数据 2. 没有解决 master 写的压力
zltail
avaliability 可用性
监听
header
客户端 一
CAP 定律
数据写入缓冲区
redis
yes
work
content
4
CA
客户端 二
hash 偏环
B
backup 从存储
ziplist 内存模型
sentinel
30
主从复制 :特点:1.master/slave 角色 2.master/slave 数据相同 3.降低 master 读压力在转交从库问题:1.无法保证高可用 2.没有解决 master 写的压力
previous_entry_length: 上一个节点的长度encoding: content的编码以及长度content: 节点数据
返回数据
IO 多路复用器
get命令
交给文件时间分派器因为他是单线程的
cap 业务流程 场景解说
zleng
Two Phase Commitment Protocol 两段式提交
业务控制层
2
hystrix
rm1
cq_item 队列
pipe
是
等待列表
ecache
11
....
coach dbcassandradynamodb
force fedprepare log
代理模式 :特点:1.多种 hash 算法:MD5、CRC16、CRC32、CRC32a、hsieh、murmur、Jenkins 2.支持失败节点自动删除 3 .后端 Sharding 分片逻辑对业务透明,业务方的读写方式和操作单个 Redis 一致缺点:增加了新的 proxy,需要维护其高可用。 failover 逻辑需要自己实现,其本身不能 支持故障的自动转移可扩展性差, 进行扩缩容都需要手动干预
msg2 AE_writable
redis 多线程流程
zllen
主线程
管道读取fd
accept
socket 回写是否结束
等待队列满
Master主存储
entry
redis 缓存雪崩 解决方案
命令请求处理器
msg1 AE_readable
bitmap 命令set andy 'a'get andy #asetbit andy 6 1 setbit andy 7 0 get andy #bbitcount andy 3 #andy代表的01100010(b的ASCII码是98),共有3个1
X
客户端 三
client fd
解除绑定
twemproxy
redis 内存模型 ziplist
命令回复处理器
获取可读socket
回写socket
rm2
feredation
encoding
hash(object) % 2^ 32
IO 线程组
j监听到新连接
multiplexing
DB
虚节点
管道写入fd
socket 是否读取完毕
consistent 一致性
0 条评论
下一页
为你推荐
查看更多