由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - Best practice for updating user data?
相关主题
intel icc hash_map 求救!STL感觉实在太变态了
consistent hashing实际应用[菜鸟问题]类模板问题
node.js, express, sails, angularjs在一起做project,折磨人啊c++ iterator 弱问
请教C++11c++ template question:
A C++ STL question请问Linux底下有没有最简易的show 2D x-y curve的工具
Re: USER_AGENT: python-requests/2.18.4用那个design pattern好?
How to update button status from node.js server ?关于inserter
一个C++的概念问题binary_search只要求forward_iterator?
相关话题的讨论汇总
话题: user话题: userid话题: server话题: data话题: best
进入Programming版参与讨论
1 (共1页)
z***e
发帖数: 5393
1
这应该是个常见的design问题,但是不知道怎么才是最好的方式。
打个比方说,服务器有几百万个user,所以用了多个data server,每个data server存
一部分user和相关信息(每个user的相关data很大).这个server存放哪些user并不是固
定的,会根据user的具体情况变化,问题就在于如果user这个具体情况非常频繁地变化的时
候如何有效处理。
user需要不停频繁地update信息,所以不能直接写数据库。那么每次user update的时
候,就会向服务器发网络请求,送出自己的userid和需要update的东西,网络server首先根据
userid找到user所在的data server,然后对该data server发出update请求.
这种情况,网络server就要专门用一个table来map userid<=>data server的关系,感
觉很浪费,有没有更好的方法?
e****d
发帖数: 895
2
you can also hash user ids to data servers.

userid

【在 z***e 的大作中提到】
: 这应该是个常见的design问题,但是不知道怎么才是最好的方式。
: 打个比方说,服务器有几百万个user,所以用了多个data server,每个data server存
: 一部分user和相关信息(每个user的相关data很大).这个server存放哪些user并不是固
: 定的,会根据user的具体情况变化,问题就在于如果user这个具体情况非常频繁地变化的时
: 候如何有效处理。
: user需要不停频繁地update信息,所以不能直接写数据库。那么每次user update的时
: 候,就会向服务器发网络请求,送出自己的userid和需要update的东西,网络server首先根据
: userid找到user所在的data server,然后对该data server发出update请求.
: 这种情况,网络server就要专门用一个table来map userid<=>data server的关系,感
: 觉很浪费,有没有更好的方法?

z***e
发帖数: 5393
3
哦,我没说清楚。network server是接受网络用户请求(比如要update数据),
data server就是存放用户信息(in memory)的server.
每个user对应的server不是固定的,根据条件变化。
我拿wow来打个比方吧,比如一个场景/区域中所有用户都在server 1上,现在有很多
用户非常频繁地切换场景,他的数据就会在server 1/2/3/...上频繁转移。那么我给出一个user
id,要查他在那个地方,就要有一个hashtable/map来存。每次用户的区
域变化了,就会改变server_id.
然后在每个server上,又有这样的东西,这个server还有别的
数据结构,比如当前区域所有玩家列表,就会是一个[userid,userid,userid,...]这样的
list。
所以这个问题是,我要能快速根据userid找到对应的server_id,又要能快速通过
server_id找到在这个server上的所有user.大概是这样。

server.
userid%8
h****e
发帖数: 2125
4
hash_map >
typedef hash_map >::iterator itertype;
hash_map
u only need to search userid once to find all user ids on a server. need to
be careful with update methods though. not sure whether this is what u want.
..

出一个user
用户的区
样的

【在 z***e 的大作中提到】
: 哦,我没说清楚。network server是接受网络用户请求(比如要update数据),
: data server就是存放用户信息(in memory)的server.
: 每个user对应的server不是固定的,根据条件变化。
: 我拿wow来打个比方吧,比如一个场景/区域中所有用户都在server 1上,现在有很多
: 用户非常频繁地切换场景,他的数据就会在server 1/2/3/...上频繁转移。那么我给出一个user
: id,要查他在那个地方,就要有一个hashtable/map来存。每次用户的区
: 域变化了,就会改变server_id.
: 然后在每个server上,又有这样的东西,这个server还有别的
: 数据结构,比如当前区域所有玩家列表,就会是一个[userid,userid,userid,...]这样的
: list。

z***e
发帖数: 5393
5
嗯,差不多是这个意思,但是就象你说的,update的时候会比较messy,整个table都要
lock住?
还有就是具体需求并不是找list,而是在list里面找符合某些条件的。
我问的意思是这种先通过userid找serverid,然后再在在一个list里面iterate的做法
,是否有更
好的解决方案?

to
want.

【在 h****e 的大作中提到】
: hash_map >
: typedef hash_map >::iterator itertype;
: hash_map
: u only need to search userid once to find all user ids on a server. need to
: be careful with update methods though. not sure whether this is what u want.
: ..
:
: 出一个user
: 用户的区
: 样的

1 (共1页)
进入Programming版参与讨论
相关主题
binary_search只要求forward_iterator?A C++ STL question
deque的pointer和reference是怎么回事?Re: USER_AGENT: python-requests/2.18.4
a question about std::stackHow to update button status from node.js server ?
呼唤大侠们,我实在不能实现C++泛型的精神。一个C++的概念问题
intel icc hash_map 求救!STL感觉实在太变态了
consistent hashing实际应用[菜鸟问题]类模板问题
node.js, express, sails, angularjs在一起做project,折磨人啊c++ iterator 弱问
请教C++11c++ template question:
相关话题的讨论汇总
话题: user话题: userid话题: server话题: data话题: best