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

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

概要

キャッシュの概要

キャッシュとは

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億ドルを調達し、全面的に値下げして複数の垂直分野に進出

推薦する

上司は1000万をどう使うべきでしょうか?主流プロモーションチャネルの組み合わせ戦略

この記事では、市場における主流のマーケティングおよびプロモーション チャネルと、それぞれの特徴につい...

5大ネット企業への投資目録:テンセントは成長に注力、百度は収益化に注力

2012年、タイガースは休むことなく、競争はさらに激しくなるだろう。業界のリーダーであっても、常に最...

ウェブサイトの重量を改善するための具体的な手順をいくつか紹介します

Googleの公式ガイドラインによると、ウェブサイトのランキングに影響を与える要素は200以上あるそ...

使い捨てアプリはユーザーエクスペリエンスを無視しています。モバイルアプリは今後どのように発展していくのでしょうか?

これからはモバイルインターネットの時代です。モバイルインターネットの発展に関しては、ユーザーはモバイ...

月収2万元を稼ぐソフト記事シリーズから何を学ぶか

葉鋒が毎月2万元を稼ぐソフト記事4本シリーズは、今年これまでのA5で最も成功したソフト記事と言える。...

週刊ニュースレビュー: 電子商取引の価格戦争 360 検索エンジン

1. JD.comが電子商取引の価格戦争を開始今週、インターネット上で最も注目されている話題は、間違...

コンテンツを読みやすくする4つの方法をご紹介します

ウェブマスターとして、私たちはコンテンツがサイトの魂であり、すべてのサイトが高品質のコンテンツを追求...

クラウドネイティブの進歩は開発者にさらなる可能性をもたらす

[[406118]]背景クラウド ネイティブは、クラウド コンピューティングの発展の必然的な産物であ...

[AWS コミュニティディスカッション活動概要 3] クラウドデータベースの長所と短所

[51CTO.com オリジナル記事] 今日の話題 (262) データベースをクラウド上に保存するし...

初心者はウェブサイト最適化の初期段階でウェブサイト最適化の考え方を確立する必要がある

インターネットの継続的な発展と電子商取引の広範な普及により、SEOは人々の間で非常に人気があるようで...

【年】海外でも使いやすく、購入しやすく、価格も手頃な#高防御サーバー#おすすめ

この記事では海外の「高防御サーバー」について解説します!サーバーが攻撃され、国内の高防御サーバーが使...

WeChatが深夜に大幅改訂、この波はすごいですね〜

今朝早く、 WeChatはもう一つの大きな動きを見せ、瞬く間に多くの業界関係者の注目と議論を集めまし...

BBSコミュニティの困難な変革:天家は「電気」に触れて観光商品を販売

Weiboや新興SNSソーシャルネットワーキングサイトの「包囲」の下で、伝統的なコミュニティBBSは...

友好的なリンクを共有および交換するための 4 つのヒント

​気づけば1年以上もWebサイト構築やSEOに携わってきました。まだまだ勉強中ですが、1年前の新人時...