当前位置:网站首页>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 !
边栏推荐
- 染色法判定二分图
- 基于rtklib源码进行片上移植的思路分享
- Special palindromes of daily practice of Blue Bridge Cup
- Sharing ideas of on-chip transplantation based on rtklib source code
- 基本Dos命令
- [algorithme] swordfinger offer2 golang question d'entrevue 2: addition binaire
- 闇の連鎖(LCA+树上差分)
- Employment of cashier [differential constraint]
- Itext 7 生成PDF总结
- [算法] 剑指offer2 golang 面试题5:单词长度的最大乘积
猜你喜欢
[algorithm] sword finger offer2 golang interview question 8: the shortest subarray with a sum greater than or equal to K
FairyGUI复选框与进度条的组合使用
[untitled]
Excel导入,导出功能实现
Lock wait timeout exceeded try restarting transaction
Detailed explanation of balanced binary tree is easy to understand
MySQL 三万字精华总结 + 面试100 问,吊打面试官绰绰有余(收藏系列
[算法] 剑指offer2 golang 面试题6:排序数组中的两个数字之和
Office prompts that your license is not genuine pop-up box solution
The master of double non planning left the real estate company and became a programmer with an annual salary of 25W. There are too many life choices at the age of 25
随机推荐
最短Hamilton路径 (状压DP)
微信小程序开发心得
2022国赛Re1 baby_tree
[algorithm] sword finger offer2 golang interview question 3: the number of 1 in the binary form of the first n numbers
[untitled]
Record: the solution of MySQL denial of access when CMD starts for the first time
Prove the time complexity of heap sorting
Rt-ppp test using rtknavi
2022 National Games RE1 baby_ tree
Excel导入,导出功能实现
KF UD decomposition pseudo code implementation advanced [2]
Record: Navicat premium can't connect to MySQL for the first time
InnoDB dirty page refresh mechanism checkpoint in MySQL
wsl常用命令
FairyGUI简单背包的制作
The earth revolves around the sun
How to reduce the shutdown time of InnoDB database?
The port is occupied because the service is not shut down normally
Realization of the code for calculating the mean square error of GPS Height Fitting
Exception: ioexception:stream closed