本人非腾讯员工,只是从系统设计角度探讨一下。
这个筛选应该不是读取信息时做的,而是发送信息时。
用户每发送一条信息或者留言,则会计算他的好友关系,其中有权限观看这条信息的好友timeline上会插入一个消息id。(编辑好友关系、删除消息等等同样)——好友上线后,直接从自己的timeline栈中读出top消息id,取得消息体即可。
这种方法在大量僵尸用户的时候会给很多无活跃用户保持很长的消息队列而浪费存储,但是在用户平均活跃度较高的时候,是一种行之有效高效率的方法。