如何在服务器之间同步变量?

时间:2016-01-12 07:10:46

标签: python django

我计划使用3台服务器(将有一个haproxy来调度3台服务器但我现在没有服务)来进行负载平衡

我遇到了一个问题:
我创建了一个对象,它具有从数据库查询的功能,以便在django开始时获取列表 (因为这个列表很少改变,但经常使用,所以我最初只能使用它)。

如果数据发生变化,它会将消息推送到rabbitmq,并且3台服务器都有rabbitmq客户端来获取它。
但问题是rabbitmq监听器的进程与django不一样

如何将它转移到django进程?
现在我的解决方案是当rabbitmq客户端更改时调用api(使用localhost)。(因此访客可以访问网站,我可以更改列表)
但它必须绑定0.0.0.0,我不确定这是一个好主意

在3台服务器之间同步的更好方法是什么?

2 个答案:

答案 0 :(得分:2)

过早优化是所有邪恶的根源......这就是说,你想要的是缓存,而不是异步队列。 Django有一个很好的内置缓存框架,你只需要选择你的后端(想到redis但还有其他选择)

答案 1 :(得分:0)

你基本上想要一个所有服务器的共享数据存储库,我猜你希望这个数据存储库在内存中,对吗? 在这种情况下,我可以推荐Redis。您将在第四台服务器上部署它,您可以从任何服务器获取/设置值。

如果您需要,Redis还提供发布/订阅功能。这意味着服务器可以订阅在修改值时自动通知。 (http://redis.io/topics/pubsub