websocket 在Twilio for IVR应用中使用负载均衡器

wlzqhblo  于 2023-10-20  发布在  其他
关注(0)|答案(1)|浏览(137)

我正在设计一个IVR应用程序,它将使用Python框架(例如, flask 等)。当用户拨打Twilio用户 Jmeter 板中定义的指定号码时,该应用程序通过Websockets从Twilio接收音频流。同时,Twilio也向我提供的webhook发出POST请求。我如何添加一个负载均衡器来与Twilio一起工作,以便在一个已启动的调用占用应用程序的一个容器化示例上的资源的情况下,负载均衡器将该调用及其所有状态转移到另一个容器化应用程序示例,而用户不会注意到任何事情?(对用户来说是无缝的)以前有人这么做过吗?如果有,请分享你的经验。非常感谢。谢谢.

l7wslrjt

l7wslrjt1#

我不认为您可以轻松地实现您所描述的将导致重载的正在进行的调用“移动”到新容器。但是,这里有一些关于如何处理/防止过载的想法。
选项1 -主动进行负载平衡。将x%的传入请求发送到一个容器,并将x%发送到另一个容器。这种“循环”是在呼叫开始之前由您实现的。这意味着每个容器获得x%的流量,并且您始终拥有比所需更多的容量。根据对已用容量的监控添加更多容器。
选项2 -使用自动扩展的后端服务。例如,我使用Azure Functions,它会自动扩展(也很快)。
选项3 -等待重载发生,牺牲该调用,然后使用Twilio回退url将后续调用移动到未使用的容器。
Twilio的语音网址有一个主网址和备用网址。当主url失败时,将使用回退url。失败可能是由于过载或不可用。您的应用程序将需要返回HTTP响应来指示失败。Twilio关于可用性和可靠性的文档可能会给你给予一些想法。
你也可以检测到一个重载,尝试停止流,然后重新启动流到一个健康的容器。弄清楚如何在经历失败的同时从失败中恢复听起来很难实现和测试。

相关问题