直播间在线人数或者粉丝查询
一、主要功能
通常对于一些实时在线业务中,比如直播业务中的主播,希望让主播看到直播间实时在线粉丝数等数据,从而从数据方面提升主播的整体直播体验。
二、简单方案:
最简单的方案就是通过所有在线人数判断与主播是否构成粉丝关系,每个人进入直播间会产生记录,根据用户ID去遍历主播与用户的关系表,判断记录中is_follow关系是否为1,为1用户则为主播粉丝,记录下来,遍历整张表结束则可以统计出在线粉丝人数。缺点:对于在线粉丝查询这一功能而言,是相对实时更新并且主播端请求频率比较高的操作,如果每次查询根据每个在线的用户再去扫描表,即使是扫描从库也是很耗时,因此是不可取的。而对于主播而言短暂的粉丝数量误差延迟是可以接受的,所以考虑引入redis进行缓存记录。
三、涉及场景
也就是记录在线粉丝功能中涉及到的主要接口
1、用户进入直播间:用户进入直播间之后判断是否粉丝,如果是粉丝并可以添加记录
2、用户心跳:一般用户和server,server和主播都会维持等间隔几秒发送一次心跳,心跳的主要作用包括获取直播间的一些基础人数,商品,礼物等信息以及维持连接正常等功能,同样基础数据中也包括在线粉丝数据。而对于用户端而言,可以在用户发起心跳的时候,判断是否是主播粉丝,如果是则添加记录。
3、用户离开房间:用户离开直播间触发判断是否粉丝,如果是粉丝并从记录删除的操作。
4、超时断开连接:一般可能由于一些异常原因,比如网络等问题,用户和server的连接可能会被判超时,而server的策略则多数是,定期会清理一些超时连接,在清理超时连接的时候,根据连接的用户是否主播构成粉丝关系,需要从在线粉丝记录中删除。
5、主播关闭直播间:清除粉丝在线记录
6、主播开播:开启在线粉丝记录
7、开播过程中添加