我想从一开始就使用旋风或龙卷风在 python 中实现关于服务可扩展性的长轮询。客户端可能会连接数小时到此服务。我的概念:
客户端 HTTP 请求将由 NGINX 代理(用作负载均衡器)后面的多个龙卷风/旋风处理程序线程处理。请求将有多个数据队列:一个用于来自所有客户端的所有未处理请求,其余队列包含特定于每个已连接客户端的响应,这些响应先前由工作进程生成。当请求被传递到龙卷风/旋风处理程序线程时,请求数据将被发送到工作队列进行处理,然后由工作人员(连接到数据库等)处理。同时,tornado/cyclone 处理线程将查看特定于客户端的队列,并将带有数据的响应发送回客户端(如果队列中有一些等待)。请看图。
简单图:https ://i.stack.imgur.com/9ZxcA.png
我正在考虑队列系统,因为某些请求可能对数据库非常繁重,并且某些请求可能会为其他客户端创建通知和消息。这是走向可扩展服务器的一种方式,还是只是矫枉过正?