KLP principi
CAP princips, kas pazīstams arī kā CAP teorēma, attiecas uz konsekvenci, pieejamību un sadalījuma pielaidi sadalītā sistēmā. KLP princips nosaka, ka šie trīs elementi vienlaikus var sasniegt tikai divus punktus.Nav iespējams lietot visus trīs vienlaicīgi。
KLP principa būtība ir vai nu AP, KP vai AC, bet KLP nav. Ja sadalītajā sistēmā nav datu kopijas, tad sistēmai jāatbilst stingras konsekvences nosacījumam, jo ir tikai unikāli dati, nebūs datu neatbilstības, šobrīd ir divi elementi C un P, bet, ja sistēmai ir tīkla nodalījuma nosacījums vai dīkstāve, tas neizbēgami novedīs pie tā, ka daži dati nav pieejami, un pieejamības nosacījumu nevar izpildīt, tas ir, šajā gadījumā tiek iegūta CP sistēma, betKLP nevar apmierināt vienlaicīgi。
Pārskats:
DotNetCore.CAP
CAP ir notikumu kopne un ieviešana izkliedētā sistēmā (SOA, MicroService).Galīgā konsekvence(Distributed Transactions) ir atvērtā koda C# bibliotēka, kas ir viegla, augstas veiktspējas un viegli lietojama.
GitHub adrese:Hipersaites pieteikšanās ir redzama.
Dotnet CAP ir visas Event Bus funkcijas, un CAP nodrošina racionalizētāku veidu, kā rīkoties ar publicēšanu / abonēšanu EventBus.
MediatR ir procesa ziņojumu abonēšanas un publicēšanas sistēma, kas nodrošina sūtīšanas metodi publicēšanai vienam apdarinātājam un publicēšanas metodi publicēšanai vairākiem apdarinātājiem, kas ir ļoti ērti lietojama. Pašlaik .NET Framework4.5, . NET Stardand1.3、. NET Stardand 2.0 un citas versijas, kuras var izmantot dažādās platformās.
ASP.NET Core izmanto MediatR starpnieka modeli
https://www.itsvse.com/thread-9272-1-1.html Arhitektūras priekšskatījums
CAP atbalsta ziņojumu rindas, piemēram, Kafka, RabbitMQ, AzureServiceBus, AmazonSQS utt., un CAP nodrošina paplašinājumus Sql Server, MySql, PostgreSQL un MongoDB kā datu bāzes krātuvi.
Šajā rakstā RabbitMQ un SQL Server tiek izmantoti kā ziņojumu rindas un krātuve.
Instalējiet RabbitMQ
Konkrētas instalēšanas pamācības, lūdzu, skatiet:
Konta pievienošana arī tiek izlaista, lūdzu, skatiet:
Es pats pievienoju testa kontu un ierobežoju virtuālos saimniekus, kā parādīts zemāk:
Pretējā gadījumā kļūda būs šāda:
ACCESS_REFUSED - Pieteikšanās tika atteikta, izmantojot autentifikācijas mehānismu PLAIN. Sīkāku informāciju skatiet brokera žurnālfailā.
Neviens no norādītajiem galapunktiem nebija sasniedzams
.NET Core integrē CAP
Vispirms izveidojiet jaunu ASP.NET Core projektu, kas ir gan sūtītājs, gan saņēmējs. Izmantojiet komandu nuget, lai instalētu pakotni šādi:
Startēšanas laikā konfigurējiet pakalpojuma metodi ConfigureServices šādi:
Jūs varat apmeklēt vietni / cap adresi, lai apskatītu informācijas paneli, kā parādīts zemāk:
Datu noturība: Cap willAutomātiska izveide"Publicēts" un "Saņemts" ir divas lokālās datu bāzes tabulas
IZVEIDOT TABULU [vāciņš]. [Publicēts] ( [Id] [bigint] NAV NULLE, [Versija] [nvarchar] (20) NAV NULLE, [Vārds] [nvarchar] (200) NAV NULLE, [Saturs] [nvarchar] (maks.) NULLE, [Atkārto] [int] NAV NULLE, [Pievienots] [datums2] (7) NAV NULLE, [Beidzas] [datums2] (7) NULLE, [Statusa nosaukums] [nvarchar] (50) NAV NULLE, IEROBEŽOJUMS [PK_cap. Publicēts] PRIMĀRĀS ATSLĒGAS KLASTERIS
( [Id] ASC )AR (PAD_INDEX = IZSLĒGTS, STATISTICS_NORECOMPUTE = IZSLĒGTS, IGNORE_DUP_KEY = IZSLĒGTS, ALLOW_ROW_LOCKS = IESLĒGTS, ALLOW_PAGE_LOCKS = IESLĒGTS) UZ [PRIMĀRAIS] ) PAR [PRIMĀRO] TEXTIMAGE_ON [PRIMĀRO] IET IZVEIDOT TABULU [vāciņš]. [Saņemts] ( [Id] [bigint] NAV NULLE, [Versija] [nvarchar] (20) NAV NULLE, [Vārds] [nvarchar] (200) NAV NULLE, [Grupa] [nvarchar] (200) NULLE, [Saturs] [nvarchar] (maks.) NULLE, [Atkārto] [int] NAV NULLE, [Pievienots] [datums2] (7) NAV NULLE, [Beidzas] [datums2] (7) NULLE, [Statusa nosaukums] [nvarchar] (50) NAV NULLE, IEROBEŽOJUMS [PK_cap. Saņemts] PRIMĀRĀ ATSLĒGA SAGRUPĒTA
( [Id] ASC )AR (PAD_INDEX = IZSLĒGTS, STATISTICS_NORECOMPUTE = IZSLĒGTS, IGNORE_DUP_KEY = IZSLĒGTS, ALLOW_ROW_LOCKS = IESLĒGTS, ALLOW_PAGE_LOCKS = IESLĒGTS) UZ [PRIMĀRAIS] ) PAR [PRIMĀRO] TEXTIMAGE_ON [PRIMĀRO] IET
HomeController kontroliera metode ir šāda:
Kad lietotājs veiksmīgi reģistrējas, tiks nosūtīti 3 ziņojumi ar dažādām tēmām, un pēc tam abonents tos patērēs.
Kad KLP sāksies, tā izveidos noklusējuma patērētāju grupu, ja vairāki patērētāji no vienas patērētāju grupas patērēs vienu un to pašu tēmu,Tiks izpildīts tikai viens patērētājs。 Gluži pretēji,Ja visi patērētāji ir dažādās patērētāju grupās, visi patērētāji tiek izpildīti。
Izveidojot jaunu .NET Core konsoles projektu, kā abonents (patērētājs) vai atsaucoties uz pakotni, informācijas paneli var ignorēt.
Ja tas atrodas Pārzinis, pievienojiet [CapSubscribe("")], lai abonētu attiecīgos ziņojumus.
Ja jūsu metode nav kontrollerī, tad klasei, kuru abonējat, ir jāpārmanto ICapSubscribe un pēc tam jāpievieno tags [CapSubscribe("")]. Kods ir šāds:
Atveriet abonementa klientu un mēģiniet piekļūt http://localhost:28116/Home/UserRegister, lai nosūtītu ziņojumus, efekts ir šāds:
Tiek iedarbināta gan konsole, gan kontroliera uztvērējs, kā parādīts zemāk redzamajā attēlā:
Mēģiniet manuāli izmest izņēmumu ziņojuma saņemšanas metodē, kods ir šāds:
CAP automātiski mēģinās atkārtot metodi,Atkārtoto mēģinājumu skaits pēc neveiksmes pēc noklusējuma ir 50, un atkārtoto mēģinājumu intervāls pēc neveiksmes pēc noklusējuma ir 60 sekundes, kā parādīts attēlā:
Sistēma nevar būt 100% pārliecināta, ka ziņojums tiek izpildīts tikai vienu reiziTāpēc dažos galvenajos scenārijos ziņojuma puse pievērš uzmanību biznesa deduplikācijai metodes ieviešanas procesā.
Visbeidzot, pievienojiet avota kodu:
Tūristi, ja vēlaties redzēt šīs ziņas slēpto saturu, lūdzu Atbildi
|