Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 10734|Vastaus: 0

[Redis] Esimerkit selittävät, mitä Redis cache penetration, cache avalanche ja cache breakdown ovat

[Kopioi linkki]
Julkaistu 19.11.2019 9.55.04 | | | |
Redis-välimuistin käyttö parantaa merkittävästi sovellusten suorituskykyä ja tehokkuutta, erityisesti datakyselyissä. Mutta samalla se tuo mukanaan myös ongelmia. Näistä tärkein ongelma on datan johdonmukaisuus, joka on ehdottomasti ratkaisematonta. Jos datan johdonmukaisuus vaaditaan, välimuistia ei voi käyttää.

Muita tyypillisiä ongelmia ovat välimuistin läpäisy, välimuistivyöry ja välimuistin hajoaminen. Tällä hetkellä alalla on myös suositumpia ratkaisuja. Tämän artikkelin tarkoituksena ei ole ratkaista näitä kolmea ongelmaa täydellisemmin, eikä myöskään alistaa alan suosittuja ratkaisuja. Sen sijaan havainnollistamme nämä kolme ongelmailmiötä varsinaisesta koodioperaatiosta. Syynä tähän on se, että on vaikeaa muodostaa hyvin elävää käsitystä päässään pelkästään tarkastelemalla näiden ongelmien akateemista selitystä, ja varsinaisilla koodin demonstraatioilla voit syventää ymmärrystä ja ymmärrystä näistä ongelmista.

Välimuistin läpäisy

Välimuistin läpäisy tarkoittaa datan kyselyä, jota ei ole tietokannassa. Jos avainta ei ole olemassa tai avain on vanhentunut, tietokanta haetaan ja haetut objektit siirretään välimuistiin. Jos tietokantakyselyobjekti on tyhjä, sitä ei välimuistiteta.



Koodin virtaus

  • parametri siirtää objektin ensisijaisen avaimen ID:n
  • Hae objekti välimuistista avaimen perusteella
  • Jos objekti ei ole tyhjä, se palaa suoraan
  • Jos objekti on tyhjä, suorita tietokantakysely
  • Jos tietokannasta haettu objekti ei ole tyhjä, laita se välimuistiin (aseta viimeinen käyttöaika). Kuvittele tämä tilanne, mitä tapahtuisi, jos syötetty parametri olisi -1? Tämä -1 on objekti, jota ei saa olla olemassa. Tietokantaa haetaan joka kerta, ja jokainen kysely on tyhjä, eikä sitä välimuistiteda joka kerta. Jos tapahtuu pahantahtoinen hyökkäys, tätä haavoittuvuutta voidaan hyödyntää painostamaan tietokantaa tai jopa ylikuormittamaan sitä. Vaikka UUID:tä käytettäisiin, on helppo löytää olematon AVAIN ja hyökätä.


Työssäni käytän nollaarvojen välimuistin menetelmää, eli vaihetta 5 [koodiprosessissa], jos tietokannasta haettu objekti on tyhjä, sekin siirretään välimuistiin, mutta välimuistin määräaikainen käyttöikä on lyhyt, esimerkiksi asettamalla sen 60 sekuntiin.




Kätkölumivyöry

Välimuistivyöry tarkoittaa välimuistijoukon vanhenemista tietyn ajanjakson aikana.

Yksi lumivyöryn syistä on esimerkiksi se, että tätä artikkelia kirjoittaessani on se, että pian on kello nolla kahdestoista päivänä, ja pian alkaa nopea ostoaalto. Sitten yhdeltä yöllä tämän tavaraerän varasto vanhenee. Tämän tavaraerän käyttöoikeuskysely kohdistuu tietokantaan, ja tietokannassa paineen huiput ovat ajoittaisia.

Kun Xiaobian tekee verkkokauppaprojekteja, hän yleensä ottaa käyttöön eri tuotekategorioita ja kätkee eri syklejä. Tavarat samassa kategoriassa, plus satunnainen tekijä. Näin välimuistin vanhenemisaika voidaan jakaa mahdollisimman paljon, suosittujen kategorioiden tuotteiden välimuistiaika on pidempi ja epäsuosittujen kategorioiden tuotteiden välimuistiaika lyhyempi, mikä voi myös säästää välimuistipalvelun resursseja.




Itse asiassa keskitetty vanheneminen ei ole kovin kohtalokasta, ja kohtalokkaampi välimuistivyöry on se, että välimuistipalvelimen solmu menee alas tai katkeaa. Koska luonnollinen välimuistivyöry täytyy luoda tietyn ajan kuluessa, tietokanta kestää paineen, ja tällöin tietokanta kestää myös paineen. Kyse on vain ajoittaisesta paineesta tietokannalle. Välimuistipalvelusolmun käyttökatko aiheuttaa arvaamatonta painetta tietokantapalvelimelle, ja se todennäköisesti ylikuormittaa tietokannan hetkessä.

Välimuistin erittely

Välimuistin hajottaminen tarkoittaa avainta, joka on hyvin kuuma, kantaa jatkuvasti suurta samanaikaisuutta, suuri samanaikaisuus keskittyy tämän pisteen saavuttamiseen; kun avain epäonnistuu, jatkuva suuri rinnakkaisuus rikkoo välimuistin ja pyytää suoraan tietokantaa, aivan kuten poraisi reiän esteeseen.

Kun Xiaobian teki verkkokauppaprojekteja, hän teki tästä tuotteesta "hitin".

Itse asiassa useimmissa tapauksissa tällainen räjähdys on vaikea asettaa murskaavaa painetta tietokantapalvelimelle. Harvat yritykset ovat saavuttaneet tämän tason. Siksi pragmaattinen editori on valmistautunut päätuotteisiin ajoissa, jotta välimuisti ei koskaan vanhene. Vaikka jotkut tuotteet käyvät itsestään hitteiksi, ne voidaan asettaa vanhentumattomiksi.

Pääväylä on yksinkertainen, ja mutex-avaimen vastavuoroinen hylkäyslukko ei oikeastaan ole käytössä.





Edellinen:MySql 8.0 Käytä joko suojattua yhteyttä, määritä palvelimen RSA...
Seuraava:Docker-kontti ulkoisten isäntäpalveluiden käyttämiseen
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com