腾讯的在线用户信息(一般在5000000条左右)保存在哪里? 内存 还是 数据库中?源贴:
http://community.csdn.net/Expert/TopicView1.asp?id=3282758各位有什么见解.

解决方案 »

  1.   

    en,不考虑重启的问题,那贴的主要的问题也是主要讨论服务器架构的问题.所以,我也想跟大家想一下这个架构的问题.在那贴的test7979提出的:WCQ结构很有意思,我就是很感兴趣
      

  2.   

    不过说实在,看了test7979的回贴,心中窃喜,感觉好像摸到点东西,又好像没有,郁闷.
      

  3.   

    不懂这方面的内容。据说Oracle数据库好像能提供类似能力
      

  4.   

    我们不要老是把注意力集中在服务器上,要晓得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.......
    (储存包括在线信息在内的所有资料)
      

  5.   

    又想到一点,就是QQ的意外下线(客户端断电,死机等)问题的处理:
    方案A(此方案对服务器压力过大,不可取)
    QQ用户资料服务器通过一定的顺序和时间间隔向当前在线用户发送在线确认请求,入在一定时间内无返回信息则判断为不在线。方案B(还是利用P2P,大大减少对服务器的压力)
    QQ客户端直接向自己在线好友发送在线确认请求,如一定时间内无返回,则想服务器发送该用户已下线的信息,以更新服务器信息。
      

  6.   

    angelcorps
      你这个也算是一个优化方法,不过,那贴主要是说服务器端.所以重启,硬件,客户端之类先不去考虑