分散型高並列キャッシュ設計システム

分散型高並列キャッシュ設計システム

概要

キャッシュの概要

キャッシュとは

Wiki でのキャッシュの定義: データへの後続のアクセスを高速化するためにデータを保存するために使用されるハードウェアまたはソフトウェアのコンポーネント。キャッシュ内のデータは、事前に計算された結果、データのコピーなどです。一般的なアプリケーション シナリオ: CPU キャッシュ、ディスク キャッシュなど。この記事で言及されているキャッシュは、主にインターネット アプリケーションで使用されるキャッシュ コンポーネントを指します。

キャッシュを導入する理由は何ですか?

従来のバックエンド ビジネス シナリオでは、アクセス量と応答時間に対する要件は高くなく、通常は要件を満たすために DB のみが使用されます。このアーキテクチャはシンプルで、すぐに導入しやすいため、多くの Web サイトでは開発の初期段階でこのアーキテクチャの使用を検討しています。しかし、訪問回数が増え、応答時間に対する要件が増すにつれて、単一の DB では要件を満たすことができなくなります。現時点では、新しいビジネス ニーズを満たすために、DB の分割 (シャーディング)、読み取りと書き込みの分離、さらにはハードウェアのアップグレード (SSD) が検討されるのが一般的です。しかし、このアプローチには依然として多くの問題があり、主に次のような問題があります。

パフォーマンスの向上には限界があり、特にインターネット ビジネスのシナリオでは桁違いの向上を達成することは困難です。ウェブサイトが発展するにつれて、訪問者数は 10 倍、さらには 100 倍に増加することがよくあります。

コストが高いです。 N 倍のトラフィックを処理するには、通常、N 倍のマシン数が必要となり、これは許容できないコストとなります。

1. 分散型高並列キャッシュ設計システム

全体的なアーキテクチャ図

1.2 カスタマイズされたクライアントプロトコル

ビジネスモジュールは、cacheProxyと対話するためにカスタムアプリケーション層プロトコルを使用します。

キャッシュバックエンド全体で使用されるプロトコルとストレージ (redis、memcached など) は何ですか?これはビジネス モジュールに対して透過的でしょうか?

キャッシュバックエンドとビジネスエンドは分離されており、変更は互いに影響しません。

1.2 負荷分散とフォールトトレランスメカニズム

一貫性のあるハッシュ アルゴリズムを使用すると、一部のノードがダウンしてもすべてのキャッシュが失敗することはなく、新しいノードを追加しても多数のキャッシュが失敗して再構築されることもありません。

キャッシュされたデータは、現在のハッシュ ノードと次の実際のハッシュ ノードの 2 つのコピーに保存されます。 1 つのノードがダウンしても、キャッシュはすぐに無効になるわけではありません。

cacheManは弱い管理ノードであり、監視、ノードの削除、新しいノードの追加を担当し、任意に起動および停止できます。

1.3 キャッシュの維持と除去のメカニズム

Redis ネイティブのタイムアウト メカニズム + 3 層 LRU キャッシュ アーキテクチャにより、最終的に Redis インスタンスに侵入するリクエストの数が削減されます。

クライアント側LRUキャッシュ

cacheProxy プロキシ LRU キャッシュ

Redis インスタンスの合計メモリ制限 + LRU キャッシュ

1.4 セキュリティメカニズム

Redisインスタンスは認証機能を有効にします

RedisインスタンスはすべてイントラネットIPでリッスンします

1.5 コアプロセス

新しいRedisノードを追加する



Redisノードを削除する

キャッシュを設定

キャッシュを取得

2. 問題

どのプラットフォームでもユーザー規模が拡大し、機能が継続的に追加されるにつれて、永続データベース層に対する読み取りおよび書き込みの負荷はますます大きくなります。データベースに過度の負荷がかかると、読み取りと書き込みのパフォーマンスが急激に低下します。深刻な場合には、多数のビジネス リクエストがタイムアウトし、「雪崩」が発生して重大な障害が発生します。

3. 解決策

ビジネス ロジックで変更されない複雑なクエリ結果をキャッシュするために、ビジネス レイヤーとデータベース永続性レイヤーの間にメモリ キャッシュ レイヤーが導入されます。ビジネス リクエストが再度開始されると、そのたびに最初にキャッシュ レイヤーがクエリされるため、データベースへのクエリの数が大幅に削減され、データベースへの負荷が軽減されます。

