キャッシュに関して最も懸念される問題は何ですか?種類は何ですか?リサイクル戦略とアルゴリズム?

キャッシュに関して最も懸念される問題は何ですか?種類は何ですか?リサイクル戦略とアルゴリズム?

[[342437]]

著者は、正確なタイミング タスクと遅延キュー処理機能を備えた、高同時実行シナリオ向けのシンプルで安定したスケーラブルな遅延メッセージ キュー フレームワークを個人的に開発しました。半年以上前にオープンソース化されて以来、10 社を超える中小企業に正確でタイムリーなスケジューリング ソリューションを提供することに成功し、実稼働環境でのテストにも耐えてきました。より多くの人々の利益のために、オープンソース フレームワークのアドレスが次のように提供されます。

https://github.com/sunshinelyz/mykit-delay

序文

プロジェクトを開始するとき、パフォーマンスの問題をあまり考慮せず、関数をすばやく反復することに重点を置くことがよくあります。ビジネスが急速に発展するにつれて、システムのパフォーマンスはどんどん低下していきます。この時点で、システムはそれに応じて最適化する必要があり、これを実現する最も重要な方法は、システムにキャッシュを追加することです。そこで質問なのですが、システムにキャッシュを追加する場合、キャッシュを使用する際に何に注意すべきか考えたことがありますか?

キャッシュヒット率

キャッシュ ヒット率は、キャッシュからデータが読み取られる回数と総読み取り回数の比率です。ヒット率が高いほど良いといえます。キャッシュヒット率 = キャッシュからの読み取り数 / (合計読み取り数 (キャッシュからの読み取り数 + 低速デバイスからの読み取り数))。これは非常に重要な監視指標です。キャッシュを行う場合は、この指標を監視して、キャッシュが正常に動作しているかどうかを確認する必要があります。

キャッシュタイプ

一般的に、キャッシュの種類は、ヒープ キャッシュ、オフヒープ キャッシュ、ディスク キャッシュ、分散キャッシュに分類できます。

ヒープメモリ

オブジェクトを格納するために Java ヒープ メモリを使用します。ヒープ キャッシュを使用する利点は、シリアル化/デシリアル化がなく、最も高速なキャッシュであることです。デメリットも明らかです。キャッシュされたデータの量が多いと、GC (ガベージ コレクション) の一時停止時間が長くなり、ヒープ領域のサイズによってストレージ容量が制限されます。キャッシュ オブジェクトは通常、ソフト参照/弱参照を通じて保存されます。つまり、ヒープ メモリが不足している場合、この部分のメモリを強制的に再利用してヒープ メモリ領域を解放することができます。ヒープ キャッシュは通常、ホット データを保存するために使用されます。 Guava Cache、Ehcache 3.x、または MapDB を使用して実装できます。

オフヒープメモリ

つまり、キャッシュ データはオフヒープ メモリに保存されるため、GC 一時停止時間を短縮でき (ヒープ オブジェクトがヒープ外に転送され、GC がスキャンして移動するオブジェクトが少なくなります)、より多くのキャッシュ領域をサポートできます (マシン メモリ サイズによってのみ制限され、ヒープ領域の影響を受けません)。ただし、データを読み取る際にはシリアル化/デシリアル化が必要です。したがって、ヒープ キャッシュよりもはるかに遅くなります。これは、Ehcache 3.x または MapDB を使用して実現できます。

ディスクキャッシュ

つまり、キャッシュされたデータはディスクに保存され、JVM を再起動してもデータは存在しますが、ヒープ/オフヒープにキャッシュされたデータは失われ、再ロードする必要があります。これは、Ehcache 3.x または MapDB を使用して実現できます。

分散キャッシュ

分散キャッシュは、ehcache-clustered (Terracotta サーバーを使用) を使用して、Java プロセス間の分散キャッシュを実装できます。 Memcached または Redis を使用して実装することもできます。

分散キャッシュを使用する場合、次の 2 つのモードがあります。

スタンドアロン モード: 最もホットなデータをヒープ キャッシュに保存し、比較的ホットなデータをオフヒープ キャッシュに保存し、それほどホットでないデータをディスク キャッシュに保存します。

クラスター モード: 最もホットなデータをヒープ キャッシュに保存し、比較的ホットなデータを外部キャッシュに保存し、すべてのデータを分散キャッシュに保存します。

キャッシュ削除ポリシー

キャッシュ削除戦略には通常、スペースベースの削除戦略、容量 (スペース) ベースの削除戦略、時間ベースの削除戦略、およびオブジェクト参照ベースの削除戦略が含まれます。

宇宙ベース

スペースベースのキャッシュは、10MB などのストレージ スペースを設定します。ストレージ スペースの制限に達すると、特定の戦略に従ってデータが削除されます。

容量に基づいて

容量ベースとは、キャッシュに最大サイズが設定されていることを意味します。キャッシュされたエントリが最大サイズを超えると、特定の戦略に従って古いデータが削除されます。

時間ベース

