【Popis problému】 Když uživatelé používají APP, stránka je velmi zaseklá a klikají náhodně, protože rozhraní neprovádí opakované odesílání, bude tam několik identických požadavků, v servisní vrstvě jedno vlákno není vloženo jako kompletní a druhé vlákno je prázdné. Tak jsem si také jednu vložil. Původně měl každý jednu, ale obchodník měl tři, což vedlo k chybám v obchodní logice. Pro zpracování škodlivých příspěvků lze to provést ve front-end části, a v back-endu mohou být také vyspělá řešení.
【Solution】1. Použít omezení jedinečnosti k řešení problému idempotence transakcí, nastavit omezení jedinečnosti a pokud dojde ke scénáři opakovaných commitů, výjimky z omezení jedinečnosti budou vyhozeny na úroveň databáze a obchodní logika nebude zničena. Jednoznačnostní omezení složení více polí jsou také přijatelná.
Přihlášení k hypertextovému odkazu je viditelné.
Výše uvedené je určeno k nastavení proti duplicitám na úrovni databáze.
2. Implementovat nastavení proti duplicitě na úrovni kódu. Často se říká, že jedinečnost databáze ovlivní efektivitu vkládání dat, protože každé vložení vyžaduje úsudek na úrovni databáze. Proto podle úrovně kódu je běžnou praxí na úrovni kódu vybrat nejprve a pak vložit, ale pokud dojde k vysoké souběžnosti, stále se opakují commity. Můžete přidat synchronizaci do logického kódu, takže v scénářích s vysokou souběžností nejprve vyberte a pak se vloží do textu. Ale účinnost není vysoká a paralelní tah se stává sériovým. Lze použít mechanismus zámku DCL. (Zjistili jste, že metoda vytváření jednoho objektu v režimu kopírování případu je velmi podobná, nejprve posoudit, zda objekt existuje, pokud neexistuje, vytvořit ho, jinak ho nevytvořit), přirozený mechanismus DCL zámku je efektivnější.
#分布式锁 K řešení problému lze také použít distribuované zámky, běžně používané Redis a Zookeeper. Tato sekce vysvětluje, jak implementovat distribuované zámky pomocí Redis. V Reduis existuje příkazová operace setNx, pokud neexistuje, je to nastavená hodnota a vrátí se 1. Pokud existuje, nenastavuje se a vrací 0. Využitím funkce jednovláknového zpracování v Reduis je scéna s vysokou souběžností převedena na sériovou verzi prostřednictvím fronty zpráv. Nicméně existují úskalí u distribuovaných zámků, takže je potřeba dávat pozor.
Přihlášení k hypertextovému odkazu je viditelné. 3. Mechanismus MVCC?
3.1 Co je to mechanismus MVCC? MVCC je víceverzní mechanismus řízení souběžnosti.
3.2 Jaké problémy lze vyřešit? Zamykací mechanismus může řídit současné operace, ale jeho režijní režie je velká, a MVCC může ve většině případů nahradit zámky na úrovni řad, což může snížit režijní zátěž systému a zlepšit výkon.
Přihlášení k hypertextovému odkazu je viditelné.
4. Existuje také problém idempotence ve zprávách
Například, jak zabránit opakovanému spotřebovávání zpráv?
V message middleware v MQ je třeba tyto věci pochopit a pochopit.
|