我计划使用3台服务器(将有一个haproxy来调度3台服务器但我现在没有服务)来进行负载平衡
我遇到了一个问题:
我创建了一个对象,它具有从数据库查询的功能,以便在django开始时获取列表
(因为这个列表很少改变,但经常使用,所以我最初只能使用它)。
如果数据发生变化,它会将消息推送到rabbitmq,并且3台服务器都有rabbitmq客户端来获取它。
但问题是rabbitmq监听器的进程与django不一样
如何将它转移到django进程?
现在我的解决方案是当rabbitmq客户端更改时调用api(使用localhost)。(因此访客可以访问网站,我可以更改列表)
但它必须绑定0.0.0.0
,我不确定这是一个好主意
在3台服务器之间同步的更好方法是什么?
答案 0 :(得分:2)
过早优化是所有邪恶的根源......这就是说,你想要的是缓存,而不是异步队列。 Django有一个很好的内置缓存框架,你只需要选择你的后端(想到redis但还有其他选择)
答案 1 :(得分:0)
你基本上想要一个所有服务器的共享数据存储库,我猜你希望这个数据存储库在内存中,对吗? 在这种情况下,我可以推荐Redis。您将在第四台服务器上部署它,您可以从任何服务器获取/设置值。
如果您需要,Redis还提供发布/订阅功能。这意味着服务器可以订阅在修改值时自动通知。 (http://redis.io/topics/pubsub)