数据结构论坛

首页 » 分类 » 问答 » 场景之在线人数或者粉丝查询实现
TUhjnbcbe - 2024/7/8 15:50:00
白癜风规范化 https://disease.39.net/bjzkbdfyy/171014/5761442.html

直播间在线人数或者粉丝查询

一、主要功能

通常对于一些实时在线业务中,比如直播业务中的主播,希望让主播看到直播间实时在线粉丝数等数据,从而从数据方面提升主播的整体直播体验。

二、简单方案:

最简单的方案就是通过所有在线人数判断与主播是否构成粉丝关系,每个人进入直播间会产生记录,根据用户ID去遍历主播与用户的关系表,判断记录中is_follow关系是否为1,为1用户则为主播粉丝,记录下来,遍历整张表结束则可以统计出在线粉丝人数。缺点:对于在线粉丝查询这一功能而言,是相对实时更新并且主播端请求频率比较高的操作,如果每次查询根据每个在线的用户再去扫描表,即使是扫描从库也是很耗时,因此是不可取的。而对于主播而言短暂的粉丝数量误差延迟是可以接受的,所以考虑引入redis进行缓存记录。

三、涉及场景

也就是记录在线粉丝功能中涉及到的主要接口

1、用户进入直播间:用户进入直播间之后判断是否粉丝,如果是粉丝并可以添加记录

2、用户心跳:一般用户和server,server和主播都会维持等间隔几秒发送一次心跳,心跳的主要作用包括获取直播间的一些基础人数,商品,礼物等信息以及维持连接正常等功能,同样基础数据中也包括在线粉丝数据。而对于用户端而言,可以在用户发起心跳的时候,判断是否是主播粉丝,如果是则添加记录。

3、用户离开房间:用户离开直播间触发判断是否粉丝,如果是粉丝并从记录删除的操作。

4、超时断开连接:一般可能由于一些异常原因,比如网络等问题,用户和server的连接可能会被判超时,而server的策略则多数是,定期会清理一些超时连接,在清理超时连接的时候,根据连接的用户是否主播构成粉丝关系,需要从在线粉丝记录中删除。

5、主播关闭直播间:清除粉丝在线记录

6、主播开播:开启在线粉丝记录

7、开播过程中添加

1
查看完整版本: 场景之在线人数或者粉丝查询实现