当前位置:网站首页>10 minutes pour maîtriser complètement la rupture du cache, la pénétration du cache, l'avalanche du cache
10 minutes pour maîtriser complètement la rupture du cache, la pénétration du cache, l'avalanche du cache
2022-07-06 13:02:00 【Java Smoke Rain】
Écrivez un article et ralentissez,Partagez vos huit actions:Rupture du cache、Pénétration du cache、Cache l'avalanche.
Avant de comprendre ces trois questions,Nous devons comprendre,Cache distribuée couramment utiliséeRedisLa quantité de concurrence d'une seule machine peut atteindre 10 000 niveaux,Base de données relationnelle communeMySQLLa concurrence générale est de l'ordre de mille,Ils supportent peut - être dix fois moins de concurrence,Donc, essayez d'intercepter le trafic au niveau du cache autant que possible.
Pourquoi??C'est comme un grand lac avec plus d'eau,Peut - être qu'il a emporté le ruisseau,Je me demande si vous avez entendu——L'eau et le ciel de la rivière Yangtze,Bai yangdian ne peut pas tenir.
Table des matières:
Rupture du cache
Qu'est - ce qu'une panne de cache
Comment résoudre la rupture du cache
Pénétration du cache
Qu'est - ce que la pénétration du cache
Comment résoudre la pénétration du cache
Cache l'avalanche
Qu'est - ce qu'une avalanche de cache
Comment résoudre une avalanche de cache
Texte:
Qu'est - ce qu'une panne de cache
Commencez par la rupture du cache.
Rupture du cache: Un grand nombre de visites simultanéeskeyExpire à un moment donné,Toutes les demandes ont été envoyées directement àDBAllez..

Rupture du cache
La rupture du cache augmente la charge de la base de données,On verra comment ça va s'arranger.
Comment résoudre la rupture du cache
Mise à jour du verrouillage
Cache de requête,Trouvé n'existe pas dans le cache,Verrouillage,Laissez les autres fils attendre,Laissez un seul thread mettre à jour le cache.

Mise à jour du verrouillage
Mise à jour asynchrone
Une autre solution possible est de ne jamais expirer les paramètres du cache.Comment mettre à jour le cache?Mise à jour asynchrone du cache.
Par exemple, l'arrière - plan configure un cache de mise à jour programmé par un thread démon,Mais ce Timing est plus difficile à saisir.
Le mécanisme de mise à jour asynchrone est en fait plus approprié pour le préchauffage du cache.
Pénétration du cache
Qu'est - ce que la pénétration du cache
Pénétration du cache:La pénétration du cache fait référence aux données qui n'existent ni dans le cache de requête ni dans la base de données,Cela permet d'accéder directement à la base de données à chaque demande,Comme si le cache n'existait pas.

Pénétration du cache
La pénétration du cache fera en sorte que les données qui n'existent pas seront questionnées au niveau du stockage à chaque demande,Perte de la signification du stockage de sauvegarde de cache.
La pénétration du cache peut augmenter la charge de stockage de l'arrière - plan,Si vous trouvez un grand nombre de touches vides de niveau de stockage,Il y a peut - être un problème de pénétration du cache.
La pénétration du cache peut avoir deux raisons:
Problème de code d'entreprise propre
Attaque malveillante,Le crawler a causé un coup nul
Voyons comment résoudre.
Comment résoudre la pénétration du cache
Cache NULL/Par défaut
Une façon de le faire est après que la base de données ne soit pas touchée,Enregistrer un objet vide ou la valeur par défaut dans le cache,Puis accédez à ces données,Vous obtiendrez du cache,Cela protège la base de données.

Cache NULL
Il y a deux gros problèmes avec les valeurs nulles du cache:
Les valeurs nulles sont mises en cache,Cela signifie qu'il y a plus de clés dans la couche cache,Besoin de plus de mémoire(Si c'est une attaque,Le problème est plus grave),Plus efficace
La méthode consiste à fixer un délai d'expiration plus court pour ce type de données,Pour qu'il soit automatiquement éliminé.
Les données des niveaux de cache et de stockage seront incohérentes pendant un certain temps,Peut avoir un certain impact sur les affaires.
Par exemple, le délai d'expiration est fixé à5Minutes,Si le niveau de stockage ajoute ces données à ce moment,Il y aura une incohérence entre les données des niveaux de cache et de stockage.
À ce stade, vous pouvez utiliser la file d'attente de messages ou d'autres méthodes asynchrones pour nettoyer les objets vides dans le cache.
Le filtre blon
En plus de mettre en cache des objets vides,On peut aussi stocker et mettre en cache,Ajouter un filtre blon,Faire une couche de filtration.
Les données sont sauvegardées dans le filtre Bloom,Si les données de jugement ne peuvent plus,Sans accès au stockage.

