2

Rails アプリケーションをスケーラブルに準備したいと考えています。このアプリのいくつかの機能は、いくつかの API に接続してメールを送信することです。さらに、私は PostgreSQL を使用しており、Heroku 上にあります。

コードがきれいになったので、アプリのスケーリングに役立つキャッシュと任意の手法を使用したいと思います。

Redis または Memcached を使用する必要がありますか? 私には少しあいまいで、StackOverflow で同様の質問を見てきましたが、ここでは、スケーリングの目的でのみ使用する必要があるものを知りたいと思います。

また、Sidekiq を使用していくつかのジョブを処理することも考えていました。Memcached/Redis と競合しますか? また、どのような場合に使用すればよいですか?

スケーラビリティに関して他に考えるべきことはありますか?

どうもありがとう

4

3 に答える 3

0

近い将来、まだ登場していない Redis の 2 つの優れた機能に注目する必要があります。

Redis クラスター:

Redis Sentinel: (高可用性)

また、これらの機能は redis のスケーリングに非常に役立ちます。memcached の場合、これらの機能が欠落しており、活発な開発に関する限り、redis コミュニティはより活発です。

于 2013-11-10T20:38:17.437 に答える
0

Sidekiq には、メッセージ ストアとして Redis が必要です。したがって、Sidekiq を使用する場合は、Redis インスタンスを用意するか、Redis サービスを使用する必要があります。Sidekiqは素晴らしいです。

Memcached または Redis をキャッシュ ストアとして使用できます。キャッシュには、キャッシュのクリーニング動作が優れているため、おそらく Memcached を使用します。Rails 全般、特に Rails 4 アプリでは、アイテムをキャッシュから明示的に失効させたり、明示的な有効期限を設定したりすることはめったにありません。代わりに、cache_key の更新に依存します。つまり、キャッシュされたアイテムは実際にはストアから削除されません。Memcached は、メモリ制限に達すると、最近使用されていないアイテムを削除することで、これをうまく処理します。

とはいえ、スケーリングは、いくつかのコンポーネントを選択するだけではありません。かなりの量の計画を立て、アプリの開発に合わせてボトルネックを特定し、必要に応じてサーバーを増やして CPU/メモリ/ディスクをスケーリングする必要があります。

于 2013-11-07T16:51:17.510 に答える