我在我的应用程序的十字路口 - 我使用的是python / django,mysql和ubuntu 12.04
我的应用程序将在线访问其他应用程序,制作其路径结构的索引,并提交表单。如果您认为10个或100个帐户每个都有一个或多个域名,那么性能可能会有点失控。
我最初的想法是设置一个ec2环境来分配在多个ec2实例上访问每个域上所有这些路径的负载,每个实例运行celery / rabbitmq以在这些ec2实例之间分配处理负载。
问题是 - 我想存储提交我访问的表单的结果。我读过我可能需要使用nosql db(例如hadoop,redis等)。
我的问题是:
谢谢。
答案 0 :(得分:1)
是否有不同的方法将celery / rabbitmq与SQL-db一起使用 优点/缺点是什么?我可以看到一个问题 使用nosql:学习曲线
是
如果您正在讨论存储Django应用程序/模型数据,只要您拥有Python绑定,就可以将它用于任何SQL类型的数据库。最流行的SQL数据库具有python绑定。
如果您指的是在特定后端存储任务结果,那么对多个数据库/协议SQL和noSQL的支持。我相信在SQL(MySQL,Posgtgres)或noSQL(Mongo,CouchDB)中存储结果之间没有特定的优势或劣势,但这仅仅是我的个人观点,这取决于应用的类型你在跑步。这些是您可以用于SQL数据库的一些示例(来自他们的文档):
# sqlite (filename) CELERY_RESULT_BACKEND = ‘db+sqlite:///results.sqlite’
# mysql CELERY_RESULT_BACKEND = ‘db+mysql://scott:tiger@localhost/foo’
# postgresql CELERY_RESULT_BACKEND = ‘db+postgresql://scott:tiger@localhost/mydatabase’
# oracle CELERY_RESULT_BACKEND = ‘db+oracle://scott:tiger@127.0.0.1:1521/sidname’
如果您指的是经纪人(排队机制),芹菜只支持RabbitMQ和redis。
其次:是否有其他方式来分配(处理)负载 几个python脚本在多个ec2上同时运行 环境?
这正是芹菜的作用,您可以在多台机器上设置您的工作人员,这些机器可以是不同的EC2实例。然后,您所要做的就是将芹菜装置指向您配置中的相同队列/经纪人。如果您希望代理中的冗余(RabbitMQ和/或Redis),您应该在集群配置中设置它们。