Filtre Bloom
Qu'est - ce que ce filtre blon?Ça va être lent de le trouver?
Qu'est - ce qu'un filtre blon?
Je ne sais pas ce que vous savez sur les tables de hachage,Le filtre blon est un truc comme ça.
C'est une structure de données continue,Chaque stockage de stockage est unbit,C'est - à - dire:0Ou1, Pour identifier si les données existent.
Quand les données sont stockées,UtiliserKDifférentes fonctions de hachage cartographient cette variable àbitDe la listeKUn point,Mettez - les à1.

Structure du filtre blon
On juge le cachekeyExiste - t - il?,Encore une fois,KFonctions de hachage,Mapping tobitSur la listeKUn point,Le jugement est - il vrai?1:
Si ce n'était pas tout1,AlorskeyN'existe pas;
Si c'est tout1,C'est juste un signe.keyPeut - être..
Et pourquoi??Parce qu'une fonction de hachage est une possibilité de collision.
Deux solutions principales pour la pénétration du cache,Comparons simplement:

Cache empty Object Core Bloom Filter Scheme Comparison
Cache l'avalanche
Ensuite, regardons le pire,Cache l'avalanche.
Qu'est - ce qu'une avalanche de cache
Cache l'avalanche: Quand quelque chose⼀Toujours.⽣⼤Échec du cache de taille,Par exemple, un arrêt du Service de mise en cache、Beaucoup.keyExpire en même temps,Les conséquences sont⼤Une demande de volume est arrivée.DBAllez.,Ça pourrait causer un crash de l'ensemble du système,Appelé avalanche.

.... Les blogueurs sont trop paresseux pour compter trop de mots ,Je ne veux pas écrire..... Article fait PDF, Les amis dans le besoin peuvent me faire confiance gratuitement !
边栏推荐
- 341. Flatten nested list iterator
- Office prompts that your license is not genuine pop-up box solution
- MySQL performance tuning - dirty page refresh
- Mysql database index
- Fairygui gain buff value change display
- [algorithm] sword finger offer2 golang interview question 1: integer division
- 【RTKLIB 2.4.3 b34 】版本更新简介一
- [algorithm] sword finger offer2 golang interview question 10: subarray with sum K
- [algorithm] sword finger offer2 golang interview question 6: sum of two numbers in the sorting array
- Liste des boucles de l'interface graphique de défaillance
猜你喜欢
![Fundamentals of UD decomposition of KF UD decomposition [1]](/img/e9/564e0163c3756c0ba886913f1cfaef.jpg)
Fundamentals of UD decomposition of KF UD decomposition [1]
![[algorithme] swordfinger offer2 golang question d'entrevue 2: addition binaire](/img/c2/6f6c3bd4d70252ba73addad6a3a9c1.png)
[algorithme] swordfinger offer2 golang question d'entrevue 2: addition binaire

面试必备:聊聊分布式锁的多种实现!

NovAtel 板卡OEM617D配置步骤记录

Fairygui loop list

Detailed explanation of balanced binary tree is easy to understand

FairyGUI增益BUFF数值改变的显示
![[algorithm] sword finger offer2 golang interview question 13: sum of numbers of two-dimensional submatrix](/img/17/e7c9bfa867030af97eb66a7932c7e3.png)
[algorithm] sword finger offer2 golang interview question 13: sum of numbers of two-dimensional submatrix

341. Flatten nested list iterator

Role movement in the first person perspective
随机推荐
[algorithm] sword finger offer2 golang interview question 3: the number of 1 in the binary form of the first n numbers
Error: symbol not found
Exception: ioexception:stream closed
[Chongqing Guangdong education] Shandong University College Physics reference materials
Comparative analysis of the execution efficiency of MySQL 5.7 statistical table records
Record: Navicat premium can't connect to MySQL for the first time
NovAtel 板卡OEM617D配置步骤记录
[algorithm] sword finger offer2 golang interview question 4: numbers that appear only once
【干货】提升RTK模糊度固定率的建议之周跳探测
Special palindromes of daily practice of Blue Bridge Cup
Fairygui character status Popup
[algorithm] sword finger offer2 golang interview question 8: the shortest subarray with a sum greater than or equal to K
Record: the solution of MySQL denial of access when CMD starts for the first time
Lock wait timeout exceeded try restarting transaction
[algorithm] sword finger offer2 golang interview question 13: sum of numbers of two-dimensional submatrix
Music playback (toggle & playerprefs)
Itext 7 生成PDF总结
It has been solved by personal practice: MySQL row size too large (> 8126) Changing some columns to TEXT or BLOB or using ROW_ FORMAT
[算法] 剑指offer2 golang 面试题12:左右两边子数组的和相等
What are the advantages of using SQL in Excel VBA