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

使用粘性会话和websockets进行伸缩

谭献
2023-03-14

但我们正面临着这种方法的问题。由于out应用程序主要用于车间,负载通常在短时间内增加(车间开始),每个车间参与者都与前两个实例有一个粘性会话,而新的实例几乎没有。正因为如此,表现一直很差。

第一个想法是:让我们禁用粘性会话。但这破坏了我们的网络套接字,因为它们需要粘性会话(至少这是我读到的)。另一个问题是负载减少。实例关闭,套接字连接也会丢失。

是否有一种方法可以在实例之间转移用户会话,或者让websockets在没有粘性会话的情况下工作(可能是Redis)?

共有1个答案

艾志尚
2023-03-14

解决方案是一个应用程序负载均衡器(请参见注释)。

>

  • 一开始我们不得不禁用轮询,因为这对其他的轮询不起作用。这是通过手动定义传输来完成的。

    let ioSocket = io('', {
        path: '/socket.io-client'
        transports: ['websocket']
    

    之后,我们设置了一个标准的应用程序负载平衡器,其中包含两个目标组:一个用于websockets,另一个用于所有其他请求。websocket目标组的规则通过regex匹配特定路径:

    [...]
    this.socket.on('disconnect', () => {
        // Reconnect after connection loss
        this.connect();
    });
    [...]
    

  •  类似资料:
    • 我想知道粘性和非粘性会议之间的区别。我从网上读到的: 粘滞:只有一个会话对象将在那里。 非粘性会话:每个服务器节点的会话对象

    • 目前,我正在尝试在Google云上创建一个Kubernetes集群,其中包含两个负载平衡器:一个用于后端(在Spring boot中),另一个用于前端(在Angular中),其中每个服务(负载平衡器)与两个副本(POD)通信。为了实现这一点,我创建了以下入口: 上面提到的入口可以使前端应用程序与后端应用程序提供的REST API进行通信。但是,我必须创建粘性会话,以便每个用户都与同一个POD进行通

    • 尝试使用Redis设置一个具有非粘性会话的tomcat集群。 尝试使用:https://github.com/redisson/redisson/wiki/14.-integration%20with%20frameworks#145-spring-session 添加了2个jar文件。使用Tomcat7。 雷迪斯起来了。它会找到服务器。我没看到任何错误。 现在当我去说经理测试。它将进行循环负载平

    • 问题内容: 我开始使用angularJS开发一个Web应用程序,但不确定是否所有内容(客户端和服务器端)都受到正确保护。安全性基于单个登录页面,如果可以对凭据进行检查,则我的服务器将发回具有自定义时间有效性的唯一令牌。所有其他REST api均可通过此令牌访问。该应用程序(客户端)浏览到我的入口点,例如:https : //www.example.com/home.html用户插入凭据并收到唯一令

    • 我使用Spring Boot(v1.5.10.RELEASE)为用Angular编写的应用程序创建后端。背面使用Spring安全钥匙斗篷固定。现在我添加了一个websocket,使用STOMP over SockJS,并希望保护它。我试图遵循Websocket令牌身份验证的文档,它显示了以下代码: 我可以使用以下方式从客户端检索无记名令牌: 我的问题是,如何将其转换为身份验证对象?或者如何从这里开

    • 我正在使用spring 4+Websockets+Stomp JS库。我找不到任何方法来设置websocket ping/pong机制(心跳)。 null 因此,我正在实现自己的乒乓消息机制。 这里的任务之一-实现服务器端关闭websocket,以防在超过10秒的时间内没有来自客户端的ping消息。 使用spring WebSockets是没有办法做到这一点的! 也许有人能告诉我如何通过sprin