memcache 如何处理大并发的写操作

2016-03-10 14:16:23 +08:00
 lixiaohan

加入 我现在有 100 台 memcache 机器, 我现在有亿级的客户端写入请求, 请问 我如何来处理这些写入请求,从而做到数据一致性?

4805 次点击
所在节点    程序员
11 条回复
zqwcrystal
2016-03-10 14:29:28 +08:00
做集群,压力分发到 100 台上,每台存储的数据不一样,不会有一致性问题
lixiaohan
2016-03-10 14:48:00 +08:00
@zqwcrystal 那这样 我读的时候 就会数据不一致啊,每台数据不一样
zhicheng
2016-03-10 14:50:33 +08:00
这个时候丢给你一个关键字就够了。

一致哈希
https://zh.wikipedia.org/wiki/%E4%B8%80%E8%87%B4%E5%93%88%E5%B8%8C
yahoo21cn
2016-03-10 14:54:06 +08:00
我举个栗子,你写入的是用户数据,用户编号是自增整数,那么单数存储 1 号 memcache ,双数存入 2 号 memcache 。程序里需要读取数据的时候,也是单数用户去 1 号服务器取,双数用户去 2 号服务器取。如果用户 id 是 uuid 这类字符串,可以取首字母 asii 码。这是最简易的散列。
建议去看 3 楼的哈希一致,是当前比较流行的散列方法
likuku
2016-03-10 14:58:30 +08:00
LZ 你想要的是 100 台 memcache 可以并发写任意机器,也可以并发读任意机器,且从任意机器里都可以抓到全部数据?

( 100 台读写,且 100 台之间都一致性同步)
mhycy
2016-03-10 15:03:33 +08:00
为啥亿级的数据用的是 memcache 而且要保证一致性?
感觉 memcache 并不是做这事的最佳选择
tabris17
2016-03-10 15:08:32 +08:00
一致性哈希不是已经在 memcache 客户端协议上实现了么。

除非你几亿请求同时写入一个 key ,否则完全不是问题
knightdf
2016-03-10 15:20:40 +08:00
你的问题和大并发写并没有什么关系。。
zqwcrystal
2016-03-10 15:32:20 +08:00
@lixiaohan 你根据请求来源判断去读对应的机器上的数据就行了
firefox12
2016-03-10 18:28:58 +08:00
为什么总是上来就是上亿呢?
没有请求大小 请求频率 数据冷热 就来问这种问题就是耍流氓

孩子 你也不会问了就掌握亿级用户的支持能力的。最好从实践 1 万开始
lixiaohan
2016-03-11 11:23:18 +08:00
@firefox12 sorry 是我夸张了点 ,其实我的本意是 尽量多考虑一些事情 ,不好意思

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/262492

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX