CCS 需要多久关闭一次连接才能执行负载平衡?

Posted

技术标签:

【中文标题】CCS 需要多久关闭一次连接才能执行负载平衡?【英文标题】:how often exactly CCS needs to close down a connection to perform load balancing? 【发布时间】:2016-06-14 01:41:13 【问题描述】:

我有一个客户端 XMPP,但我从未收到 CONNECTION_DRAINING 消息,所以我有这个问题,

这是我验证是否收到 CONNECTION_DRAINING 消息的代码的一部分

............................... more code

def message_callback(session, message):  
    global unacked_messages_quota

    gcmData = message.getTags('data:gcm')
    if gcmData:
        print "alert, the connection is being drained and will be closed soon !!!!!!!!!!!!!"                    
    gcm = message.getTags('gcm')
    if gcm:
        gcm_json = gcm[0].getData()
        msg = json.loads(gcm_json)          
    if not msg.has_key('message_type'):     
      # Acknowledge the incoming message immediately.                   
      send('to': msg['from'],
            'message_type': 'ack',
            'message_id': msg['message_id'])
.......................................................... more code

我已阅读来自https://developers.google.com/cloud-messaging/ccs 的文档

特别是这部分

CCS 需要定期关闭连接以执行加载 平衡。在关闭连接之前,CCS 发送一个 CONNECTION_DRAINING 消息,指示正在连接 排干了,很快就会关闭。 “排水”是指关闭 进入连接的消息流,但允许任何 已经在准备继续。当您收到一个 CONNECTION_DRAINING 消息,您应该立即开始发送 消息到另一个 CCS 连接,如果 必要的。但是,您应该保持原始连接打开并且 继续接收可能来自连接的消息(和 确认它们)—CCS 处理启动连接时关闭 准备好了。

CONNECTION_DRAINING 消息如下所示:

<message>
  <data:gcm xmlns:data="google:mobile:data">
  
    "message_type":"control"
    "control_type":"CONNECTION_DRAINING"
  
  </data:gcm>
</message>

【问题讨论】:

【参考方案1】:

通常每周至少一次,但根据负载情况可能会更频繁。

【讨论】:

以上是关于CCS 需要多久关闭一次连接才能执行负载平衡?的主要内容,如果未能解决你的问题,请参考以下文章

通过动态 url 参数负载平衡 websocket 连接

Google Cloud 中的负载平衡 websocket 连接

如何在 GCP 上的 TCP 负载均衡器上获取当前连接数

主/从复制负载平衡,如果主与 Galera 关闭

负载均衡

仅使用一台服务器进行负载平衡