TTL (Time To Live): 存続期間は、キャッシュされたデータの作成から有効期限までの期間です (この期間中にアクセスされたかどうかに関係なく、キャッシュされたデータは期限切れになります)。 TTI (Time To Idle): アイドル期間、つまりキャッシュされたデータがアクセスされない期間が長く、その後キャッシュから削除されます。

オブジェクト参照に基づく

ソフト参照: オブジェクトがソフト参照されている場合、JVM ヒープのメモリが不足すると、ガベージ コレクターはこれらのオブジェクトを再利用することができます。ソフト参照はキャッシュに適しているため、JVM ヒープ メモリが不足している場合は、これらのオブジェクトをリサイクルして強参照オブジェクト用のスペースを解放し、OOM を回避できます。弱参照: ガベージ コレクターがメモリを再利用するときに、弱参照が見つかった場合は、すぐに再利用されます。ソフト参照と比較すると、弱参照のライフ サイクルは短くなります。

注: 弱参照/ソフト参照オブジェクトは、他の強参照オブジェクトがそれを参照していない場合にのみ、ガベージ コレクション中に再利用されます。つまり、弱参照/ソフト参照オブジェクトを参照するオブジェクト (弱参照/ソフト参照オブジェクトではない) がある場合、弱参照/ソフト参照オブジェクトはガベージ コレクション中にリサイクルされません。

リサイクルアルゴリズム

スペースベースおよび容量ベースのキャッシュを使用すると、通常は FIFO アルゴリズム、LRU アルゴリズム、LFU アルゴリズムなどの特定の戦略を使用して古いデータを削除します。

FIFO (先入れ先出し): 先入れ先出しアルゴリズム。つまり、キャッシュに最初に入れられたものが最初に削除されます。

LRU (Least Recently Used): 最も最近使用されていないアルゴリズム、現在からの時間距離が最も長いものが削除されます。

LFU (最も使用頻度の低いアルゴリズム): 最も使用頻度の低いアルゴリズム、つまり一定期間内に最も使用回数 (頻度) の少ないアルゴリズムが削除されます。

実際のアプリケーションでは、ほとんどのキャッシュは LRU に基づいています。

この記事はWeChat公式アカウント「Glacier Technology」から転載したものです。下のQRコードからフォローできます。この記事を転載する場合は、Glacier Technology 公式アカウントまでご連絡ください。

<<:  超低消費電力センサーソリューションがスマートビルディングを実現する方法

>>:  DeepMindはAIを使ってチェスの新しいルールを作成する

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

研究者らは、キーボードの打鍵音からデータを盗むためのディープラーニングモデルを最大95%の精度で訓練することに成功した。

8月7日のニュース、キーボードで入力した内容が他人に聞かれる可能性があることをご存知ですか?英国の...

...

...

AIが認知症患者の自立した生活にどのように役立つか

[[279905]]写真はインターネットから照明や音楽を Alexa や Siri などの音声制御テ...

Google CEO ピチャイ: 新しい AI 製品のサブスクリプション モデルを検討中

10月26日、2023年第3四半期の決算発表で、グーグルとその親会社アルファベットのCEOであるサン...

音声認識技術は急速に発展しており、その規模は今後5年間で300億近くに達するだろう。

現在、科学技術の発展に伴い、人工知能産業は急速に成長し、あらゆる分野の変革における重要な要素となって...

一貫性ハッシュアルゴリズムと分散ストレージへの応用

OStorageの責任者であるLi Mingyu氏は、同社のエンタープライズレベルのオブジェクトスト...

AIのデジタルシールド:インフラのサイバーセキュリティ戦略の強化

技術革新の時代において、人工知能 (AI) は変革の力として際立っています。パーソナライズされた推奨...

【WOT2018】AIの敷居は下がり続け、AIツールは誰でも利用可能に

[51CTO.comより引用] 2018年11月30日から12月1日まで、WOT2018グローバル人...

パラメータ調整器、ここを見てください!ディープラーニングのトレーニング効率を向上させる2つのコツ

[[343402]] 1. トレーニングのボトルネックはどこですか? GPU 使用率が低い: モデル...

AIが米国の8年生の理科テストに高得点で合格。常識や推論の問題を解くことができ、同じ舞台でAIと競争する準備が整った。

8年生の理科のテストに60点で合格すれば、8万ドル(57万人民元相当)の賞金を獲得できます。 [[...

...

マスク氏と陳天橋氏の両者が期待している脳コンピューターインターフェースは、将来いつ実現するのだろうか?

[[415853]]失語症の人は再び話せるようになり、聴覚障害の人は再び聞こえるようになり、四肢麻...

機械学習における小規模データの重要性

ビッグデータが何であるかを知っている人は多いですが、スモールデータと機械学習におけるその重要性を知っ...

AI と ROI に関する真実: AI は本当に成果をもたらすことができるのか?

今日、企業組織はこれまで以上に人工知能 (AI) と機械学習 (ML) の可能性を信頼し、投資してい...