IM 软件的在线列表通常是存放在什么地方的呢?

已查看 38 次
跳至第一个未读帖子

MagicKni...@gmail.com

未读,
2007年4月28日 02:37:332007/4/28
收件人 高性能网络编程邮件列表、关于在线列表
是否是放在数据库里面,如果是放在数据库里,是不是读取非常慢。
如果是放在内存中,是否占用很大的内存?

sunway

未读,
2007年4月28日 03:56:392007/4/28
收件人 高性能网络编程邮件列表
显然,数据库和内存里都有好友列表。

On 4月28日, 下午2时37分, "MagicKnifePri...@gmail.com"

gamexg

未读,
2007年4月28日 04:43:432007/4/28
收件人 高性能网络编程邮件列表
服务端放在数据库,客户端放在内存和硬盘。

On 4月28日, 下午2时37分, "MagicKnifePri...@gmail.com"
<MagicKnifePri...@gmail.com> wrote:

deng wei

未读,
2007年4月28日 04:57:492007/4/28
收件人 dev4s...@googlegroups.com
一定会有相当一部份数据放在内存了,你可以自己算一下这个大小。如果你的在线人数大到一台机器不够了,再加一台,也是难事啊。。
已删除帖子

王元涛

未读,
2007年4月29日 22:08:442007/4/29
收件人 高性能网络编程邮件列表
内存中可能有索引,指向数据库中的的串行化对象。

Kalos Han

未读,
2007年4月29日 22:16:152007/4/29
收件人 dev4s...@googlegroups.com

请不要打击别人说话的权利,每次你想批评别人的时候,要想到不是每一个人都拥有和你一样优秀的条件的.



 
sunway <sunh...@gmail.com>
发件人:  dev4s...@googlegroups.com

2007-04-28 17:15


收件人
"高性能网络编程邮件列表" <dev4s...@googlegroups.com>
抄送
主题
Re: IM 软件的在线列表通常是存放在什么地方的呢?






LZ尽发这些弱智问题,我已经把他的帐号封了。



On 4月28日, 下午2时37分, "MagicKnifePri...@gmail.com"
<MagicKnifePri...@gmail.com> wrote:
> 是否是放在数据库里面,如果是放在数据库里,是不是读取非常慢。
> 如果是放在内存中,是否占用很大的内存?



--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.


Ghost Cheng

未读,
2007年4月29日 23:17:452007/4/29
收件人 dev4s...@googlegroups.com
每个人都有权利说话,是不错,但是要看你在什么样的场合讨论什么样的主题了。
这个group是"高性能网络编程"! 不是给新手来讨论一些看书或google很容易就能找到答案的问题的。
如果每个人都 可以随意发表一些不分类别的主题,那google group 还要 分组分类别 干什么 ?
不客气的说,LZ 属于就是很典型的懒人一类,他提的那些问题,很随意就能在google上找到答案,但是他自己不去找,
却跑来这里,希望大家帮他完成这些简单的东西。
这里的每个人都是有自己 工作要做的,没人有空去给新手当免费老师。
--

Sincerely,
Ghost Cheng
Email : ghost...@gmail.com
Web : http://www.GhostSoft.net

sunway

未读,
2007年4月30日 01:16:232007/4/30
收件人 高性能网络编程邮件列表
LZ在本群发的帖子大部分都是
1,需要大家回帖讲解某些技术实现,需要大家给他设计系统架构和具体实现。
2,索要技术实现代码。
然后就是本帖这样的问题,典型的动口不动脑。为了维护本列表的正常讨论环境,我封掉了他的帐号。
对于1类问题如果碰到技术上的难点,大家帮忙解释一下也未尝不可,但是如果让大家给他设计架构和
帮他实现架构上一些技术实现这个就说不过去了,然后是2类问题索要代码,关于这个sodme已经说过,
索要代码是不可以的。再说了具体代码可以从开源的项目里去找,现在的开源项目多了去了,而且
CodeProject上大把IOCP以及各类服务器端的代码。

我上一个回帖语气不太好,我自己删除了,对于这样的回帖我表示道歉,以后我会注意。
希望大家以后发贴前先做好充足的功课,这样大家交流就有一个比较好的基础。维护本列表一个好的
讨论氛围。

On 4月30日, 上午10时16分, "Kalos Han" <Kalos....@accton.com.cn> wrote:
> 请不要打击别人说话的权利,每次你想批评别人的时候,要想到不是每一个人都拥有
> 和你一样优秀的条件的.
>
> sunway <sunhui...@gmail.com>

Fwolf

未读,
2007年4月30日 02:50:382007/4/30
收件人 dev4s...@googlegroups.com
同意,不是我们清高,而是不愿意把时间浪费在这等懒人上
当然大家还是要给他指明方向的

On Mon, Apr 30, 2007 at 11:17:45AM +0800, Ghost Cheng wrote:
> 每个人都有权利说话,是不错,但是要看你在什么样的场合讨论什么样的主题了。

