Načela CAP
Načelo CAP, znano tudi kot CAP izrek, se nanaša na konsistentnost, razpoložljivost in toleranco na razdelitev v distribuiranem sistemu. Načelo CAP pravi, da lahko ti trije elementi dosežejo le dve točki hkrati.Nemogoče je vzeti vse tri hkrati。
Bistvo načela CAP je bodisi AP, CP ali AC, vendar CAP ni. Če v distribuiranem sistemu ni kopije podatkov, mora sistem izpolnjevati pogoj močne konsistentnosti, saj je na voljo le edinstven podatek, ne bo podatkovne neskladnosti; v tem trenutku sta prisotna dva elementa C in P, vendar če ima sistem pogoj omrežne particije ali izpad, bo to neizogibno povzročilo, da so nekateri podatki nedostopni in pogoj razpoložljivosti ni mogoče izpolniti, torej je v tem primeru dosežen CP sistem, vendarCAP ni mogoče zadovoljiti hkrati。
Pregled:
DotNetCore.CAP
CAP je dogodkovno vodilo in implementacija v distribuiranem sistemu (SOA, MicroService).Končna doslednost(Distributed Transactions) je odprtokodna C# knjižnica, ki je lahka, visoko zmogljiva in enostavna za uporabo.
GitHub naslov:Prijava do hiperpovezave je vidna.
Dotnet CAP ima vse funkcije Event Bus, CAP pa omogoča bolj poenostavljen način za objavljanje/naročanje v EventBus.
MediatR je okvir za naročanje in objavljanje sporočil v procesu, ki omogoča metodo Send za objavljanje enemu handlerju in Publish metodo za objavo na več handlerjih, kar je zelo priročno za uporabo. Trenutno .NET Framework4.5, . NET Stardand1.3、. NET Stardand 2.0 in druge različice, ki jih je mogoče uporabljati na različnih platformah.
ASP.NET Core uporablja vmesni model MediatR
https://www.itsvse.com/thread-9272-1-1.html Predogled arhitekture
CAP podpira vrste sporočil, kot so Kafka, RabbitMQ, AzureServiceBus, AmazonSQS itd., CAP pa ponuja razširitve za Sql Server, MySql, PostgreSQL in MongoDB kot shranjevanje podatkov.
Ta članek uporablja RabbitMQ in SQL Server kot vrste sporočil in shranjevanje.
Namestite RabbitMQ
Za posebne vodiče za namestitev si oglejte:
Dodajanje računa je prav tako izpuščeno, prosimo, glejte:
Sam sem dodal testni račun in omejil virtualne gostitelje, kot je prikazano spodaj:
V nasprotnem primeru bo napaka naslednja:
ACCESS_REFUSED - Prijava je bila zavrnjena z uporabo avtentikacijskega mehanizma PLAIN. Za podrobnosti glejte dnevnik posrednika.
Nobena od določenih končnih točk ni bila dosegljiva
.NET Core integrira CAP
Najprej ustvarite nov ASP.NET Core projekt, ki je hkrati pošiljatelj in prejemnik. Uporabite ukaz nuget za namestitev paketa takole:
Pri zagonu konfigurirajte metodo storitve ConfigureServices tako:
Za ogled nadzorne plošče, kot je prikazano spodaj, lahko obiščete spletno stran /cap naslov:
Obstojnost podatkov: Cap boSamodejno ustvarjanje"Objavljeno" in "Prejeto" sta dve lokalni tabeli baze podatkov
USTVARI TABELO [cap]. [Objavljeno] ( [ID] [bigint] NI NIČ, [Verzija] [nvarchar] (20) NI NIČ, [Ime] [nvarchar] (200) NI NIČ, [Vsebina] [nvarchar] (Max) NULL, [Poskusi] [int] NI NIČ, [Dodano] [datetime2] (7) NI NIČ, [ExpiresAt] [datetime2] (7) NULL, [StatusIme] [nvarchar] (50) NI NIČ, OMEJITEV [PK_cap. Objavljeno] PRIMARNI KLJUČ GRUČEN
( [Id] ASC )Z (PAD_INDEX = IZKLOPLJENO, STATISTICS_NORECOMPUTE = IZKLOPLJENO, IGNORE_DUP_KEY = IZKLOPLJENO, ALLOW_ROW_LOCKS = VKLOPLJENO, ALLOW_PAGE_LOCKS = VKLOPLJENO) NA [PRIMARNO] ) NA [PRIMARNI] TEXTIMAGE_ON [PRIMARNI] POJDI USTVARI TABELO [cap]. [Prejeto] ( [ID] [bigint] NI NIČ, [Verzija] [nvarchar] (20) NI NIČ, [Ime] [nvarchar] (200) NI NIČ, [Skupina] [nvarchar] (200) NULL, [Vsebina] [nvarchar] (Max) NULL, [Poskusi] [int] NI NIČ, [Dodano] [datetime2] (7) NI NIČ, [ExpiresAt] [datetime2] (7) NULL, [StatusIme] [nvarchar] (50) NI NIČ, OMEJITEV [PK_cap. [PREJETO] PRIMARNI KLJUČ ZDRUŽEN
( [Id] ASC )Z (PAD_INDEX = IZKLOPLJENO, STATISTICS_NORECOMPUTE = IZKLOPLJENO, IGNORE_DUP_KEY = IZKLOPLJENO, ALLOW_ROW_LOCKS = VKLOPLJENO, ALLOW_PAGE_LOCKS = VKLOPLJENO) NA [PRIMARNO] ) NA [PRIMARNI] TEXTIMAGE_ON [PRIMARNI] POJDI
Metoda s krmilnikom HomeController je naslednja:
Ko se uporabnik uspešno registrira, se pošljejo 3 sporočila z različnimi temami, nato pa jih naročnik posluša.
Ko se CAP začne, bo ustvaril privzeto skupino potrošnikov, če več potrošnikov iste skupine potrošnikov porabi isto sporočilo o temi,Usmrčen bo le en potrošnik。 Nasprotno,Če so potrošniki vsi v različnih skupinah potrošnikov, so vsi potrošniki usmrčeni。
Ustvarjanje novega .NET Core konzolnega projekta, kot naročnik (potrošnik) ali sklicevanje na paket, je mogoče nadzorno ploščo prezreti.
Če je v krmilniku, dodajte [CapSubscribe("")] neposredno za naročnino na ustrezna sporočila.
Če vaša metoda ni v krmilniku, mora razred, na katerega ste naročeni, podedovati ICapSubscribe in nato dodati oznako [CapSubscribe("")]. Koda je naslednja:
Odprite naročniški odjemalec in poskusite dostopati do http://localhost:28116/Home/UserRegister za pošiljanje sporočil, učinek je naslednji:
Tako konzola kot sprejemnik krmilnika se sprožita, kot je prikazano na spodnji sliki:
Poskusite ročno vnesti izjemo v metodo prejemanja sporočila, koda je naslednja:
CAP bo samodejno ponovno poskusil metodo,Število ponovnih poskusov po neuspehu je privzeto 50, interval ponovnih poskusov po neuspehu pa 60 sekund, kot je prikazano na spodnji sliki:
Okvir ne more biti 100 % prepričan, da je sporočilo izvedeno samo enkratZato v nekaterih ključnih scenarijih sporočilna stran posveča pozornost poslovnemu deduplikaciji v procesu implementacije metode.
Na koncu priložite izvorno kodo:
Turisti, če želite videti skrito vsebino te objave, prosim Odgovoriti
|