【Przedmowa】
Gdy dane osiągną określoną wartość, baza danych staje się wąskim gardłem całego systemu, a strategia optymalizacji jest zazwyczaj przyjmowana jako rozdzielenie odczytu i zapisu, a baza danych realizuje separację odczytu i zapisu poprzez podział głównej bazy od bazy danych (operacja żądania zapisu z głównej bazy, operacja żądania odczytu z bazy);
【Pomysły na rozwiązanie opóźnień danych】
1. Zasada synchronizacji master-slave (tutaj weźmy najpopularniejszy MySQL jako przykład)
Oto schemat klasycznej synchronizacji danych MySQL master-slave za pomocą binlogu:
2. Jak pojawiają się problemy?
1. Na podstawie powyższego schematu łatwo stwierdzić, że synchronizacja master-slave ma określone opóźnienie, które wpływa na jego rozmiar:
(1) Wielkość opóźnienia zależy od ilości danych wygenerowanych od ostatniej synchronizacji do teraźniejszości
(2) Obecna sytuacja sieciowa między serwerami
(3) Presja samego serwera master-slave (CPU, pamięć, IO itd.)
2. Ponieważ usługa bazy danych zazwyczaj znajduje się w intranecie, a serwer jest wyżej skonfigurowany (powyżej rzeczywistej potrzeby) przy zakupie, synchronizacja jest zasadniczo bardzo szybka, zazwyczaj w milisekundach;
3. W ogólnych scenariuszach biznesowych opóźnienie milisekund można zignorować;
4. Istnieją przypadki ogólne i specjalne, a niektóre specjalne wymagają różnicy czasu milisekundowego w czasie rzeczywistym. Oto typowe rozwiązania dla tych wyjątkowych sytuacji.
3. Rozwiązania opóźnień danych:
1. Schemat 1: Zapisz program podwójnie (zapisz główną bazę danych i odczytaj bazę danych jednocześnie)
2. Schemat 2: Przeczytaj program, aby sprawdzić główną bazę danych
3. Schemat 3: Zapisz główną bazę danych i zapisz pamięć podręczną (ustaw określony czas wygaśnięcia, zazwyczaj nieco dłuższy niż maksymalne opóźnienie synchronizacji bazy danych), odczytaj program, odczytaj pamięć podręczną i odczytaj bazę danych podrzędnych
4. Zalety i wady trzech schematów:
1. Schemat 1: Podwójne zapisywanie zużywa pewną wydajność, co jest stosunkowo proste do wdrożenia i nie nadaje się do scenariuszy o dużym równoległym pisaniu współbieżnym;
2. Schemat 2: Program odczytu wpływa na wydajność głównej biblioteki, która jest stosunkowo prosta do wdrożenia i nie nadaje się do scenariuszy o dużym równoległym odczytie.
3. Schemat 3: W większości przypadków odczyt i zapis zużywają więcej wydajności zapisu, co jest bardziej złożone do implementacji i nadaje się zarówno do wysokich współbieżnych odczytów, jak i zapisów (odczyty i zapisy w pamięci podręcznej są bardzo szybkie);
【Podsumowanie】
1. Wdrożenie jest ważne, ale ważniejsza jest idea;
2. Wiele podstawowych zasad i idei jest uniwersalnych Oryginał:https://blog.csdn.net/zhanghan18 ... le/details/91638443
|