2011-12-20 76 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