将负载均衡器与 Twilio 结合用于 IVR 应用程序

问题描述 投票:0回答:1

我正在构建一个 IVR 应用程序,该应用程序将使用 Python 框架(例如 Flask 等)构建。当用户呼叫 Twilio 用户仪表板中定义的指定号码时,该应用程序通过 Websockets 接收来自 Twilio 的音频流。同时,Twilio 还向我提供的 webhook 发出 POST 请求。如何添加负载均衡器以与 Twilio 配合使用,以便在启动的调用淹没应用程序的 1 个容器化实例上的资源时,负载均衡器会将该调用及其所有状态传输到另一个容器化应用程序实例,而用户不会注意到任何情况? (对用户来说无缝)以前有人这样做过吗?如果是的话,请您分享一下您的经验。非常感激。谢谢。

python websocket twilio load-balancing ivr
1个回答
0
投票

我认为您无法轻松实现您所描述的“移动”正在进行的调用(导致新容器过载)。但是,这里有一些关于如何处理/防止过载的想法。

选项 1 - 主动负载平衡。将 x% 的传入请求发送到一个容器,将 x% 发送到另一个容器。此“循环”由您在呼叫开始之前实施。这意味着每个容器获得 x% 的流量,并且您始终拥有比所需更多的容量。根据您对已用容量的监控添加更多容器。

选项 2 - 使用自动扩展的后端服务。例如,我使用 Azure Functions,它会自动扩展(也很快)。

选项 3 - 等待发生过载,牺牲该调用,然后使用 Twilio 后备 URL 将后续调用移至未使用的容器。

Twilio 的语音 URL 有一个主要 URL 和备用 URL。当主 url 失败时,将使用后备 url。失败可能是由于过载或不可用。您的应用程序需要返回指示失败的 HTTP 响应。 Twilio 的有关可用性和可靠性的文档可能会给您一些想法。

您还可以检测到过载,尝试“停止流”,然后将流重新启动到健康的容器。弄清楚如何在经历故障的同时从故障中恢复听起来很难实施和测试。

© www.soinside.com 2019 - 2024. All rights reserved.