Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 57382|Atsakyti: 3

[ASP.NET] "ASP.NET Core" (penki) yra pagrįstas BŽŪP paskirstytais sandoriais

[Kopijuoti nuorodą]
Publikuota 2021-3-17 18:12:50 | | | |
BŽŪP principai

CAP principas, taip pat žinomas kaip CAP teorema, reiškia paskirstytos sistemos nuoseklumą, prieinamumą ir pasiskirstymo toleranciją. BŽŪP principas teigia, kad šiais trimis elementais vienu metu galima pasiekti tik du taškus.Neįmanoma paimti visų trijų vienu metu

2PC &&&3PC paskirstytų operacijų
https://www.itsvse.com/thread-9591-1-1.html

BŽŪP principo esmė yra arba AP, CP arba AC, tačiau BŽŪP nėra. Jei paskirstytoje sistemoje nėra duomenų kopijos, sistema turi atitikti stipraus nuoseklumo sąlygą, nes yra tik unikalūs duomenys, nebus duomenų neatitikimo, šiuo metu yra du elementai C ir P, tačiau jei sistemoje yra tinklo skaidinio sąlyga arba prastova, tai neišvengiamai lems, kad kai kurie duomenys bus nepasiekiami, o prieinamumo sąlyga negali būti įvykdyta, tai yra, šiuo atveju gaunama CP sistema, betBŽŪP negali būti tenkinama tuo pačiu metu

Peržiūra:

ASP.NET Core(4) filtro vieningas ModelState modelio tikrinimas
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Dinamiškai kurkite egzempliorius naudodami "ActivatorUtilities"
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Iš naujo paleiskite programą pagal kodą
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) naudoja Redis talpyklą
https://www.itsvse.com/thread-9393-1-1.html


DotNetCore.CAP

CAP yra renginių magistralė ir diegimas paskirstytoje sistemoje (SOA, MicroService).Galutinė konsistencija(Distributed Transactions) yra atvirojo kodo C# biblioteka, kuri yra lengva, naši ir paprasta naudoti.

"GitHub" adresas:Hipersaito prisijungimas matomas.

"Dotnet CAP" turi visas "Event Bus" funkcijas, o CAP suteikia supaprastintą būdą tvarkyti publikavimą / prenumeratą "EventBus".

"MediatR" yra apdorojama pranešimų prenumeratos ir publikavimo sistema, teikianti siuntimo metodą, skirtą publikuoti vienai apdorojimo programai, ir publikavimo metodą, skirtą publikuoti kelioms apdorojimo programoms, kurį labai patogu naudoti. Šiuo metu .NET Framework4.5, . NET Stardand1.3、. NET Stardand 2.0 ir kitos versijos, kurios gali būti naudojamos įvairiose platformose.

"ASP.NET Core" naudoja "MediatR" tarpinį modelį
https://www.itsvse.com/thread-9272-1-1.html

Architektūros peržiūra



CAP palaiko pranešimų eiles, tokias kaip Kafka, RabbitMQ, AzureServiceBus, AmazonSQS ir kt., o CAP teikia Sql Server, MySql, PostgreSQL ir MongoDB plėtinius kaip duomenų bazės saugyklą.

Šiame straipsnyje "RabbitMQ" ir "SQL Server" naudojami kaip pranešimų eilės ir saugykla.

Įdiekite RabbitMQ

Konkrečių diegimo pamokų žr.:

【Praktinė kova】 RabbitMQ diegimo pamoka sistemoje "Windows"
https://www.itsvse.com/thread-4630-1-1.html

【Praktika】 RabbitMQ įdiegia žiniatinklio valdymo papildinį
https://www.itsvse.com/thread-4631-1-1.html
Paskyros pridėjimas taip pat praleidžiamas, žr.:

【Praktika】 rabbitMQ konsolė paskyros informacijai pridėti
https://www.itsvse.com/thread-4655-1-1.html
Aš pats pridėjau bandomąją paskyrą ir apribojau virtualius pagrindinius kompiuterius, kaip parodyta žemiau:



Priešingu atveju klaida bus tokia:

ACCESS_REFUSED - Prisijungimas buvo atmestas naudojant autentifikavimo mechanizmą PLAIN. Daugiau informacijos rasite brokerio žurnalo faile.

Nė vienas iš nurodytų galinių punktų nebuvo pasiekiamas

.NET Core integruoja CAP

Pirmiausia sukurkite naują "ASP.NET Core" projektą, kuris yra ir siuntėjas, ir gavėjas. Norėdami įdiegti paketą, naudokite komandą nuget taip:

Paleisdami sukonfigūruokite paslaugos metodą ConfigureServices taip:

Galite apsilankyti svetainėje / cap adresu, kad peržiūrėtumėte prietaisų skydelį, kaip parodyta toliau:



Duomenų patvarumas: viršutinė riba busAutomatinis kūrimas"Publikuota" ir "Gauta" yra dvi vietinės duomenų bazės lentelės

