python在tornado/cyclone中的长轮询可伸缩体系结构

dxpyg8gm  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(326)

我想从一开始就使用cyclone或tornado在python中实现关于服务可伸缩性的长轮询。客户端可能连接此服务数小时。我的理念:
客户端http请求将由nginx代理(充当负载平衡器)后面的多个tornado/cyclone处理程序线程处理。请求将有多个数据队列:一个用于所有客户端的所有未处理请求,其余的队列包含特定于每个已连接客户端的响应,这些响应以前由工作进程生成。当请求被传递到tornado/cyclone处理程序线程时,请求数据将被发送到工作队列进行处理,然后由工作队列进行处理(工作队列连接到数据库等)。同时,tornado/cyclone处理程序线程将查看特定于客户端的队列,并将带有数据的响应发送回客户端(如果队列中有等待)。请看图表。
简单示意图:https://i.stack.imgur.com/9zxca.png
我正在考虑队列系统,因为有些请求可能会占用大量数据库,有些请求可能会为其他客户端创建通知和消息。这是一种走向可伸缩服务器的方式,还是仅仅是过度杀戮?

s3fp2yjn

s3fp2yjn1#

在做了一些研究之后,我决定使用连接到zeromq的tornado websockets。灵感来源于这个答案:用消息队列缩放websockets。

相关问题