【Předmluva】
Když data dosáhnou určité hodnoty, databáze se stane úzkým hrdlem celého systému a optimalizační strategie se obvykle používá jako oddělení čtení a zápisu, přičemž databáze realizuje oddělení čtení a zápisu oddělením hlavní databáze od databáze (operace zápisu požadavků z hlavní databáze, operace požadavku na čtení z databáze);
【Nápady na řešení datových zpoždění】
1. Princip synchronizace master-slave (zde si vezmeme nejpopulárnější MySQL jako příklad)
Zde je schématický diagram klasické synchronizace MySQL master-slave dat pomocí binlogu:
2. Jak vznikají problémy?
1. Z výše uvedeného schématu není těžké zjistit, že synchronizace master-slave má určité zpoždění, které ovlivňuje velikost zpoždění:
(1) Velikost zpoždění závisí na množství dat generovaných od poslední synchronizace do současnosti
(2) Současná situace v síti mezi servery
(3) Tlak samotného master-slave serveru (CPU, paměť, IO atd.)
2. Protože databázová služba je obvykle v intranetu a server bude při zakoupení výše v konfiguraci (více, než je skutečně potřeba), synchronizace je v zásadě velmi rychlá, obvykle v milisekundách;
3. V obecných obchodních scénářích lze latenci v milisekundách ignorovat;
4. Existují obecné a speciální případy a některé speciální situace vyžadují časový rozdíl v reálném čase o milisekundách. Zde jsou běžná řešení těchto speciálních situací.
3. Řešení latence dat:
1. Schéma 1: Napsat program dvojnásobně (zapsat hlavní databázi a zároveň číst databázi)
2. Schéma 2: Přečtěte si program pro kontrolu hlavní databáze
3. Schéma 3: Zapište hlavní databázi a zapište cache (nastavte určitou dobu expirace, obvykle o něco delší než maximální zpoždění synchronizace databáze), přečtěte program, přečtěte cache a čtěte slave databázi
4. Výhody a nevýhody těchto tří schémat:
1. Schéma 1: Dvojité zápisy spotřebovávají určitou část výkonu, což je relativně jednoduché na implementaci a není vhodné pro scénáře s vysokým souběžným psaním;
2. Schéma 2: Program čtení ovlivní výkon hlavní knihovny, která je relativně jednoduchá na implementaci a není vhodná pro scénáře s vysokým souběžným čtením.
3. Schéma 3: Ve většině případů čtení a zápis spotřebovává více výkonu zápisu, což je složitější na implementaci a je vhodné jak pro vysoké souběžné čtení, tak zápisy (čtení a zápis do cache jsou velmi rychlá);
【Shrnutí】
1. Implementace je důležitá, ale důležitější je myšlenka;
2. Mnoho základních principů a myšlenek je univerzálních Původní:https://blog.csdn.net/zhanghan18 ... le/details/91638443
|