Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 57382|Vastaus: 3

[ASP.NET] ASP.NET Core (viisi) perustuu CAP:n hajautettuihin transaktioihin

[Kopioi linkki]
Julkaistu 2021-3-17 klo 18:12:50 | | | |
CAP-periaatteet

CAP-periaate, joka tunnetaan myös nimellä CAP-lause, viittaa johdonmukaisuuteen, saatavuuteen ja ositussietokykyyn hajautetussa järjestelmässä. CAP-periaate sanoo, että nämä kolme elementtiä voivat saavuttaa vain kaksi pistettä samanaikaisesti.On mahdotonta ottaa kaikkia kolmea yhtä aikaa

2PC &&&3PC hajautetuissa transaktioissa
https://www.itsvse.com/thread-9591-1-1.html

CAP-periaatteen ydin on joko AP, CP tai AC, mutta CAP:ta ei ole. Jos hajautetussa järjestelmässä ei ole kopioita datasta, järjestelmän on täytettävä vahvan johdonmukaisuuden ehto, koska dataa on vain yksikäsitteinen, eikä datan epäjohdonmukaisuutta ole. Tällöin ovat kaksi alkiota C ja P, mutta jos järjestelmässä on verkkoosion ehto tai käyttökatko, se johtaa väistämättä siihen, että osa datasta ei ole saavutettavissa, eikä saatavuusehtoa voida täyttää, eli CP-järjestelmä saadaan tässä tapauksessa, muttaCAP:ta ei voida täyttää samanaikaisesti

Arvostelu:

ASP.NET Core(4) -suodatin yhdisti ModelState-mallin validoinnin
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Luo instansseja dynaamisesti ActivatorUtilitiesin avulla
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Ydin (2) Käynnistä sovellus uudelleen koodin mukaan
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) käyttää Redis-välimuistia
https://www.itsvse.com/thread-9393-1-1.html


DotNetCore.CAP

CAP on tapahtumaväylä ja toteutus hajautetussa järjestelmässä (SOA, MicroService).Lopullinen johdonmukaisuus(Distributed Transactions) on avoimen lähdekoodin C#-kirjasto, joka on kevyt, suorituskykyinen ja helppokäyttöinen.

GitHub-osoite:Hyperlinkin kirjautuminen on näkyvissä.

Dotnet CAP sisältää kaikki Event Busin ominaisuudet, ja CAP tarjoaa virtaviivaisemman tavan hoitaa julkaiseminen ja tilaaminen EventBusissa.

MediatR on prosessissa toimiva viestien tilaus- ja julkaisukehys, joka tarjoaa Send-menetelmän julkaisemiseen yhdelle käsittelijälle ja Publish -menetelmän useille käsittelijöille, mikä on erittäin kätevää käyttää. Tällä hetkellä .NET Framework4.5, . NET Stardand1.3、. NET Stardand 2.0 ja muita versioita, joita voi käyttää eri alustoilla.

ASP.NET Core käyttää MediatR-välimallia
https://www.itsvse.com/thread-9272-1-1.html

Arkkitehtuurin esikatselu



CAP tukee viestijonoja kuten Kafka, RabbitMQ, AzureServiceBus, AmazonSQS jne., ja CAP tarjoaa laajennuksia Sql Serverille, MySQL:lle, PostgreSQL:lle ja MongoDB:lle tietokantatallennuksena.

Tässä artikkelissa käytetään RabbitMQ:ta ja SQL Serveriä viestijonoina ja tallennustilana.

Asenna RabbitMQ

Tarkat asennusohjeet löytyvät osoitteesta:

【Practical Combat】RabbitMQ:n asennusopas Windowsissa
https://www.itsvse.com/thread-4630-1-1.html

【Practice】RabbitMQ asentaa web-hallintapluginin
https://www.itsvse.com/thread-4631-1-1.html
Tilin lisääminen on myös jätetty pois, katso seuraavaa:

【Harjoittele】rabbitMQ-konsolilla tilitietojen lisäämiseksi
https://www.itsvse.com/thread-4655-1-1.html
Lisäsin testitilin ja rajoitin virtuaalihostit itse, kuten alla näkyy:



Muuten virhe on seuraava:

ACCESS_REFUSED - Kirjautuminen evättiin tunnistautumismekanismilla PLAIN. Lisätietoja löytyy välittäjälokitiedostosta.

Yksikään määritellyistä päätepisteistä ei ollut saavutettavissa

.NET Core integroi CAP:n

Luo ensin uusi ASP.NET Core -projekti, joka toimii sekä lähettäjänä että vastaanottajana. Käytä nuget-komentoa asentaaksesi paketin näin:

Käynnistyksessä konfiguroi palvelumenetelmä ConfigureServices seuraavasti:

Voit vierailla verkkosivulla /cap-osoite nähdäksesi kojelaudan alla esitetyn näkökulmasta:



Datan pysyvyys: CapAutomaattinen luominen"Julkaistu" ja "Vastaanotettu" ovat kaksi paikallista tietokantataulukkoa

