S***w 发帖数: 1014 | 1 F的message设计,类似hdfs
有一个Directory, 当master
有n个data nodes
我的理解是
用户被分到其中data nodes中.
这个信息存在directory中
当发信给user_id, 要做
1. 连接directory service, 查找user_id的node
2. 把信存到user_id@node的记录里
有个问题
directory service 需要内存
假设1.5B user, 每个mapping 用10 byte
15B byte = 15G 内存
但是这么多request都到了directory service,
只是读还好, 可以load balancer
但是写怎么办
这里需要一个 concurrent hashmap,
lock, etc
性能总有限制啊? |
p*****2 发帖数: 21240 | 2 为什么不能用in memory db?
【在 S***w 的大作中提到】 : F的message设计,类似hdfs : 有一个Directory, 当master : 有n个data nodes : 我的理解是 : 用户被分到其中data nodes中. : 这个信息存在directory中 : 当发信给user_id, 要做 : 1. 连接directory service, 查找user_id的node : 2. 把信存到user_id@node的记录里 : 有个问题
|
S***w 发帖数: 1014 | 3
晕 根本没想过
【在 p*****2 的大作中提到】 : 为什么不能用in memory db?
|
l******g 发帖数: 366 | 4 为何mapping要占内存要lock?如果只是一个算法呢? |
w**z 发帖数: 8232 | 5 你可以设计算法,(consistent hash or something like that) 从 userID 就能知道
是哪个node。For distributed system, you don't want to have a global mapping.
【在 S***w 的大作中提到】 : F的message设计,类似hdfs : 有一个Directory, 当master : 有n个data nodes : 我的理解是 : 用户被分到其中data nodes中. : 这个信息存在directory中 : 当发信给user_id, 要做 : 1. 连接directory service, 查找user_id的node : 2. 把信存到user_id@node的记录里 : 有个问题
|
g*****g 发帖数: 34805 | 6 Check Cassandra, Memcached, Redis design and you'll understand. The userId
can be hashed and distributed in a cluster. And any single piece of data can
be further replicated, consistency can be reached as long as read+write >
replication factor.
【在 S***w 的大作中提到】 : F的message设计,类似hdfs : 有一个Directory, 当master : 有n个data nodes : 我的理解是 : 用户被分到其中data nodes中. : 这个信息存在directory中 : 当发信给user_id, 要做 : 1. 连接directory service, 查找user_id的node : 2. 把信存到user_id@node的记录里 : 有个问题
|
S***w 发帖数: 1014 | 7 这个我也想过
不过立马毙了 觉得不太好用
如何增加一个机器 岂不是要重新改算法?
需要人为干预
mapping.
【在 w**z 的大作中提到】 : 你可以设计算法,(consistent hash or something like that) 从 userID 就能知道 : 是哪个node。For distributed system, you don't want to have a global mapping.
|
S***w 发帖数: 1014 | 8 谢谢
Cassandra 我大概知道是用consistent hashing
没有master
应该没用户global mapping
所以你的意思是 其实这里不需要存mapping
用consistenthashing方法查询use id 的shard?
多谢指点
can
【在 g*****g 的大作中提到】 : Check Cassandra, Memcached, Redis design and you'll understand. The userId : can be hashed and distributed in a cluster. And any single piece of data can : be further replicated, consistency can be reached as long as read+write > : replication factor.
|
w**z 发帖数: 8232 | 9 That is what I was talking about.
【在 S***w 的大作中提到】 : 谢谢 : Cassandra 我大概知道是用consistent hashing : 没有master : 应该没用户global mapping : 所以你的意思是 其实这里不需要存mapping : 用consistenthashing方法查询use id 的shard? : 多谢指点 : : can
|
g*****g 发帖数: 34805 | 10 F probably uses MySQL sharding to achieve this, but the idea is the same.
【在 S***w 的大作中提到】 : 谢谢 : Cassandra 我大概知道是用consistent hashing : 没有master : 应该没用户global mapping : 所以你的意思是 其实这里不需要存mapping : 用consistenthashing方法查询use id 的shard? : 多谢指点 : : can
|
S***w 发帖数: 1014 | 11 谢谢大牛
你们什么都懂
【在 w**z 的大作中提到】 : That is what I was talking about.
|
S***w 发帖数: 1014 | |