为什么有的QQ好友在线有的在线却显示离线

发布于: 19:18:04发布者:天晴网友

手机在以下情况下会显示离线:

一、手机WiFi和流量处于关闭状态时,运行QQ会显示离线状态;

二、将后台运行的qq彻底关闭时,QQ会显示离线状态;

三、qq设置了隐身功能,即使在线也会显示离线。

其标志是一只戴着红色围巾的小企鹅,腾讯QQ支持在线聊天,视频通话,点对点断点续传文件,共享文件,网络硬盘,自定义面板,QQ邮箱等多种功能,并可与多种通讯终端相连。

声明:该文观点仅代表作者本人,天晴滚动网系信息发布平台,仅提供信息存储空间服务。

  • 区别 价格不同,散片cpu价格较低,没有包装盒和原装散热器;盒装cpu价格较高,有原装散热器。如果是通过正规渠道购买的散片cpu,性能和盒装cpu没有区别,散片cpu一般由电脑制造商大

  • Microsoft Windows 2000是由微软公司发行的Windows NT系列的32位视窗操作系统,起初被称为Windows NT 5.0。 英文版于2000年2月17日在美国旧金山正式发布,中文版于同年3月20日在中国北京正式推出

  • 总的来说,人脸识别功能就是一种生物识别技术,简单来讲就是通过人脸特征来识别人的身份或者进行身份查找,对于这一点还是需要了解的。 对于很多手机来说,都是支持人脸识别功

  • 微博 保存的图片相册不显示 ?一起来了解一下。 一、如果可以在手机里找到weibo这个相册,而没有找到自己刚刚保存的图片,这种情况则可能是保存图片的时候出了问题,可以尝试重新

  • 苹果抹机就是通过技术将手机所有的数据清除,并不等同于苹果手机的还原所有设置,还原所有设置是数据清除的一个过程,而这个抹机则是将苹果手机变成一个全新的手机,是处于激

  • 2018年11月份,华为余承东表示华为2020年目标为超越苹果后,继续超越三星成为全球最大的手机制造商,而且2019年也是有目标的,那就是和全球第一大手机厂商三星更接近。 具体事件

}

状态同步,有好友状态的同步,有群友状态的同步,有的需要实时同步,有的能够容忍延时。任何脱离业务的架构设计都是耍流氓,不同场景下,状态同步,究竟是推送还是拉取呢?

用户的在线状态,分为 客户端状态(端), 服务端状态(云)两种形态。

服务端状态,主要分为在线online和离线offline, 不同的状态,对于不同的业务处理流程可能不同。例如对于消息的处理:

(1)服务端状态在线,直接投递给用户;

(2)服务端状态离线,直接存储离线消息,等用户下一次登录拉取;

如何实时更新服务端状态?

用户uid-A 登录时,会修改用户的服务端状态为 在线

用户uid-A 登出时,会修改用户的服务端状态为 离线

经常的,服务端会将用户的服务端状态存储在高可用的缓存集群里。

不同的产品,会有不同的客户端状态,例如 隐身、离线、忙碌、勿扰等,这些状态大多是产品功能需求。

画外音:微信,在设计之初,就摒弃了用户端状态这个概念。

后文为了方便描述,不妨设待讨论的是QQ这种拥有客户端状态的产品,并假设客户端状态也只有在线和离线两种状态,后文统一称为“用户状态”。

uid-A登录时,先去数据库拉取自己的好友列表,再去缓存获取所有好友的状态。

用户uid-A的好友uid-B状态改变时(由登录、登出等动作触发),uid-A如何同步这一事件?

这里就有推拉的设计折衷了。

情况一:如果对于状态变更实时性要求不高,可以采用 拉取。

uid-A向服务器轮询拉取uid-B(其实是自己的全部好友)的状态,例如每1分钟一次,其 缺点是:

(1)如果uid-B的状态改变,uid-A获取不实时,可能有1分钟 时延;

(2)如果uid-B的状态不改变,uid-A会有大量无效的轮询请求,非常 低效;

情况二:如果对于状态变更实时性要求较高,则必须 推送。

uid-B状态改变时(由登录、登出等动作触发),服务端不仅要在缓存中修改uid-B的状态,还要将这个状体改变的通知推送给uid-B的在线好友。

推送的 优势是: 实时。

缺点是:当在线好友量很大时,任何一个用户状态的改变,会扩散成N个实时通知,这个N叫做“ 消息风暴扩散系数”。假设一个IM系统平均每个用户有200个好友,平均有20%的好友在线,那么消息风暴扩散系数N=40,这意味着,任何一个状态的变化会变成40个推送请求。

群友状态的一致性,和好友状态的一致性相比,复杂在哪里?可不可以采用实时推送?

群这个业务场景大伙也非常之熟悉,你能够加入若干群(例如20个),假设平均每个群有200人,即你会有4000个群友。

理论上群友状态也可以通过实时推送的方式实现,以保证实时性。进一步讨论之前,先一起估算下这个业务场景下的“消息风暴扩散系数”。

假设平均每个用户加了20个群,平均每个群有200个用户,依然假设20%的用户在线,那么为了保证群友状态的实时性,每个用户登录,就要将自己的状态改变通知发送给20*200*20%=800个群友,N=800,意味着, 任何一个状态的变化会变成800个推送请求。如果说好友状态实时推送,消息风暴扩散系数N=40尚可以接受,那么群友状态实时推送,N=800则是灾难性的。此类业务 往往采用轮询拉取的方式,获得群友的状态。

轮询拉取群友状态也会给服务器带来过大的压力,还有什么优化方式?

群友的数据量太大,虽然每个用户平均加入了20个群,但实际上并不会每次登录都进入每一个群。不采用轮询拉取,而采用 按需拉取,延时拉取的方式, 在真正进入一个群时才实时拉取群友的在线状态,是既能满足用户需求(用户感觉是状态是实时、一致的,但其实是进入群才拉取的),又能降低服务器压力。这是一种常见方法。

状态的实时性与一致性是一个较难解决的技术问题,不同的业务实现方式不同, 一般来说

(1)好友状态同步,是采用 推送的方式同步;

(2)群友状态同步,由于消息风暴扩散系数过大,一般采用 拉取的方式同步;

(3)群友状态同步,还能采用 按需拉取的优化方式,进一步降低服务端压力;

(4)“消息风暴扩散系数”是指一个消息发出时,变成N个消息的扩散系数,这个系数 一定程度上决定了技术采用推送还是拉取;

画外音:群消息的推送,也存在“消息风暴扩散系数”的问题。

架构师之路 -分享技术思路

知道为什么,一个微信群最多500人了吧

}

有的QQ用户明明是在线的但显示出来的却是离线?

为什么有的QQ用户明明是在线的但显示出来的却是离线?是怎么弄的?
  • 可以选择“隐身”的,这样其实你明明是在线,但是别人却看不到你。
    点击右下角的小企鹅或者QQ面板上最上面的那个你的头像,选择“隐身”即可。
     
}

我要回帖

更多关于 为什么qq显示离线还能聊天 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信