【发布时间】:2013-06-07 16:30:56
【问题描述】:
上下文
我正在开发一个简单的 Web 应用程序(用 python/pyramid 编写),它使用底层 http 服务作为数据存储,并通过使用后端 http 通信与合作伙伴集成。此 Web 应用程序将部署在 3 个或更多节点中,并预先配备负载均衡器
问题
大部分用户导航数据将存储在服务器端的会话中(我不想用加密的 cookie 数据加载浏览器),这带来了如何正确复制会话的问题。适当的负载平衡和避免用户导航中断很重要,因此我不想使用粘性会话也不想丢失会话数据。
问题
我应该使用什么?我正在考虑将我的会话数据存储在关键数据存储(memcached、redis、cassandra 或 couchbase)或关系数据存储(postgresql 或 mysql)上
编辑
这是我的previous question on the topic,我尝试在其中指出不同数据存储的高点和低点。问题已关闭,因为很难理解问题是什么,所以我在没有我意见的情况下简化并创建了这个问题
【问题讨论】:
-
取决于您的会话数据是否需要能够在守护程序重新启动或系统重新启动后继续存在。
-
是的,应该。我不想以任何方式破坏用户导航
-
在这种情况下,您需要查看哪些后端能够在重启后幸存下来。如果您经常将数据同步到磁盘,基于 FS 的 (postgresql/mysql) 可以,基于内存的 (memcached/redis) 可能还可以,但是如果它们意外死亡,您将始终丢失数据,所以如果你真的很在意,你可能应该选择基于 FS 的商店。
-
我确实更倾向于使用基于内存的键值存储。如果我的数据存储本身被复制,那么在重新启动后幸存下来应该不是问题
标签: python session web-applications pyramid