加入 我现在有 100 台 memcache 机器, 我现在有亿级的客户端写入请求, 请问 我如何来处理这些写入请求,从而做到数据一致性?
1
zqwcrystal 2016-03-10 14:29:28 +08:00
做集群,压力分发到 100 台上,每台存储的数据不一样,不会有一致性问题
|
2
lixiaohan OP @zqwcrystal 那这样 我读的时候 就会数据不一致啊,每台数据不一样
|
3
zhicheng 2016-03-10 14:50:33 +08:00 2
|
4
yahoo21cn 2016-03-10 14:54:06 +08:00
我举个栗子,你写入的是用户数据,用户编号是自增整数,那么单数存储 1 号 memcache ,双数存入 2 号 memcache 。程序里需要读取数据的时候,也是单数用户去 1 号服务器取,双数用户去 2 号服务器取。如果用户 id 是 uuid 这类字符串,可以取首字母 asii 码。这是最简易的散列。
建议去看 3 楼的哈希一致,是当前比较流行的散列方法 |
5
likuku 2016-03-10 14:58:30 +08:00
LZ 你想要的是 100 台 memcache 可以并发写任意机器,也可以并发读任意机器,且从任意机器里都可以抓到全部数据?
( 100 台读写,且 100 台之间都一致性同步) |
6
mhycy 2016-03-10 15:03:33 +08:00
为啥亿级的数据用的是 memcache 而且要保证一致性?
感觉 memcache 并不是做这事的最佳选择 |
7
tabris17 2016-03-10 15:08:32 +08:00
一致性哈希不是已经在 memcache 客户端协议上实现了么。
除非你几亿请求同时写入一个 key ,否则完全不是问题 |
8
knightdf 2016-03-10 15:20:40 +08:00
你的问题和大并发写并没有什么关系。。
|
9
zqwcrystal 2016-03-10 15:32:20 +08:00
@lixiaohan 你根据请求来源判断去读对应的机器上的数据就行了
|
10
firefox12 2016-03-10 18:28:58 +08:00 via iPhone
为什么总是上来就是上亿呢?
没有请求大小 请求频率 数据冷热 就来问这种问题就是耍流氓 孩子 你也不会问了就掌握亿级用户的支持能力的。最好从实践 1 万开始 |