Python 如何避免使用cassandra使Web服务器成为瓶颈?

Python 如何避免使用cassandra使Web服务器成为瓶颈?,python,web-applications,Python,Web Applications,我是卡桑德拉的新手,请容忍我 因此,我正在使用Cassandra作为数据库构建一个搜索引擎。我通过Pycassa与它互动 现在,我想将Cassandra的响应输出到一个网页,让用户提交一个查询 我知道django、fastCGI、SCGI等工具允许python到web交互。但是,如何在Web服务器上运行python脚本,而不将此服务器变成单点故障(即,如果此服务器死亡,则用户无法访问系统)-因此否定了Cassandra的一个目的?我以前见过这个问题-有时,人们需要更多的CPU能力和带宽来生成和服

我是卡桑德拉的新手,请容忍我

因此,我正在使用Cassandra作为数据库构建一个搜索引擎。我通过Pycassa与它互动

现在,我想将Cassandra的响应输出到一个网页,让用户提交一个查询


我知道django、fastCGI、SCGI等工具允许python到web交互。但是,如何在Web服务器上运行python脚本,而不将此服务器变成单点故障(即,如果此服务器死亡,则用户无法访问系统)-因此否定了Cassandra的一个目的?

我以前见过这个问题-有时,人们需要更多的CPU能力和带宽来生成和服务服务器生成的HTML和图像,而不是在Cassandra中运行实际的查询。对于一个客户来说,这是其Cassandra集群中服务于网站前端的服务器数量的10倍

您需要以某种方式在这些前端服务器之间实现负载平衡—调查在一些专用机器上运行haproxy。它快速且易于配置,并且在设置更改时也同样易于重新配置(与DNS不同,DNS可能需要几天才能传播更改)。我认为您也可以将nginx配置为执行相同的操作。如果在前端服务器中保留每个会话的信息,则需要每个客户端为每个请求转到同一个前端服务器-这称为“会话持久性”,可以通过散列客户端的IP来选择前端服务器来实现。Haproxy会帮你的

但是,这种方法将再次在您的配置(haproxy服务器)中创建一个SPOF—您应该运行多个SPOF,并且可能有一个热备用。最后,您需要以某种方式平衡haproxy之间的负载-我们通常使用循环DNS来实现这一点,因为运行haproxy的节点很少发生变化


此系统的好处是,您可以轻松地增加(或减少)前端服务器的数量,而无需更改DNS。您可以在以下位置阅读(稍微)更多关于我所指设置的信息:

Theo Schlossnagle的文章涵盖了负载平衡和更多内容。强烈推荐。

你是说这里有瓶颈吗?“如果此服务器不可用,则系统不可访问”描述感谢。我会仔细看看你说的话。