SUKURTI LENTELĘ [cap]. [Publikuota] (
        [Id] [bigint] NE NULINIS,
        [Versija] [nvarchar] (20) NĖRA NIEKINIS,
        [Vardas] [nvarchar] (200) NĖRA NIEKINIS,
        [Turinys] [nvarchar] (maks.) NULL,
        [Pakartojimai] [int] NE NULINIS,
        [Papildyta] [datetime2] (7) NE NIEKINIS,
        [Pasibaigia] [datetime2] (7) NIEKINIS,
        [StatusName] [nvarchar] (50) NĖRA NIEKINIS,
APRIBOJIMAS [PK_cap. Publikuota] PIRMINIS RAKTAS SUGRUPUOTAS
(
        [ID] ASC
)SU (PAD_INDEX = IŠJUNGTA, STATISTICS_NORECOMPUTE = IŠJUNGTA, IGNORE_DUP_KEY = IŠJUNGTA, ALLOW_ROW_LOCKS = ĮJUNGTA, ALLOW_PAGE_LOCKS = ĮJUNGTA) ĮJUNGTA [PIRMINĖ]
) DĖL [PIRMINĖS] TEXTIMAGE_ON [PIRMINĖS]
EITI
SUKURTI LENTELĘ [cap]. [Gauta] (
        [Id] [bigint] NE NULINIS,
        [Versija] [nvarchar] (20) NĖRA NIEKINIS,
        [Vardas] [nvarchar] (200) NĖRA NIEKINIS,
        [Grupė] [nvarchar] (200) NULL,
        [Turinys] [nvarchar] (maks.) NULL,
        [Pakartojimai] [int] NE NULINIS,
        [Papildyta] [datetime2] (7) NE NIEKINIS,
        [Pasibaigia] [datetime2] (7) NIEKINIS,
        [StatusName] [nvarchar] (50) NĖRA NIEKINIS,
APRIBOJIMAS [PK_cap. Gauta] PIRMINIS RAKTAS SUGRUPUOTAS
(
        [ID] ASC
)SU (PAD_INDEX = IŠJUNGTA, STATISTICS_NORECOMPUTE = IŠJUNGTA, IGNORE_DUP_KEY = IŠJUNGTA, ALLOW_ROW_LOCKS = ĮJUNGTA, ALLOW_PAGE_LOCKS = ĮJUNGTA) ĮJUNGTA [PIRMINĖ]
) DĖL [PIRMINĖS] TEXTIMAGE_ON [PIRMINĖS]
EITI


"HomeController" valdiklio metodas yra toks:

Kai vartotojas sėkmingai užsiregistruos, bus išsiųsti 3 pranešimai skirtingomis temomis, o tada abonentas juos suvartos.

Pradėjus taikyti BŽŪP, bus sukurta numatytoji vartotojų grupė, jei keli tos pačios vartotojų grupės vartotojai vartoja tą pačią teminę žinutę,Bus įvykdytas tik vienas vartotojas。 Priešingai,Jei visi vartotojai priklauso skirtingoms vartotojų grupėms, visi vartotojai yra

Kuriant naują .NET Core konsolės projektą, kaip abonentui (vartotojui) arba nurodant paketą, prietaisų skydelio galima nepaisyti.

Jei jis yra duomenų valdytoje, pridėkite [CapSubscribe("")] tiesiogiai, kad užsiprenumeruotumėte atitinkamus pranešimus.

Jei jūsų metodo nėra valdiklyje, klasė, kurią prenumeruojate, turi paveldėti ICapSubscribe ir pridėti žymą [CapSubscribe("")].

Kodas yra toks:

Atidarykite prenumeratos klientą ir pabandykite pasiekti http://localhost:28116/Home/UserRegister siųsti pranešimus, poveikis yra toks:



Suveikia ir konsolė, ir valdiklio imtuvas, kaip parodyta paveikslėlyje žemiau:



Pabandykite rankiniu būdu mesti išimtį pranešimo gavimo būdu, kodas yra toks:

BŽŪP automatiškai pakartos metodą,Pagal numatytuosius nustatymus pakartotinių bandymų skaičius po nesėkmės yra 50, o pakartotinių bandymų intervalas po nesėkmės yra 60 sekundžių, kaip parodyta toliau pateiktame paveikslėlyje:



Sistema negali būti 100% tikra, kad pranešimas vykdomas tik vieną kartąTodėl kai kuriuose pagrindiniuose scenarijuose pranešimo pusėje atkreipiamas dėmesys į verslo dublikatų šalinimą metodo diegimo procese.

Sąsajos idempotencijos problemos
https://www.itsvse.com/thread-6010-1-1.html

Galiausiai pridėkite šaltinio kodą:

Turistai, jei norite pamatyti paslėptą šio įrašo turinį, prašomeAtsakyti






Ankstesnis:CSV internetinis Markdown sintaksės konvertavimas
Kitą:HttpClient POST tiesiogiai siųsti baitų baitų (gzip) glaudinimo užklausas
Publikuota: 2021-3-18 18:11:20 |
Ateikite ir pažiūrėkite, ačiū už pasidalinimą
Publikuota: 2021-9-22 20:42:18 |
Išmokite mokytis...
Publikuota: 2021-12-31 15:08:21 |
Mokymasis
Labai geras, labai gražus
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com