我们不要老是把注意力集中在服务器上,要晓得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....... (储存包括在线信息在内的所有资料)
登陆过程设想如下:
10001登陆A服务器,向服务器请求获得好友列表(其他如好友分组信息等不计),服务器返回给10001的是好友列表以及在线好友的IP地址,然后通知10001在线好友10001上线信息的工作就由10001的客户端来完成,即直接P2P发送上线信息,这样多少会减少对服务器的压力。
下线以及隐身通知相关好友的原理类似,直接P2P发送信息,不必要再由服务器中转。当然,下线以及隐身的时候要先通知一下服务器,这样服务器就储存了10001的在线情况,以便在10001其他好友上线时给其返回正确的好友列表。另:
服务器架构的猜想登陆服务器A 登陆服务器B 登陆服务器C..........
I I I
服务器服务器(加快服务器间信息交换速度)
I I
QQ用户资料数据库服务器A QQ用户资料数据库服务器B.......
(储存包括在线信息在内的所有资料)
方案A(此方案对服务器压力过大,不可取)
QQ用户资料服务器通过一定的顺序和时间间隔向当前在线用户发送在线确认请求,入在一定时间内无返回信息则判断为不在线。方案B(还是利用P2P,大大减少对服务器的压力)
QQ客户端直接向自己在线好友发送在线确认请求,如一定时间内无返回,则想服务器发送该用户已下线的信息,以更新服务器信息。
你这个也算是一个优化方法,不过,那贴主要是说服务器端.所以重启,硬件,客户端之类先不去考虑