如何解决龙卷风/旋风中的长轮询可扩展架构
我想从一开始就使用Cyclone或Tornado在python中实现长轮询。客户端可能需要几个小时才能连接到该服务。我的概念:
客户端HTTP请求将由NGINX代理(用作负载平衡器)后面的多个龙卷风/气旋处理程序线程处理。将有多个请求数据队列:一个用于所有客户端的所有未处理请求的队列,其余队列包含先前由工作进程生成的,特定于每个已连接客户端的响应的队列。当请求被传送到龙卷风/旋风处理器线程时,请求数据将被发送到工人队列进行处理,然后由工人(连接到数据库等)进行处理。同时,龙卷风/旋风处理器线程将调查特定于客户端的队列,并将包含数据的响应发送回客户端(如果队列中有一些等待)。请看下图。
简单图:https://i.stack.imgur.com/9ZxcA.png
我正在考虑队列系统,因为某些请求可能在数据库上非常繁重,而某些请求可能会为其他客户端创建通知和消息。这是迈向可扩展服务器的一种方法吗?还是只是矫kill过正?
解决方法
经过一些研究,我决定使用连接到zeroMQ的龙卷风websocket。受此答案的启发:Scaling WebSockets with a Message Queue。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。