LUO TAULUKKO [cap]. [Julkaistu] (
        [Id] [bigint] EI MITÄÄN,
        [Versio] [nvarchar] (20) EI NOLLA,
        [Nimi] [nvarchar] (200) EI NOLLA,
        [Sisältö] [nvarchar] (max) NOLLA,
        [Toistaa] [int] EI MITÄÄN,
        [Lisätty] [datetime2] (7) EI NOLLA,
        [Kuolee At] [datetime2] (7) NULL,
        [StatusNimi] [nvarchar] (50) EI NOLLA,
RAJOITUS [PK_cap. Julkaistu] ENSISIJAINEN AVAIN KLUSTEROITU
(
        [Id] ASC
)KUN (PAD_INDEX = POIS PÄÄLTÄ, STATISTICS_NORECOMPUTE = POIS PÄÄLTÄ, IGNORE_DUP_KEY = POIS PÄÄLTÄ, ALLOW_ROW_LOCKS = PÄÄLLÄ, ALLOW_PAGE_LOCKS = PÄÄLLÄ) [PRIMÄÄRISSÄ]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
MENE
LUO TAULUKKO [cap]. [Vastaanotettu] (
        [Id] [bigint] EI MITÄÄN,
        [Versio] [nvarchar] (20) EI NOLLA,
        [Nimi] [nvarchar] (200) EI NOLLA,
        [Ryhmä] [nvarchar] (200) NULL,
        [Sisältö] [nvarchar] (max) NOLLA,
        [Toistaa] [int] EI MITÄÄN,
        [Lisätty] [datetime2] (7) EI NOLLA,
        [Kuolee At] [datetime2] (7) NULL,
        [StatusNimi] [nvarchar] (50) EI NOLLA,
RAJOITUS [PK_cap. Vastaanotettu] ENSISIJAINEN AVAIN KLUSTEROITU
(
        [Id] ASC
)KUN (PAD_INDEX = POIS PÄÄLTÄ, STATISTICS_NORECOMPUTE = POIS PÄÄLTÄ, IGNORE_DUP_KEY = POIS PÄÄLTÄ, ALLOW_ROW_LOCKS = PÄÄLLÄ, ALLOW_PAGE_LOCKS = PÄÄLLÄ) [PRIMÄÄRISSÄ]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
MENE


HomeController-ohjainmenetelmä on seuraava:

Kun käyttäjä rekisteröityy onnistuneesti, lähetetään 3 eri aiheesta kertovaa viestiä, ja tilaaja käyttää ne.

Kun CAP käynnistyy, se luo oletuskuluttajaryhmän, jos useampi saman kuluttajaryhmän kuluttaja käyttää samaa aiheviestiä,Vain yksi kuluttaja teloitetaan。 Päinvastoin,Jos kuluttajat ovat eri kuluttajaryhmissä, kaikki kuluttajat teloitetaan

Uuden .NET Core -konsoliprojektin luominen tilaajana (kuluttajana) tai pakettiin viittaaminen, hallintapaneeli voidaan jättää huomiotta.

Jos se on Controllerissa, lisää suoraan [CapSubscribe("")] tilataksesi asiaankuuluvat viestit.

Jos metodisi ei ole Controllerissa, tilaamasi luokan täytyy periä ICapSubscribe ja lisätä [CapSubscribe("")] -tunniste.

Koodi on seuraava:

Avaa tilausasiakasohjelma ja yritä päästä käsiksi http://localhost:28116/Home/UserRegister lähettääksesi viestejä, vaikutus on seuraava:



Sekä konsoli että ohjaimen vastaanotin aktivoituvat, kuten alla olevassa kuvassa näkyy:



Yritä heittää poikkeus manuaalisesti vastaanottoviestimenetelmään, koodi on seuraava:

CAP kokeilee menetelmää automaattisesti uudelleen,Epäonnistumisen jälkeisten uudelleenyritysten määrä on oletuksena 50, ja epäonnistumisen jälkeinen uusintaväli on oletuksena 60 sekuntia, kuten alla olevassa kuvassa näkyy:



Kehys ei voi olla täysin varma, että viesti suoritetaan vain kerranSiksi joissakin keskeisissä tilanteissa viestipuoli kiinnittää huomiota liiketoiminnan duplikointiin menetelmän toteutuksessa.

Rajapinnan idempotenssiongelmat
https://www.itsvse.com/thread-6010-1-1.html

Lopuksi liitä lähdekoodi:

Turistit, jos haluatte nähdä tämän postauksen piilotetun sisällön, olkaa hyväVastaus






Edellinen:Markdown-syntaksin CSV-verkkomuunnos
Seuraava:HttpClient POST suoraan lähettääkseen tavutavun (gzip) pakkauspyynnöt
Julkaistu 2021-3-18 klo 18:11:20 |
Tule katsomaan, kiitos kun jaoit
Julkaistu 2021-9-22 20:42:18 |
Opettele oppimaan...
Julkaistu 2021-12-31 klo 15:08:21 |
Oppiminen
Erittäin hyvä, todella hyvä
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com