【Förord】
När datan når en viss mängd blir databasen flaskhalsen i hela systemet, och optimeringsstrategin används vanligtvis som läs- och skrivseparation, och databasen genomför läs- och skrivseparation genom att dela huvuddatabasen från databasen (skrivförfrågan från huvuddatabasen, läsförfrågan från databasen);
【Idéer för att lösa datafördröjningar】
1. Principen om master-slave-synkronisering (här tar vi det mest populära MySQL som exempel)
Här är ett schematiskt diagram över en klassisk MySQL master-slave datasynkronisering via binlog:
2. Hur uppstår problem?
1. Från ovanstående schema är det inte svårt att hitta att master-slave-synkronisering har en viss fördröjning, vilket påverkar fördröjningsstorleken:
(1) Fördröjningens storlek beror på mängden data som genereras från den senaste synkroniseringen till nutid
(2) Den aktuella nätverkssituationen mellan servrar
(3) Trycket från master-slave-servern själv (CPU, minne, IO, etc.)
2. Eftersom databastjänsten vanligtvis är i intranätet, och servern kommer att vara högre i konfigurationen (mer än det faktiska behovet) när den köps, är synkroniseringen i princip mycket snabb, vanligtvis på millisekunder;
3. I allmänna affärsscenarier kan millisekundlatens ignoreras;
4. Det finns allmänna och speciella fall, och vissa speciella situationer kräver realtidsmillisekunds tidsskillnad. Här är vanliga lösningar för dessa speciella situationer.
3. Lösningar för datalatens:
1. Schema 1: Skriv programdubbeln (skriv huvuddatabasen och läs databasen samtidigt)
2. Schema 2: Läs programmet för att kontrollera huvuddatabasen
3. Schema 3: Skriv huvuddatabasen och skriv cachen (sätt en viss utgångstid, vanligtvis något längre än maximal fördröjning för databassynkronisering), läs programmet, läs cachen och läs slavdatabasen
4. Fördelar och nackdelar med de tre systemen:
1. Schema 1: Dubbelskrivande förbrukar en viss mängd prestanda, vilket är relativt enkelt att implementera och inte lämpligt för scenarier med hög samtidighet i skrivande;
2. Schema 2: Läsprogrammet påverkar huvudbibliotekets prestanda, vilket är relativt enkelt att implementera och inte lämpligt för scenarier med hög samtidiga läsning.
3. Schema 3: I de flesta fall kräver läsning och skrivning mer skrivprestanda, vilket är mer komplext att implementera och passar både höga samtidiga läsningar och skrivningar (cacheläsningar och skrivningar är mycket snabba);
【Sammanfattning】
1. Implementering är viktigt, men viktigare är idén;
2. Många underliggande principer och idéer är universella Original:https://blog.csdn.net/zhanghan18 ... le/details/91638443
|