2011-12-20 16 views
12

私はマルチサーバー環境でセッション管理のための最良のオプションを見つけるためにいくつかの調査をしようとしており、人々が成功した理由と理由を不思議に思っていました。長所と短所セッション管理には何を使用しますか?

RDBMS - 低速。他のデータによく使用されます。

Memcachedの - memcachedのの問題を修正しますが、どのようなスケーラビリティの容易さについて - あなたは、セッションに

のRedisを失うことなく、memcachedサーバをダウン取ることができませんか?フォールトトレランス?

カサンドラ - 良好な耐障害性を備えています。長所と短所?

MongoDB、Others?

ありがとうございます!

答えて

7

個人的には、私はCassandraを使用してPHPセッションデータを保持します。これは、session_id:{session_data_as_json}を持つ単一の列に1つの列に格納し、自動的にガベージクリーンアップを行うように列のTTLを設定します。治療をしなさい。それは、すでに他のすべてのユーザデータを持っているよう

私はカサンドラと一緒に行きました...キャッシングのために、私はすべてのフロントエンドWebサーバー上でAPCを有効にし、すべての問題がありませんでしたが...

は、これが最善のアプローチですか?わからない。私はそれを達成するために必要な環境、技術、ビジネスルールの目的に合っていました。これはTTLのがPHPCassaとカサンドラ

5

のRedisで設定されている方法を示しています - - https://github.com/sdolgy/php-cassandra-sessionsの問題が修正されています>カサンドラのセッションハンドラ - ...

サイドノートでは、私はネイティブのPHPで作業を開始なかったですmemcached、しかし、 のスケーラビリティはどうですか?フォールトトレランス?

Redisのはreplicationと今後clusterは、複数のノード間でデータのシャーディングをサポートする必要がありますサポートしています。

0

少し遅れていますが、誰かがフォローアップに興味があるかもしれません。私たちはセッションストアとしてCassandraを使用しており、春のセッション(自宅で春のセッションを行う - cassandraアドオン)でアクセスしています。セッション内のオブジェクトは、Kryo(https://github.com/EsotericSoftware/kryo)を介して整列化/非整列化されます。このセットアップは私たちにセッションを与える

1と2ミリ秒の間に取得し、1msの下に保存します。

enter image description here

enter image description here

しかし、リングの負荷に応じて、いくつかの外れ値は、応答時間があります:

enter image description here