【Prefazione】
Quando i dati raggiungono una certa quantità, il database diventa il collo di bottiglia dell'intero sistema, e la strategia di ottimizzazione viene generalmente adottata come separazione tra lettura e scrittura, e il database realizza la separazione tra lettura e scrittura dividendo il database principale dal database (operazione di richiesta di scrittura dal database principale, operazione di richiesta di lettura dal database);
【Idee per risolvere ritardi nei dati】
1. Il principio della sincronizzazione master-slave (qui prendiamo come esempio il MySQL più popolare)
Ecco un diagramma schematico di una classica sincronizzazione dati MySQL master-slave tramite binlog:
2. Come sorgono i problemi?
1. Dallo schema sopra, non è difficile trovare che la sincronizzazione master-slave ha un certo ritardo, che influisce sulla dimensione del ritardo:
(1) La dimensione del ritardo dipende dalla quantità di dati generati dall'ultima sincronizzazione fino al presente
(2) La situazione attuale della rete tra i server
(3) La pressione del server master-slave stesso (CPU, memoria, IO, ecc.)
2. Poiché il servizio database è generalmente nell'intranet e il server sarà più alto nella configurazione (più del bisogno effettivo) al momento dell'acquisto, la sincronizzazione è fondamentalmente molto veloce, generalmente in millisecondi;
3. In scenari aziendali generali, la latenza di millisecondi può essere ignorata;
4. Esistono casi generali e particolari, e alcune situazioni particolari richiedono una differenza di tempo in tempo reale di millisecondi. Ecco soluzioni comuni per queste situazioni particolari.
3. Soluzioni di latenza dei dati:
1. Schema 1: Scrivere il programma doppio (scrivere il database principale e leggere il database contemporaneamente)
2. Schema 2: Leggere il programma per controllare il database principale
3. Schema 3: Scrivere il database principale e scrivere la cache (impostare un certo tempo di scadenza, generalmente leggermente superiore al ritardo massimo di sincronizzazione del database), leggere il programma, leggere la cache e leggere il database slave
4. Vantaggi e svantaggi dei tre schemi:
1. Schema 1: La doppia scrittura consuma una certa quantità di prestazioni, che è relativamente semplice da implementare e non è adatta a scenari di scrittura concorrente ad alta intensità;
2. Schema 2: Il programma di lettura influenzerà le prestazioni della libreria principale, che è relativamente semplice da implementare e non è adatta a scenari di lettura concorrente ad alto livello.
3. Schema 3: Nella maggior parte dei casi, lettura e scrittura consumano più performance di scrittura, il che è più complesso da implementare ed è adatto sia per letture concorrenti elevate che per scritture concorrenti (le letture e scritture in cache sono molto veloci);
【Riassunto】
1. L'implementazione è importante, ma più importante è l'idea;
2. Molti principi e idee sottostanti sono universali Originale:https://blog.csdn.net/zhanghan18 ... le/details/91638443
|