11

すべての重要なデータを保存するためにpostgres(スレーブを備えた単一のデータベース)を使用するJAVA Webアプリがあります。

現在、単一サーバーのセットアップから複数のサーバーに移行しているため、新しい要件に対応するためにいくつかの変更を加える必要があります。

1) ロード バランシングとパーティション トレランスのための非スティッキー セッション ID。

2) すべての Web サーバーからアクセス可能な、頻繁に読み取られるデータのキャッシュ (インメモリ/Memcache 代替)。

3) キュー (電子メール、SMS、クラスター上で実行されるタスク)。通常、これらはすべて xml API またはスクリーン スクレイピングを介して実行する必要があります。
タスクの重複処理を避けることは重要ですが、時々起こることがあります:-)

4) API 要求と応答の永続的なストレージ (大量の XML、多数の行、少数の列)。(おそらく、データセットを小さく保つために古いリクエストとレスポンスを削除してアーカイブします)。

5) 共通の場所へのログ記録。テーブルはどんどん増えていきます。また、生産ログを停止せずにアクセスするためのツールも必要です。時間や検索文字列に基づいて、何らかの検索が可能になるはずです。

これらすべての要件に対応する単一のソリューションが必要であり、可能な代替手段として redis、mongo、および hazelcast (個人的な好みの順序で) を調べます。

その他の重要な考慮事項: 1) コードへの侵入が少なくなります。2) 簡単なバックアップ/複製戦略。少なくともマスタースレーブ。3) 管理性、コミュニティ、実証済み (実稼働環境で実行中)。

この機能と要件のすべてまたはほとんどを実行できるのはどれですか?

編集 - 私がしたこと

  1. tomact 用の Redis がサポートするセッション マネージャー。
  2. キャッシュ用の Redis
  3. redis に支えられた Jesque (Respue の Java バージョン)。
  4. ポストグル
  5. Log4j2に支えられたSLF4J
4

3 に答える 3

4

私はMongoDBの観点からこれらのいくつかに取り組むことができます。

私が最初に気付いたのは、単一サーバーのセットアップから複数サーバーのセットアップに移行しているということです。MongoDBを使用すると、レプリケーションとシャーディングのセットアップが非常に簡単になります。次に、レプリケーションとシャーディングは、Mongoの他の機能のいくつかとともに、実行しようとしている多くのことを達成するのに役立ちます。

まず、ドキュメントを少し見て、その感触をつかんでください。

レプリカセットシャーディング

要件に基づくその他の考え:

  • さまざまなデータストアを使用してスケーリングする他の方法と比較して、コモディティハードウェアを使用して水平方向にスケーリングするmongoの方法は、セットアップ、スケーリング、および保守が非常に簡単です。これは、DBAになる代わりに、アプリの構築により多くの時間を費やすことができることを意味します。
  • mongoを使用する場合は、キャッシングレイヤーをスキップできる場合もあります。MongoDBはメモリマップトファイルを使用します。つまり、ワーキングセットを物理メモリに保持できる場合は、基本的にメモリ内キャッシュがすでに存在します。
  • MongoDBはロギングに非常に適しています。通常、ユーザーはこの種のアプリケーションに安全な書き込みを必要としないため、デフォルトのファイアアンドフォーゲットモデルを使用して書き込みを行うと、パフォーマンスが向上します。
  • これがコードへの侵入が少ないことを意味するかどうかは議論の余地がありますが、一般的なオブジェクトリレーションマッパーが行うことと比較して、Mongoはデータへの侵入がはるかに少ないです。データを自然に使える状態、オブジェクトに保存することができます!

お役に立てば幸いです、乾杯。

于 2012-01-09T19:46:27.503 に答える
2

SQLを使用すると思います。リレーショナル データベースが何年にもわたって完成されてきたすべてのものが必要なためです。私が見る限り、「特定の」目的(それはNOSQLがカバーしようとしているもの)ではなく、「オールインワン」シナリオのためのデータソリューションが必要です。それがSQLの目的です。

名前を付けている3つから選択したい場合は、Mongodbが最も近いデータストアになりますが、繰り返しますが、sql を使用してください。

于 2012-01-09T20:59:35.867 に答える
0

Redis が最初の 3 つの要件 (非スティッキー セッション、キャッシュ、キュー) を解決することは間違いありません。

集中ログについては、簡単なユース ケースではありませんが、Redis で実行できます。その方法を説明するブログ投稿はこちらです。NoSQL の第一人者である Alex Popescu が、この投稿でこのアプローチについていくつかの懸念を提起していることに注意してください。

永続性に関しては、Redis.io の永続性オプションの概要を次に示します- いくつかの問題がありますが、実行可能です。

于 2013-05-30T12:42:03.223 に答える