- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在使用MySQL数据库在Go中创建一个Web应用程序。我们的用户一次只能拥有一个活跃的客户端。就像Spotify一样,您一次只能在一台设备上听音乐。为此,我制作了一个映射,将用户ID和作为其值的对其 Activity Websocket连接的引用作为键。根据客户端必须在请求 header 中发送的websocket ID,我们可以确定该请求来自其 Activity session 的天气。
我的问题是在全局空间中存储数据(在这种情况下是带有用户ID和Websocket的 map )是一种好的做法,还是将其存储在数据库中更好?
我们预计不会同时吸引超过10000个活跃客户。平均可能在1000左右。
1 Câu trả lời
如果仅运行websocket服务器的一个实例,则将其存储在内存中就足够了。因为如果由于某种原因它关闭/重新启动,那么所有连接将丢失,所有客户端将不得不再次创建它们(因此,要使用该服务的所有客户端将再次填充连接列表) 。
但是,如果计划水平扩展它,以便在负载均衡器后面有多个websocket服务,则可能需要将连接存储在某种数据库中。并不是因为它一定需要更持久,而是因为您需要能够针对所有服务连接检查请求。
也可以有一个单独的服务来处理传入的请求,并询问所有websocket服务,如果其中任何一个具有请求中指定的连接。如果您添加了发布/订阅队列,并且每个websocket服务都为其所有websocket ID订阅了 channel ,并且接收请求的服务随后发布了websocket ID,则可以完成此操作,然后websocket服务可以在单独的 channel 上发回回复如果他们有联系。如果没有人响应,您必须决定如何处理(没有websocket服务具有websocket ID)。该 channel 不存在,或者您希望在特定时间内得到答案。或者,您可以发布有关一般主题的问题,并期望所有websocket服务都能答复(是或否)。
至于您是否需要扩展它,我猜主要取决于您在其上运行服务的基础服务器。如果我对它的理解正确,那么除了跟踪其连接之外,websocket服务基本上不会做任何事情(您应该添加一些乒乓球来发现连接是否丢失)。那么,您的限制应该主要是系统一次可以处理多少个文件描述符。如果该限制比预期的最大用户数大得多,那么仅运行一台服务器并将所有内容存储在内存中可能是一个好的解决方案!
最后,如果您要为所有用户打开一个websocket,为什么不通过该websocket连接进行所有“其他”通信,而不是让他们使用其websocket ID发送HTTP请求?也许HTTP更适合您的用例,但可能需要考虑一下:)
关于database - Webapp服务器数据存储: Memory vs database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59892812/
我有一个在 Tomcat 7.0.54 上运行的 Java webapp。我在 webapp 中使用 Spring。当用户登录到/favicon.ico 时。当用户第二次登录时,他们将被重定向到正确的
如何使用通用的 webappclassloader 为 tomcat 中的所有 webapps 自定义 webapp 类加载器? 我看到我可以扩展类加载器并将其添加到每个 web 应用程序的上下文标记
我有一个 jquery mobile 和 php webapp,可以在 iOS7 中正常工作。我最近升级到 iOS8 进行一些测试,但我遇到了状态栏现在与 Web 应用程序标题重叠的问题。这似乎也导致
我注意到这些文件夹具有非常不同的属性。我最近在 webapps 文件夹下部署了一个 .war 文件。我注意到,一旦部署了 .war 文件,项目的未压缩版本就会添加到目录中。当我尝试修改未压缩版本中的任
假设您在本地主机的 Tomcat 上部署了一个名为 MyWebApp 的网络应用程序。如果您像这样使用浏览器访问它: localhost:8080/MyWebApp 那为什么会显示index.html
我正在寻找一种提示/解决方案来生成一个具有自定义设计的模板 Web 应用程序,然后我所有其他 Web 应用程序都应该采用模板 Web 应用程序的设计。那可能吗?背后的想法是,我们有多个用于项目的 We
我有一扇 Azure 前门。主要区域有一个 azure 功能,辅助区域有一个功能应用程序。当这两个功能都启动时,它工作正常。它正在向每个区域分配 50-50 个负载。但是当我故意停止主要功能时。所有流
这个问题已经有答案了: Getting Python error "from: can't read /var/mail/Bio" (7 个回答) 已关闭去年。 几天前我开始使用 python nfl
Theo tình hình hiện tại, câu hỏi này không phù hợp với định dạng Hỏi & Đáp của chúng tôi. Chúng tôi mong đợi câu trả lời được hỗ trợ bằng sự kiện, tài liệu tham khảo hoặc chuyên môn, nhưng câu hỏi này có thể gây ra tranh luận, tranh cãi, thăm dò ý kiến hoặc thảo luận mở rộng. Nếu bạn cảm thấy vấn đề này có thể được cải thiện và có thể mở lại, hãy truy cập
我有一个在 Apache Tomcat 5.5 中完美运行的 Web 应用程序,我需要“转换它”以便它可以部署在 Oracle 应用服务器 10.1.3 中。 现在我制作了一个应用程序的 WAR 文件
我在 jsp 中有 2 个 webapps,其中一个供公共(public)使用,另一个供本地使用。 是否可以在 Apache tomcat 中的一个端口上托管一个 Web 应用程序而在另一个端口上托管
最近,我一直在对模块化JS进行大量试验,但我仍然想知道是否以“正确的方式”编写它。 例如,如果我有一个页面,其中包含输入和提交按钮,这些页面应在提交后显示数据(例如表格和图形),所以我在IFFE下编写
我有一个部署为 web 应用程序的 google 脚本。此 webapp 需要发送带有 webapp 的 URL 的电子邮件,以便收件人可以使用 URL 访问 webapp。如何获取 webapp 中
我们正在部署在.Net core中开发的微服务,并将部署在Azure WebApp中 这些 WebApp 之间将进行大量通信。 现在,由于 WebApp 面向互联网,它们之间的所有调用都将通过互联网,
这个问题已经有答案了: SEVERE: Failed to initialize Jenkins [closed] (1 个回答) 去年关闭。 我在 Ubuntu 12.04 中安装了 Jenkins
我看到一个奇怪的问题。我有两个网络应用程序。一个用于我们使用 Jersey 公开的其余 Web 服务。另一个具有 JSF 前端实现,它调用上面的 web 服务来获取详细信息。我们使用 Tomcat 作
这是我在探索工作场所中某些任务自动化的世界时遇到的一个普遍问题。 我们的企业网站上有一个门户/启动板环境,其中的应用程序显示为图 block 。 其中一个应用程序打开后有一个主页,其中有一堆搜索字段和
我有两个 Google 电子表格,每个电子表格都附加了一些 Apps 脚本。最终,我想将两者部署为 Web 应用程序,以便它们可以通过其公共(public) URL 相互通信。目前,我只部署了其中一个
当我尝试运行 ngserve 时,我得到以下信息 ERROR in ./src/main/webapp/manifest.webapp Module parse failed: /home/ferga
这个问题在这里已经有了答案: Eclipse Output Folders (6 个答案) 关闭 5 年前。 我正在使用 Tomcat 5,当我启动服务器并从 webapp 文件夹加载我的应用程序时
Tôi là một lập trình viên xuất sắc, rất giỏi!