tornado/cyclone中的长轮询可扩展体系结构

2024-04-28 22:33:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从一开始就使用cyclone或tornado在python中实现关于服务可伸缩性的长轮询。客户端可能会连接数小时到此服务。我的想法:

客户端HTTP请求将由NGINX代理(充当负载平衡器)后面的多个tornado/cyclone处理程序线程处理。将有多个用于请求的数据队列:一个用于所有客户端的所有未处理请求,其余的队列包含特定于每个已连接客户端的响应,这些响应以前由工作进程生成。当请求被传递到tornado/cyclone处理程序线程时,请求数据将被发送到工作队列进行处理,然后由工作队列进行处理(工作队列连接到数据库等)。同时,tornado/cyclone处理程序线程将查看特定于客户端的队列,并将带有数据的响应发送回客户端(若队列中有等待)。请看图表

简单图:https://i.stack.imgur.com/9ZxcA.png

我之所以考虑使用队列系统,是因为有些请求可能会占用大量数据库,有些请求可能会为其他客户端创建通知和消息。这是迈向可伸缩服务器的一种方式,还是仅仅是过火了


Tags: 数据https数据库http处理程序客户端代理队列