当前位置:网站首页>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:0
Ou1
, 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 !
边栏推荐
- Problems and solutions of robust estimation in rtklib single point location spp
- [算法] 剑指offer2 golang 面试题4:只出现一次的数字
- RTKLIB: demo5 b34f. 1 vs b33
- Detailed explanation of balanced binary tree is easy to understand
- FairyGUI人物状态弹窗
- FairyGUI增益BUFF數值改變的顯示
- FairyGUI循环列表
- FairyGUI简单背包的制作
- Mixed use of fairygui button dynamics
- Fairygui gain buff value change display
猜你喜欢
[algorithme] swordfinger offer2 golang question d'entrevue 2: addition binaire
Rt-ppp test using rtknavi
[算法] 剑指offer2 golang 面试题12:左右两边子数组的和相等
C code implementation of robust estimation in rtklib's pntpos function (standard single point positioning spp)
[algorithm] sword finger offer2 golang interview question 10: subarray with sum K
[GNSS data processing] Helmert variance component estimation analysis and code implementation
【干货】提升RTK模糊度固定率的建议之周跳探测
KF UD分解之UD分解基础篇【1】
闇の連鎖(LCA+树上差分)
Role movement in the first person perspective
随机推荐
[untitled]
[dry goods] cycle slip detection of suggestions to improve the fixed rate of RTK ambiguity
[algorithm] sword finger offer2 golang interview question 3: the number of 1 in the binary form of the first n numbers
Detailed explanation of balanced binary tree is easy to understand
The earth revolves around the sun
How to improve the deletion speed of sequential class containers?
[Chongqing Guangdong education] reference materials for regional analysis and planning of Pingdingshan University
MySQL backup -- common errors in xtrabackup backup
【rtklib】在rtk下使用抗差自适应卡尔曼滤波初步实践
[algorithme] swordfinger offer2 golang question d'entrevue 2: addition binaire
What are the functions and features of helm or terrain
Database table splitting strategy
记录:newInstance()过时的代替方法
面试必备:聊聊分布式锁的多种实现!
Fundamentals of UD decomposition of KF UD decomposition [1]
In 2020, the average salary of IT industry exceeded 170000, ranking first
[算法] 剑指offer2 golang 面试题9:乘积小于k的子数组
[算法] 剑指offer2 golang 面试题8:和大于或等于k的最短子数组
Comparative analysis of the execution efficiency of MySQL 5.7 statistical table records
Fabrication of fairygui simple Backpack