Python 异步的高可用性



我正在尝试使用Python的asyncio模块创建一个异步应用程序。然而,我在文档中能找到的所有实现都是基于单个事件循环的。

有没有办法启动运行同一应用程序的多个事件循环,这样我就可以实现高可用性和容错性?换句话说,我想通过插入新的节点来扩展我的应用程序,这些节点将在负载均衡器后面共享协同程序的执行。

我知道异步编程和线程安全之间存在一个固有的问题,也许我所想的根本不可能。如果是这样,如何避免异步体系结构上出现这种SPOF?

处理此问题的标准方法是启动多个服务器进程(每个进程都有自己的事件循环),前面有一个负载均衡器。每个这样的进程通常不能使用一个以上的CPU核心,因此您可能希望拥有尽可能多的核心。

我以前做过。我甚至编写了代码来监控我生成的进程。但事实证明,Python&asyncio本身就相当稳定,我从未见过一个严重错误会停止整个事件循环。因此,我不建议仅仅为了高可用性而生成多个进程。

如果您感兴趣,代码在这里:https://github.com/l04m33/shinpachi

您可能需要检出shinpachi/__init__.pyshinpachi/processes.py

最新更新