すべての重要なデータを保存するためにpostgres(スレーブを備えた単一のデータベース)を使用するJAVA Webアプリがあります。
現在、単一サーバーのセットアップから複数のサーバーに移行しているため、新しい要件に対応するためにいくつかの変更を加える必要があります。
1) ロード バランシングとパーティション トレランスのための非スティッキー セッション ID。
2) すべての Web サーバーからアクセス可能な、頻繁に読み取られるデータのキャッシュ (インメモリ/Memcache 代替)。
3) キュー (電子メール、SMS、クラスター上で実行されるタスク)。通常、これらはすべて xml API またはスクリーン スクレイピングを介して実行する必要があります。
タスクの重複処理を避けることは重要ですが、時々起こることがあります:-)
4) API 要求と応答の永続的なストレージ (大量の XML、多数の行、少数の列)。(おそらく、データセットを小さく保つために古いリクエストとレスポンスを削除してアーカイブします)。
5) 共通の場所へのログ記録。テーブルはどんどん増えていきます。また、生産ログを停止せずにアクセスするためのツールも必要です。時間や検索文字列に基づいて、何らかの検索が可能になるはずです。
これらすべての要件に対応する単一のソリューションが必要であり、可能な代替手段として redis、mongo、および hazelcast (個人的な好みの順序で) を調べます。
その他の重要な考慮事項: 1) コードへの侵入が少なくなります。2) 簡単なバックアップ/複製戦略。少なくともマスタースレーブ。3) 管理性、コミュニティ、実証済み (実稼働環境で実行中)。
この機能と要件のすべてまたはほとんどを実行できるのはどれですか?
編集 - 私がしたこと
- tomact 用の Redis がサポートするセッション マネージャー。
- キャッシュ用の Redis
- redis に支えられた Jesque (Respue の Java バージョン)。
- ポストグル
- Log4j2に支えられたSLF4J