概要 キャッシュの概要 キャッシュとは 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億ドルを調達し、全面的に値下げして複数の垂直分野に進出
6月28日はウェブマスターにとって暗黒の日でした。大量のウェブサイトがBaiduのデータベースから追...
Baidu アルゴリズムの継続的なアップグレードにより、新しいサイトが Baidu で順位を獲得する...
マーケティング行動は、実際にはすべてのビジネス活動の一部にすぎません。多くのスタートアップ企業は何か...
月収10万元の起業の夢を実現するミニプログラム起業支援プランミニプログラムは2017年1月9日に開始...
ブラックフライデーとサイバーマンデーは本当に重要です。昨年、Bluehost は大きな割引はありませ...
最近、SEO蘇州ブログを読んだ多くの友人から、記事の中でウェブサイトアーキテクチャという用語が何度も...
今日は、非常にハードコアな技術的知識についてお話ししましょう。 CopyOnWrite のアイデアと...
第一のポイント: 忍耐力安定したウェブサイトランキングは、多くの SEO 担当者にとって致命的な打撃...
2018年5月、ピュア・ストレージ・アジア太平洋地域および日本担当副社長のマイケル・アルプ氏がメディ...
今年のエイプリルフールに「Zhibo Bar」のドメイン名「zhibo8.com」が盗まれた事件を覚...
V5Net(v5サーバー)は現在、香港の代表的なサーバーを30%割引で提供しています。わずか625元...
[[420216]] Docker を使用する場合、通常は docker build を使用してイメ...
記者は8月28日、テンセントクラウドが広州農村商業銀行の分散型金融クラウドプラットフォーム構築プロジ...
はじめに:ウェブマスターの最適化担当者として、毎日または定期的にオリジナルの文章を書くことは必須です...
最近、地元で有名なコミュニティである杭州19階がコミュニティ複製計画を公表しました。このモデルが成功...