如何避免让web服务器成为cassandra的瓶颈?

2024-05-14 00:37:50 发布

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

我是新来的卡桑德拉,所以请容忍我。在

所以,我正在构建一个使用Cassandra作为数据库的搜索引擎。我通过皮卡萨和它互动。在

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

我知道一些工具,比如django、fastCGI、SCGI等,它们允许python到web的交互。然而,如何在web服务器上运行python脚本而不将该服务器变成单点故障(即,如果该服务器死机,用户无法访问系统),从而否定Cassandra的一个用途呢?在


Tags: 工具django用户服务器脚本web数据库网页
2条回答

Theo Schlossnagle的Scalable Internet Architectures涵盖了负载平衡和更多内容。强烈推荐。在

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

您需要在这些前端服务器之间实现负载平衡—调查在一些专用计算机上运行haproxy。它可以快速、方便地配置,并且在设置更改时也同样易于重新配置(与DNS不同,DNS可能需要几天的时间来传播更改)。我想你也可以配置nginx做同样的事情。如果您在前端服务器中保存每个会话的信息,则需要每个客户端为每个请求访问同一个前端服务器—这称为“会话持久性”,可以通过哈希客户端的IP来选择前端服务器来实现。哈普罗西会帮你的。在

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

这个系统的好处是,您可以轻松地增加(或减少)前端服务器的数量,而无需更改您的DNS。您可以阅读(一点)更多关于我所指的设置的信息:http://www.acunu.com/blogs/andy-ormsby/using-cassandra-acunu-power-britains-got-talent/

相关问题 更多 >