2011-12-20 46 views
12

我试图做一些研究,以找到多服务器环境中会话管理的最佳选择,并想知道人们发现什么成功以及为什么。优点和缺点。什么用于会话管理?

RDBMS - 较慢。更好地用于其他数据。

Memcached的 - 你可以不拿倒memcached服务器,而不会丢失会话

Redis的 - 修复的memcached的问题,但对于易扩展的?容错?

Cassandra - 具有良好的容错性。优点和缺点?

MongoDB,其他?

谢谢!

回答

7

我个人使用Cassandra来保存php会话数据。它使用session_id将其存储在单个行中的单个列中:{session_data_as_json}并在该列上设置TTL,以便自动执行垃圾清理。作品一种享受。

我去卡桑德拉,因为它具有其他用户数据已经...对于缓存,我启用了APC对所有前端Web服务器,并没有任何问题......

这是最好的方法?不确定。它适合我需要实现的环境,技术和业务规则。 ...

侧面说明,我也开始在本地的PHP工作 - >卡桑德拉会话处理程序:https://github.com/sdolgy/php-cassandra-sessions - 这显示了TTL的是如何设定PHPCassa和卡桑德拉

5

Redis的 - 修复的问题memcached,但是如何缓解 的可扩展性?容错?

Redis的支持replication和即将cluster还应该支持跨多个节点的数据分片。

0

有点迟了,但也许有人有兴趣跟进。我们使用Cassandra作为会话存储并通过春季会话访问它(使用本地春季会话 - cassandra插件)。会话中的对象通过Kryo进行编组/解组(https://github.com/EsotericSoftware/kryo)。

这个设置给了我们1个2毫秒之间的会话get和1ms的下一个保存:

enter image description here

enter image description here

但根据环载有在响应时间上的一些异常:

enter image description here