加入 我现在有 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 ![]() |
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 万开始 |