0

语境

我正在开发一个简单的 Web 应用程序(用 python/ pyramid编写),它使用底层 http 服务作为数据存储,并通过使用后端 http 通信与合作伙伴集成。此 Web 应用程序将部署在 3 个或更多节点中,并预先配备负载均衡器

问题

大多数用户导航数据将存储在服务器端的会话中(我不想使用加密的 cookie 数据加载浏览器),这带来了如何正确复制会话的问题。适当的负载平衡和避免用户导航中断很重要,所以我不想使用粘性会话也不想丢失会话数据。

问题

我应该使用什么?我正在考虑将会话数据存储在关键数据存储(memcachedrediscassandracouchbase)或关系数据存储(postgresqlmysql)上

编辑

这是我之前关于我尝试在不同数据存储上指出高点和低点的主题的问题。这个问题已经结束,因为很难理解问题是什么,所以我在没有我意见的情况下简化并创建了这个

4

2 回答 2

1

Couchbase 服务器被大量用作分布式会话存储。您可能知道 Couchbase 是构建在 Memcached 协议之上的 NoSQL 数据库。

这意味着您拥有 Memcached 的速度和可靠性,以及 Couchbase 集群的强大功能。集群上的分区非常快,因为客户端(或 moxi,memcached 代理)负责选择会话应该去的节点,并在需要时异步复制它(因此不会影响性能)。

一些有趣的指针: - http://www.couchbase.com/memcached - http://www.couchbase.com/docs/couchbase-devguide-2.0/couchbase-usecases.html - http://www.couchbase.com /couchbase-server/用例

免责声明:我是 Couchbase 的技术布道者

于 2013-06-11T09:20:53.960 回答
1

我使用pyramid_beaker来存储会话数据。它将烧杯库包装成金字塔。

在生产服务器上,我使用 memcached 后端。我不记得我选择了哪个库来支持它。

一些实现细节:

  1. 我将pyramid_beaker 分叉成pyramid_beaker_https,并对所有用户使用2 个cookie。一种是“仅限http”,它返回公共数据和站点查看权限。另一个是“仅限 https”,用于 /account 下的所有内容和任何写入操作。

  2. 我还添加了一个“自动登录”cookie。如果会话身份验证失败(因为 memcached 出现故障,并且现在无效),则定期重置自动登录会加密数据以重新创建 cookie 会话。

  3. 我跟踪会话中每次登录是如何发生的,因此自动登录需要对任何 /account 或选择写入操作重新进行身份验证。

于 2013-06-07T16:43:58.227 回答