当前位置: 首页 > 知识库问答 >
问题:

NodeJS水平缩放

赵永新
2023-03-14

我是一名Ruby/PHP web应用程序开发人员已经有一段时间了,我已经习惯了水平缩放服务器实例以处理更多请求的想法。水平缩放-意味着位于负载均衡器后面的应用程序的独立实例,它们什么都不共享,彼此不知道。

由于websocket有效地保持了浏览器和服务器之间的开放式通信线路,那么PHP/Ruby世界中典型的水平缩放架构是否会导致像链接中所解释的那样的聊天应用程序中断--因为新的websocket连接请求将被分配给不同的进程/服务器,并且没有一个中央资源跟踪所有连接的客户端?

共有1个答案

司信厚
2023-03-14

node.js支持水平缩放,其方式与您通过内置的cluster模块描述的方式大致相同。

关于在此环境中使用websockets/socket.io的第二个问题,您必须使用类似Redis的东西来存储应用程序的多个实例之间的共享状态,如本文所述。

 类似资料:
  • 我使用的是AWS SQS,所以我的两个应用程序(我们称它们为app1和app2)可以彼此交互。到目前为止,app1正在向queue发送消息,而app2正在监听和处理app1发送的消息。流程是客户端(reactJS应用程序)向App1发送http请求,App1使用AWS SQS将消息转发给App2,然后App2通过websockets向所有其他用户/客户端广播某个消息(这里重要的是所有websock

  • 在Azure中关于水平缩放的术语有点不清楚。 我们有一个“缓存刷新”特性,涉及到设置一个侦听器来订阅消息队列中的“主题”,这样它就会在接收到消息时刷新静态缓存。我们以前认为必须在HttpApplication.init事件中设置侦听器,每个实例都会调用该事件,但在意识到AppDomain中的所有HttpApplication实例都共享同一组静态变量之后,这就不再有意义了。 我的新理解是,即使在没有

  • 我想知道什么是相对于最大水平扩展实例数配置分区数量的好方法。 假设我有一个有6个分区的主题。 我有一个应用程序,它使用的与的6.这意味着我将有6个KafkaMessageListenerContainer,每个都使用一个线程,并且均匀地消耗来自所有分区的消息。 如果以上是正确的,那么我想知道如果我通过添加另一个实例水平缩放应用程序会发生什么?如果新实例具有相同的配置,并发为6,当然也具有相同的消费

  • 实现水平方向的UITableView,即将TableView做90度的旋转。可以作为scrollView使用。注意,往表里添加内容的时候,一定要把cell也进行一定角度的旋转,不然内容会出现倒置的。 [Code4App.com]

  • 我使用绘制图表。我有另一个要求,我需要显示两个图表水平。 我有什么办法可以把这两张图表做成单行吗? 编辑:实际上,我希望它像您的示例一样。为此,您使用了,但这里我使用的是。

  • 水平切分支架。 定义一个基本的“水平分片”系统,该系统允许会话在多个数据库中分发查询和持久性操作。 有关用法示例,请参见 水平切分 源分发中包含的示例。 API文档 Object Name Description ShardedQuery ShardedSession class sqlalchemy.ext.horizontal_shard.ShardedSession(shard_choose