gpt4 book ai didi

java - 可扩展后端中的服务器发送事件

转载 作者:太空宇宙 更新时间:2023-11-04 13:49:31 25 4
gpt4 key购买 nike

我已经在 Heroku 中部署了一个 Java Web 应用程序。

现在,我想更改后端,以便它可以通知连接的用户有关特定事件的信息。我认为我可以使用服务器发送的事件来做到这一点,我认为它的工作方式如下:

  1. 当用户打开前端时,它会为服务器发送的事件建立连接。
  2. 当后端收到此类请求时,它会创建此类连接(基本上是一个 EventOutput)并将其与用户 ID 一起存储在某个位置(假设存储在内存中的 Map 中)。
  3. 当有新事件发生时,后端会找到需要通知的用户,根据其ID检索其连接并向其发送通知。

当您只有一台机器处理请求时,这可以正常工作。

当我想要扩展我的应用程序并引入更多机器时,我的问题就开始了。然后,我无法再将这些连接真正存储在一台机器的内存中,我需要使用一些集中位置。但是集中位置将需要序列化/反序列化连接,这意味着它不再是同一个连接!

你通常如何做这样的事情?

最佳答案

一种解决方案是使用 session 亲和性(也称为粘性 session ),这将确保单个 session 的请求“始终”路由到同一进程(我说“始终”是因为有一些注意事项)。您可以通过运行以下命令来打开此功能:

$ heroku labs:enable http-session-affinity

通过这种方式,您可以将内容保留在内存中,而不必序列化 session 。

这里有一篇文章更详细地描述了此功能:https://blog.heroku.com/archives/2015/4/28/introducing_session_affinity

关于java - 可扩展后端中的服务器发送事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30458969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com