深入式理解分布式缓存

分布式系统理论

cap理论

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
c
在同一时刻是否有同样的值
任何的读写都应该看起来是"原子的",串行的,后边的读一定能读到前面写的内容
a
一部分故障后,集群整体是否还能响应客户端的读写请求
任何非失败节点都应该有限时间内给出请求的回应
p
系统在一定时限内达到一致,就以为发生来分区,必须在ca之间做出选择
允许节点之间丢失任意多的消息,当忘了分区发生时,节点之间的消息可能会发生丢失
ca no p
数据独立的
关系型数据库,ldap

cp no a
每个请求都需要在server之间强一致,而p会导致同步时间无线延长
分布式数据库,分布式锁
ap no c
一旦分区发生,节点间可能失去联系,可能导致数据不一致





acid,base,cap


base
基本可用,软状态,最终一致性

paxos

2pc

1
2
3
4
5
6
7
1,提交请求
确定参与者对于事务是否准备就绪(commit,no)
2,提交
协调器决定提交还是退出事务

协调器分别和多个事务参与者应答复杂度高,性能也受到挑战
强一致也要性能一致上做这种,比如超时,阶段性补偿

3pc

1
2
3
1,投票,询问是否可提交
2,预提交
3,真实提交,commit或失败重试

raft

1
2
3
领导者
选民
候选人

lease机制

解决脑裂问题

1
2
3
设置仲裁机制
如第三方检测服务器,检查主从
检测到高可用,设置lease机制,获取新lease后,老的失效,还可以人工让老master转为slave

quorum nwr

1
2
3
4
5
6
7
8
9
n
同一份复制到份数
w
更新一个数据确保成功的份数
r
读取一个数据需要读取拷贝的份数

w>n/2
w+R>n

mvcc

1
多版本控制

分布式系统设计策略

心跳检测

高可用设计

1
2
3
主备
互备
集群

容错性

1
容故障

负责均衡

1
2
3
4
轮询
最少连接数
ip地址hash
权重

分布式系统设计实践

全局id

1
2
3
4
5
6
7
8
uuid    
id生成表模式
snowflake
41 10 12
时间 机器 序号
高性能,低延迟,独立应用,时间有序
结合缓存
高性能,低延迟,id不连贯

hash取模

一致性hash

1
引入虚拟节点,解决平衡问题,指沙溪的结果能够分布导所有的缓冲中去,这样可以是的所有的缓存空间都得到利用

路由表

1
2
3
全局计算的节点
数据集中式管理,存在单点故障
数据规模小,数据库本省有备份机制或者failover能力才可行

数据拆分

动手写缓存

lru

weak

1
2
3
4
strong
soft
weak
phantom

base

guava cache

1
2
3
4
5
6
7
8
9
10
11
12
使用内存提升速度
更新锁定
查询volatite非锁定

被动删除
被动删除
过期删除
引用删除
主动删除
单独删除
批量删除
删除所有数据

待续