【Popis problému】 Keď používatelia používajú aplikáciu, stránka je veľmi zaseknutá a klikajú náhodne, pretože rozhranie nevykonáva opakované odosielania, bude tam niekoľko identických požiadaviek, v servisnej vrstve jedno vlákno nevkladá kompletné a druhé sa kontroluje ako prázdne. Tak som si tiež jednu vložil. Pôvodne mal každý jednu, ale predajca mal tri, čo viedlo k chybám v obchodnej logike. Pri spracovaní škodlivých príspevkov sa to dá vykonať vo front-end časti, a v back-end časti môžu byť aj zrelé riešenia.
【Solution】1. Použiť obmedzenia jedinečnosti na riešenie problému idempotencie transakcií, nastaviť obmedzenia jedinečnosti a ak nastane scenár opakovaných commitov, výnimky z obmedzení jedinečnosti budú vyhodené na úrovni databázy a obchodná logika nebude zničená. Obmedzenia jedinečnosti na zloženie viacerých polí sú tiež prijateľné.
Prihlásenie na hypertextový odkaz je viditeľné.
Vyššie uvedené slúži na vytvorenie nastavení proti duplicitám na úrovni databázy.
2. Realizujte nastavenia proti duplikácii na úrovni kódu. Často sa hovorí, že obmedzenie jedinečnosti databázy ovplyvní efektivitu vkladania dát, pretože každé vloženie vyžaduje posúdenie na úrovni databázy. Preto, podľa úrovne kódu, bežnou praxou na úrovni kódu je najprv vybrať a potom vložiť, ale ak je scenár vysokej súbežnosti, stále sa opakujú commity. Môžete pridať synchronizáciu do logického kódu, takže v scenároch s vysokou súbežnosťou najprv vyberiete a až potom sa vloži vloženie. Efektivita však nie je vysoká a paralela sa stáva sériovou. Môže sa použiť mechanizmus zámku DCL. (Zistili ste, že spôsob vytvorenia jedného objektu v režime kopírovania prípadu je veľmi podobný, najprv posúdiť, či objekt existuje, ak neexistuje, vytvorte ho, inak ho nevytvárajte), prirodzený mechanizmus DCL zámku je efektívnejší.
#分布式锁 Na riešenie problému sa dajú použiť aj distribuované zámky, ktoré bežne používajú Redis a Zookeeper. Táto sekcia vysvetľuje, ako implementovať distribuované zámky pomocou Redis. V Redise existuje príkazová operácia setNx, ak neexistuje, je to nastavená hodnota a vráti sa 1. Ak existuje, nenastavuje sa a vracia 0. Využitím funkcie jednovláknového vedenia v Reduis sa scéna s vysokou súbežnosťou mení na sériové cez frontu správ. Avšak distribuované zámky majú svoje úskalia, takže je potrebné dávať pozor.
Prihlásenie na hypertextový odkaz je viditeľné. 3. Mechanizmus MVCC?
3.1 Čo je mechanizmus MVCC? MVCC je viacverziový mechanizmus riadenia súbežnosti.
3.2 Aké problémy sa dajú vyriešiť? Zamykací mechanizmus dokáže riadiť súbežné operácie, ale jeho režijné náklady sú veľké a MVCC môže vo väčšine prípadov nahradiť zámky na úrovni riadkov, čo môže znížiť režijné náklady systému a zlepšiť výkon.
Prihlásenie na hypertextový odkaz je viditeľné.
4. Existuje tiež problém idempotencie v správach
Napríklad, ako zabrániť opakovanému konzumovaniu správ?
V middleware správ v MQ musia byť tieto veci pochopené a pochopené.
|