3

在 Django 中,为了集群 memcached 节点,使用了一种非常简单的方法。只需在所有 django 服务器的 settings.py 文件中列出所有节点地址,如下所示:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': [
            'xxx.xxx.xxx.240:11211',
            'xxx.xxx.xxx.242:11211',
            ...,
        ]
    }
}

显然,每当实例退出或添加新实例时编辑每个实例的 setting.py 文件会很痛苦,您将如何自动管理向集群添加新节点?

  • 所有实例都位于负载均衡器后面。

可能的非答案:

  • 我也可以只使用一个 django 实例来运行一个 memcached 单节点,因为我只使用 memcached 来存储微小的令牌。 但目标是让所有 ec2 实例都相同。
  • 我也可以使用 elasticache,但对于最小的版本来说它很贵(35 美元/月!:))

注意:我使用 memcached 来防止 celeryd 工作人员访问相同的资源,但如果资源偶尔被双重访问也可以。而且我的代币寿命很短(不到 15 秒)。因此,丢失 memcached 节点并不是什么大问题,只要它不会发生得太频繁。

4

1 回答 1

1

如果您的缓存数据确实非常小,那么您可能会对像 redistogo.com 这样的非亚马逊托管缓存服务感兴趣。如果您的数据足够小并且定价非常合理,他们会提供免费版本。

这根本不能回答您的问题,但是由于您提到了弹性疼痛但对价格犹豫不决,也许它会满足您的需求。

于 2012-05-20T20:26:27.453 回答