> 这个group是"高性能网络编程"!不是给新手来讨论一些看书或google很容易就能找到答案


> 的问题的。
> 如果每个人都可以随意发表一些不分类别的主题,那google group 还要分组分类别干什么
> ?
> 不客气的说,LZ 属于就是很典型的懒人一类,他提的那些问题,很随意就能在google上找
> 到答案,但是他自己不去找,
> 却跑来这里,希望大家帮他完成这些简单的东西。
> 这里的每个人都是有自己工作要做的,没人有空去给新手当免费老师。

--
http://www.fwolf.com/
Vimtips: 设置F12键清除所有内容
map <F12> 1GdG:wq

signature.asc

daniel wang

未读,
2007年5月9日 04:59:252007/5/9
收件人 dev4s...@googlegroups.com
有点过分了, 这种问题不是很有价值, 但也不至于弱智.


On 4/28/07, sunway <sunh...@gmail.com> wrote:

LZ尽发这些弱智问题,我已经把他的帐号封了。


On 4月28日, 下午2时37分, "MagicKnifePri...@gmail.com"
<MagicKnifePri...@gmail.com > wrote:

sunway

未读,
2007年5月9日 08:35:022007/5/9
收件人 高性能网络编程邮件列表
只要稍微有点脑子的开发人员都会想到在线列表肯定是在内存里。

On 5月9日, 下午4时59分, "daniel wang" <daniel...@gmail.com> wrote:
> 有点过分了, 这种问题不是很有价值, 但也不至于弱智.
>

> On 4/28/07, sunway <sunhui...@gmail.com> wrote:
>
>
>
>
>
> > LZ尽发这些弱智问题,我已经把他的帐号封了。
>
> > On 4月28日, 下午2时37分, "MagicKnifePri...@gmail.com"
> > <MagicKnifePri...@gmail.com> wrote:
> > > 是否是放在数据库里面,如果是放在数据库里,是不是读取非常慢。

> > > 如果是放在内存中,是否占用很大的内存?- 隐藏被引用文字 -
>
> - 显示引用的文字 -

wyu...@gmail.com

未读,
2007年5月9日 11:57:092007/5/9
收件人 高性能网络编程邮件列表
>只要稍微有点脑子的开发人员都会想到在线列表肯定是在内存里。
我看不一定,这个取决予系统的在线用户的容量问题,大家可以做一个简单的计算就知道答案了
用户应该包括的基本内容有
ID号码 4字节 (如果是以邮件地址,字符为ID号码的就更加长了,比如MSN,SKYPE等,我们假定是100字符)
在线状态 2 (另外如果包括自己定义的在线状态,比如QQ,假定是50字符)
用户的显示名称 100字节 (很多人都习惯变换自己的昵称 :-) )
以上是假定用户状态发生变化后,其它用户不是使用P2P方式获取对方的状态信息。那么一个用户需要的字节数量就是
4+2+100=106 或者 100+50+100=250
那么5百万用户需要:

5000000×106=506000000 大约 103M

或 5000000×250=1250000000 大约 1220M

注意以上仅仅是用户的基本信息的需要,如果加上为了加快搜索的其它东西,那么需要的容量就更加大了,我们大家不要想当然地以为增加容量就能解决问题,在
5百万用户中快速搜索,修改某个用户的信息不是稍微有点脑子的开发人员就能解决的。
不然大家都是MSN,QQ,SKYPE,ICQ的系统架构师了。

> > - 显示引用的文字 -- 隐藏被引用文字 -
>
> - 显示引用的文字 -

deng wei

未读,
2007年5月9日 23:33:092007/5/9
收件人 dev4s...@googlegroups.com
那只是你自己的以为了,你以为大家都会简单的以一个MAP什么的存储吗?你的这个计算只能说明你过份担心大家的水平了。在内存中不一定就快,在硬盘中也不一定就慢。。。

bowl...@gmail.com

未读,
2007年5月9日 23:43:542007/5/9
收件人 dev4s...@googlegroups.com
关于这个问题我建议大家看看。Google 的解决方案吧。虽然文档讲得不是很细致但也
可以开阔大家的思路了。
1.Google File System
2. 超大集群的简单数据处理 MapReduce
3. 海量数据分析:Sawzall并行处理

张仁智

----------------------------------------------------------------------------
----------------------------------------------------------------------------
----------------------------------------------------------------------------
--------------

gfs.doc
mapreduce.doc
sawzall.doc

bowl...@gmail.com

未读,
2007年5月9日 23:53:482007/5/9
收件人 dev4s...@googlegroups.com
上10W用户同时在线的系统都采用集群了。
存储模式和简单的单服务器完全两码事。
用内存和容量这样计算是无意义的。
每台服务器实时承担的用户数量还是非常有限的。
完全不需要把无用的数据加载入内存。
而同时也不需要在同一台服务器上存储所有的在线用户信息。
你们可以参照Mail服务器和其他IM服务器的设计思路。
通过合理的路由模式找到需要的用户信息就醒了。
采用活动目录服务器(Directory Server)树状结构存储用户信息是一个比较简便的模
式。
或者采用DNS的查询路由模式。别说500W用户了。500WW的用户都没问题。

