在VC看到一贴,很不错,想听各位的见解

saoren 2004-08-30 10:59:56
腾讯的在线用户信息(一般在5000000条左右)保存在哪里? 内存 还是 数据库中?

源贴:
http://community.csdn.net/Expert/TopicView1.asp?id=3282758

各位有什么见解.
...全文
154 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
huiwww 2004-08-31
  • 打赏
  • 举报
回复
我的公司的一般的小服务器都几G,我想保存在内存也不奇怪。
saoren 2004-08-31
  • 打赏
  • 举报
回复
angelcorps
你这个也算是一个优化方法,不过,那贴主要是说服务器端.所以重启,硬件,客户端之类先不去考虑
angelcorps 2004-08-31
  • 打赏
  • 举报
回复
又想到一点,就是QQ的意外下线(客户端断电,死机等)问题的处理:
方案A(此方案对服务器压力过大,不可取)
QQ用户资料服务器通过一定的顺序和时间间隔向当前在线用户发送在线确认请求,入在一定时间内无返回信息则判断为不在线。

方案B(还是利用P2P,大大减少对服务器的压力)
QQ客户端直接向自己在线好友发送在线确认请求,如一定时间内无返回,则想服务器发送该用户已下线的信息,以更新服务器信息。
angelcorps 2004-08-31
  • 打赏
  • 举报
回复
我们不要老是把注意力集中在服务器上,要晓得QQ是支持P2P的,是不是有相当一部分的数据信息交换是通过P2P直接完成的呢?
登陆过程设想如下:
10001登陆A服务器,向服务器请求获得好友列表(其他如好友分组信息等不计),服务器返回给10001的是好友列表以及在线好友的IP地址,然后通知10001在线好友10001上线信息的工作就由10001的客户端来完成,即直接P2P发送上线信息,这样多少会减少对服务器的压力。
下线以及隐身通知相关好友的原理类似,直接P2P发送信息,不必要再由服务器中转。当然,下线以及隐身的时候要先通知一下服务器,这样服务器就储存了10001的在线情况,以便在10001其他好友上线时给其返回正确的好友列表。

另:
服务器架构的猜想

登陆服务器A 登陆服务器B 登陆服务器C..........
I I I
服务器服务器(加快服务器间信息交换速度)
I I
QQ用户资料数据库服务器A QQ用户资料数据库服务器B.......
(储存包括在线信息在内的所有资料)
Eastunfail 2004-08-30
  • 打赏
  • 举报
回复
不懂这方面的内容。据说Oracle数据库好像能提供类似能力
saoren 2004-08-30
  • 打赏
  • 举报
回复
不过说实在,看了test7979的回贴,心中窃喜,感觉好像摸到点东西,又好像没有,郁闷.
saoren 2004-08-30
  • 打赏
  • 举报
回复
en,不考虑重启的问题,那贴的主要的问题也是主要讨论服务器架构的问题.

所以,我也想跟大家想一下这个架构的问题.

在那贴的test7979提出的:WCQ结构很有意思,我就是很感兴趣
Eastunfail 2004-08-30
  • 打赏
  • 举报
回复
服务器应该不会随便重启吧。
saoren 2004-08-30
  • 打赏
  • 举报
回复
如楼上所说,如果分担,那其中想重启,该如何了?
Eastunfail 2004-08-30
  • 打赏
  • 举报
回复
内存数据库啊。这个年代有这个东西了
Eastunfail 2004-08-30
  • 打赏
  • 举报
回复
几个服务器共同分担负担保存在内存中?
saoren 2004-08-30
  • 打赏
  • 举报
回复
俺还是没水平,想想D还是熟点,问问大家的一般怎么做这些东西的?
whitetiger8 2004-08-30
  • 打赏
  • 举报
回复
问他们吧。呵呵。
如果在线的用户都放在数据库里了,那样的话。。。呵呵

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