默认
发表评论 5
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
求教自研究直播系统中保持会话唯一性的方案
阅读(16245) | 评论(5 收藏 淘帖
直播间业务。

我把会话tag存在redis里面。  然后,业务上,需要保证唯一性,防止一个用户会话有多个长连接在,导致长连接溢出。

流程:
连上长连接->get old session,对比,如果相同,直接返回。 ->不同,则走进房流程。 进房间成功,内存修改成功->关掉 old session ->Set session tag to redis。


这个流程怎么保证并发安全。 必现使用分布式锁吗?有没有其他更优的方法。

我想用redis的redlock,锁住流程。 consul也考虑过,怕顶不住压力。(同时在线30W用户样子)

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:现想到一个多端的im,求IM跨平台的协议实现的sdk架构下一篇:大神门求助!im系统中的群聊离线发布如何设计好离线表结构?
推荐方案
评论 5
你直播系统,底层网络这一块,全是自已从零开始写的吗?
引用:JackJiang 发表于 2023-10-31 11:21
你直播系统,底层网络这一块,全是自已从零开始写的吗?

是,golang老项目了。 那个时候早期,开源不多,自己手写的。  另外,好像golang确实不需要框架啥的,简单。
引用:ykpeng 发表于 2023-10-31 11:32
是,golang老项目了。 那个时候早期,开源不多,自己手写的。  另外,好像golang确实不需要框架啥的,简 ...

通常的做法,你长连接肯定有心跳,起了一个新的连接的话,老的连接必然会废弃掉,客户端没有心跳过来的话,老的这些连接可以通过超时机制自动给断开。我感觉你现在的逻辑好 像有点复杂,不知道我理解的对不对
引用:JackJiang 发表于 2023-10-31 11:40
通常的做法,你长连接肯定有心跳,起了一个新的连接的话,老的连接必然会废弃掉,客户端没有心跳过来的话 ...

你说的没错,但是,历史遗留问题。 客户端也没做唯一性保证,我之前测试过,安卓没事会冒出多个socket同时在。。。。,但是老版本啊,没办法改了。 只能服务端努力了。
引用:ykpeng 发表于 2023-10-31 11:42
你说的没错,但是,历史遗留问题。 客户端也没做唯一性保证,我之前测试过,安卓没事会冒出多个socket同 ...

那你就按你上面的设想先作了再说,大不了版本回滚,也没别的好办法了
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部