首页 > 解决方案 > 设计会话过期服务

问题描述

我与视频流提供商集成。流程如下:用户请求一个流 url,接下来我们代表用户向流提供者请求它并返回给用户。接下来,我们应该每 10 秒延长一次流 id(会话)。为了尽量减少与客户端的交互,并且由于网络速度较慢,我们希望代表用户进行此会话延长。假设用户每 2-5 分钟触发一次请求,同时服务器每 10 秒触发一次会话延长请求。

问题在于这种服务的可能设计。除了简单地定期迭代所有可用的会话密钥并调用延长服务之外,我还没有找到更好的解决方案。但是这种方法有缺点,当用户数量非常大时,它可能会减慢处理速度。此外,这种方法很难扩展。

也许您对如何克服这个问题有想法?或者请提出更好的解决方案

标签: javaperformancearchitecturesoftware-design

解决方案


我会将保持活动状态编写为一个独立的代码段,它将在结束自身之前每隔 x 秒调用一次保持活动持续 y 时间,其中 x、y 和保持活动端点是启动参数。

每次用户触发请求时 - 在后台启动其中一个。您如何打包取决于您的部署环境以及您打算如何管理横向扩展(后台线程、新进程、无服务器功能等)。

出于管理目的,您可能需要在缓存中维护一些状态信息(如果一个已经在运行、挂起的进程状态等,请不要启动一个新的)。


推荐阅读