【Prefață】
Când datele ating o anumită cantitate, baza de date devine blocajul întregului sistem, iar strategia de optimizare este în general adoptată ca separare între citire și scriere, iar baza de date realizează separarea bazei de date principală de baza de date (operație de cerere de scriere din baza de date principală, operație de cerere de citire din baza de date);
【Idei pentru rezolvarea întârzierilor de date】
1. Principiul sincronizării master-slave (aici luăm ca exemplu cel mai popular MySQL)
Iată o diagramă schematică a unei sincronizări clasice de date MySQL master-slave prin binlog:
2. Cum apar problemele?
1. Din schema de mai sus, nu este greu de constatat că sincronizarea master-slave are o anumită întârziere, care afectează dimensiunea întârzierii:
(1) Mărimea întârzierii depinde de cantitatea de date generate de la ultima sincronizare până în prezent
(2) Situația actuală a rețelei între servere
(3) Presiunea serverului master-slave în sine (CPU, memorie, IO etc.)
2. Deoarece serviciul de bază de date este, în general, în intranet, iar serverul va avea o configurație superioară (mai mult decât necesarul real) la achiziție, sincronizarea este practic foarte rapidă, de obicei în milisecunde;
3. În scenarii generale de afaceri, latența de milisecunde poate fi ignorată;
4. Există cazuri generale și speciale, iar unele situații speciale necesită o diferență de timp de milisecunde în timp real. Iată soluții comune pentru aceste situații speciale.
3. Soluții pentru latența datelor:
1. Schema 1: Scrie programul dublu (scrie baza de date principală și citește baza de date în același timp)
2. Schema 2: Citește programul pentru a verifica baza de date principală
3. Schema 3: Scrie baza de date principală și scrie cache-ul (setează un anumit timp de expirare, de obicei puțin mai mare decât întârzierea maximă a sincronizării bazei de date), citește programul, citește cache-ul și citește baza de date slave
4. Avantaje și dezavantaje ale celor trei scheme:
1. Schema 1: Scrierea dublă va consuma o anumită cantitate de performanță, ceea ce este relativ simplu de implementat și nu este potrivit pentru scenarii cu scriere concurentă ridicată;
2. Schema 2: Programul de citire va afecta performanța bibliotecii principale, care este relativ simplă de implementat și nu este potrivită pentru scenarii cu citire concurentă ridicată.
3. Schema 3: În majoritatea cazurilor, citirea și scrierea consumă mai multă performanță de scriere, ceea ce este mai complex de implementat și este potrivit atât pentru citiri și scrieri concurente ridicate (citirile și scrierile în cache sunt foarte rapide);
【Rezumat】
1. Implementarea este importantă, dar mai importantă este ideea;
2. Multe principii și idei fundamentale sunt universale Original:https://blog.csdn.net/zhanghan18 ... le/details/91638443
|