在我的应用程序中,我正处于一个十字路口——我正在使用python/django、mysql和ubuntu12.04
我的应用程序将访问其他应用程序在线,使他们的路径结构索引,并提交表格。如果你认为这种情况发生在10或100个帐户,每个帐户有一个或多个域名,性能可能会有点失控。
我最初的想法是设置一个ec2环境,将访问每个域上所有这些路径的负载分布在多个ec2示例上,每个示例运行celery /rabbitmq,将处理负载分布在这些ec2示例上。
问题是-我想存储我访问的提交表单的结果。我读到我可能需要使用nosqldb(例如hadoop、redis等)。
我的问题是:
是否有不同的方法将celery /rabbitmq与sqldb一起使用,其优点/缺点是什么?我可以看出必须使用nosql的一个问题:学习曲线。
第二:有没有其他方法来分配在多个ec2环境中同时运行的几个python脚本的(处理)负载?
谢谢您。
1条答案
按热度按时间ncgqoxb01#
是否有不同的方法将celery /rabbitmq与sqldb一起使用,其优点/缺点是什么?我可以看出必须使用nosql的一个问题:学习曲线
对。
如果您正在谈论存储django应用程序/模型数据,那么您可以将其用于任何sql类型的数据库,只要您有python绑定即可。大多数流行的sql数据库都有python绑定。
如果您指的是将任务结果存储在特定的后端,则支持多个数据库/协议sql和nosql。我相信将结果存储在sql(mysql,posgtgres)或nosql(mongo,couchdb)中没有什么具体的优势或劣势,但这只是我个人的观点,这取决于您运行的应用程序的类型。以下是一些可用于sql数据库的示例(来自它们的文档):
如果您指的是代理(队列机制),celery 只支持rabbitmq和redis。
第二:有没有其他方法来分配在多个ec2环境中同时运行的几个python脚本的(处理)负载?
这正是celery 所做的,你可以在多台机器上设置你的工人,这些机器可以是不同的ec2示例。然后,您所要做的就是将他们的celery 安装指向配置中的相同队列/代理。如果您想在代理(rabbitmq和/或redis)中实现冗余,您应该考虑在集群配置中设置它们。