4. 分散メモリキャッシュ、ローカルシングルポイントキャッシュ、アプリケーション層キャッシュの比較

型の安定性 拡張性 汎用性 コードへの侵入性

アプリケーション層キャッシュアプ​​リケーションは頻繁に再起動および更新され、キャッシュが失われやすく、安定性が低く、プロセスのリソース制約によって制限され、異なるアプリケーションでコードを再利用することが難しく、侵入が少なく、ネットワーク操作がなく、アプリケーションプロセスメモリのみを操作する必要があります。

ローカルのシングルポイント キャッシュ 頻繁に再起動しない独立したキャッシュ アプリケーション (redis、memcached など) は、安定性は平均的ですが、シングルポイント障害の問題があり、通常は単一サーバーのリソース制限によって制限され、ビジネス アプリケーションとキャッシュ アプリケーション間の結合が強くなります。コードの侵入は平均的であり、対応する API を導入する必要があります。通常、ネットワーク操作があります

分散メモリ キャッシュ分散システムには、自動障害回復機能があり、単一障害点の問題がなく、安定性が高く、水平拡張が適切にサポートされ、ビジネス レイヤーに共通のインターフェイスが提供され、バックエンドの特定のキャッシュ アプリケーションはビジネスに対して透過的です。コードは一般的に侵襲的であり、通常はネットワーク操作を伴う共通 API の導入が必要です。

<<:  第2回全国インテリジェント製造イノベーション・起業家コンテスト決勝が北京で開催されました

>>:  雷軍のキングソフトクラウドは3億ドルを調達し、全面的に値下げして複数の垂直分野に進出

推薦する

優れたユーザーエクスペリエンスを実現するための 5 つの要件

[編集者注] この記事は@nipal柜によって翻訳されました。この記事では、優れたユーザーエクスペリ...

Godaddy - .com ドメイン名を 4 ドルで登録してドメインのプライバシー保護を取得

Host Cat は、Godaddy の製品を見つけました。これを使うと、.com ドメイン名を 4...

オンラインビジネスは観光監督の盲点となり、ウェブサイトやプラットフォームは頻繁に「エッジボール」をプレーしている。

国家観光局は6月4日、メーデー連休期間中の観光市場規制の集中検査について報告した。通知では、観光事業...

ビジネス準備: ハイブリッドクラウドの波及効果

柔軟性の向上から効率性の向上、コスト削減の迅速な実現まで、ハイブリッド クラウドの利点を説明する記事...

P2Pの品質の不均一性の背後にあるもの:数十万元でシステムを購入することでプラットフォームを構築できる

P2Pの品質の不均一性の背後にあるもの:数十万元でシステムを購入することでプラットフォームを構築でき...

新しいインフラは大きな試練に直面しており、天一クラウドは導入されている

アマゾン川で蝶が羽ばたき、2週間後に竜巻がテキサスを襲う。 3か月前には、「疫病」が2020年に新た...

最新のアルゴリズムでウェブサイトを外部から最適化する方法

前回の記事「新しいサイトが Baidu の最新アルゴリズムにどう対処すべきか」に続き、著者は Bai...

2013年、SEOは技術的な手作業から芸術へと変化しました

この記事を読む前に、重み、包含数、キーワード、タイトルの書き方、H1、アンカーテキストなど、SEO ...

「不良少年」頼林鋒:玉林木峰フォーラムから115クラウドディスクへ

115 Technology Co., Ltd. 会長兼 CEO の Lai Linfeng 氏 (...

iQiyi はなぜ価格を上げることにしたのでしょうか?

iQiyi の会員価格が上がる時期が来ています。数日前、iQiyi VIP会員のWeiboアカウント...

Instagramの成功の秘訣:商品に対する最大のタブーは貪欲さ

フェイスブックに10億ドルで売却するのは法外な値段のように聞こえるかもしれないが、計算してみてもイン...

虎の骨を描くのは難しいが、皮膚を描くのは難しい。ハオ兄弟の狂気

最近、「Crazy Webmasters」を再び読みました。私が最も興味を持ったのは、本のウェブサイ...

グループ購入ウェブサイトを成功に導くための簡単な例

共同購入ネットワークモデルが国内で普及した後、その発展は止められなくなり、共同購入ウェブサイトの数は...

悲惨な企業ウェブサイトSEO担当者が解雇されたことで浮かんだ思い

結果重視の企業環境では、指定された期限内にタスクを完了できなかった場合、解雇という結果に直面すること...