张仁智


-----邮件原件-----
发件人: dev4s...@googlegroups.com [mailto:dev4s...@googlegroups.com] 代
wyu...@gmail.com
发送时间: 2007年5月9日 23:57
收件人: 高性能网络编程邮件列表
主题: Re: IM 软件的在线列表通常是存放在什么地方的呢?

>只要稍微有点脑子的开发人员都会想到在线列表肯定是在内存里。
我看不一定,这个取决予系统的在线用户的容量问题,大家可以做一个简单的计算就知
道答案了
用户应该包括的基本内容有
ID号码 4字节 (如果是以邮件地址,字符为ID号码的就更加长了,比如

何万祥

未读,
2007年5月10日 05:16:002007/5/10
收件人 dev4s...@googlegroups.com

回复:bowl...@gmail.com 
 
显示详细信息
感谢分享,多看看这些开阔眼界的资料是很有必要的。

sunway

未读,
2007年5月10日 07:45:232007/5/10
收件人 高性能网络编程邮件列表
一个机器放不下全局的在线用户数据,不会hash到N个服务器上,非要放数据库里?


On May 10, 11:53 am, <bowlon...@gmail.com> wrote:
> 上10W用户同时在线的系统都采用集群了。
> 存储模式和简单的单服务器完全两码事。
> 用内存和容量这样计算是无意义的。
> 每台服务器实时承担的用户数量还是非常有限的。
> 完全不需要把无用的数据加载入内存。
> 而同时也不需要在同一台服务器上存储所有的在线用户信息。
> 你们可以参照Mail服务器和其他IM服务器的设计思路。
> 通过合理的路由模式找到需要的用户信息就醒了。
> 采用活动目录服务器(Directory Server)树状结构存储用户信息是一个比较简便的模
> 式。
> 或者采用DNS的查询路由模式。别说500W用户了。500WW的用户都没问题。
>
> 张仁智
>
> -----邮件原件-----
> 发件人: dev4s...@googlegroups.com [mailto:dev4s...@googlegroups.com] 代

> 表 wyu2...@gmail.com

> > - 显示引用的文字 -- Hide quoted text -
>
> - Show quoted text -

sunway

未读,
2007年5月10日 07:47:392007/5/10
收件人 高性能网络编程邮件列表
在线用户表是频繁访问的数据,放数据库里根本就不合适。

> > - Show quoted text -- Hide quoted text -

sunway

未读,
2007年5月10日 07:49:442007/5/10
收件人 高性能网络编程邮件列表
在内存里肯定比在磁盘上快,这个是没有任何疑问的。

On May 10, 11:33 am, "deng wei" <dengwei....@gmail.com> wrote:
> 那只是你自己的以为了,你以为大家都会简单的以一个MAP什么的存储吗?你的这个计算只能说明你过份担心大家的水平了。在内存中不一定就快,在硬盘中也不一定就-慢。。。

deng wei

未读,
2007年5月10日 20:43:552007/5/10
收件人 dev4s...@googlegroups.com
我不是跟你比绝对速度。。不讨论这个问题。

sunway

未读,
2007年5月10日 21:51:222007/5/10
收件人 高性能网络编程邮件列表
解决办法就我知道有2个。
1,分段,把号码端分成N个,一个状态服务器保存一段号码的状态。
2,HASH,用合适的HASH 算法把号码分到N个状态服务器上保存,每次查询先计算HASH然后去对应的状态服务器查询。
对于用户状态比较简单,用户数字号码小于32bit的用户状态还可以采用BITMAP查询,这样单台机器就可以装4G个用户的状态,速度更快。


On May 10, 11:53 am, <bowlon...@gmail.com> wrote:

> 上10W用户同时在线的系统都采用集群了。
> 存储模式和简单的单服务器完全两码事。
> 用内存和容量这样计算是无意义的。
> 每台服务器实时承担的用户数量还是非常有限的。
> 完全不需要把无用的数据加载入内存。
> 而同时也不需要在同一台服务器上存储所有的在线用户信息。
> 你们可以参照Mail服务器和其他IM服务器的设计思路。
> 通过合理的路由模式找到需要的用户信息就醒了。
> 采用活动目录服务器(Directory Server)树状结构存储用户信息是一个比较简便的模
> 式。
> 或者采用DNS的查询路由模式。别说500W用户了。500WW的用户都没问题。
>
> 张仁智
>
> -----邮件原件-----
> 发件人: dev4s...@googlegroups.com [mailto:dev4s...@googlegroups.com] 代

> 表 wyu2...@gmail.com

> > - 显示引用的文字 -- Hide quoted text -

geraint

未读,
2007年8月18日 13:04:122007/8/18
收件人 dev4s...@googlegroups.com
收藏
回复全部
回复作者
转发
0 个新帖子