See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 25783|Vastuse: 0

[Allikas] Teeninduskangas – olekupõhise teenuse kontseptsioon

[Kopeeri link]
Postitatud 15.03.2018 10:03:44 | | | |

Eelmises osas rääkisime Service Fabric'i kahest madalaimast kontseptsioonist: üks on Node Type ja Node riistvara tasemel. Teine on rakendus.



Sõlmetüüp on sõlmede kogum, mis on kontseptuaalsed abstraktsioonid juurutavatest masinatest. Service Fabrici puhul võib sõlm olla füüsiline masin, virtuaalmasin või isegi praegu kõige populaarsem konteiner.



Sõlme tüübil töötav on rakendus. See on abstraktne arusaam süsteemitarkvara tasemel. Rakenduses on mitu mikroteenust. Isegi kõik Service Fabrici aluseks olevad teenused, nagu FailoverManager Service ja Naming Service, on mikroteenused.



Kõik Service Fabrici hajutatud funktsioonid vastavad Micro Service'i juurutustele. Me saame dünaamiliselt reguleerida, mitu instantsi Micro Service peab töötama mitmel sõlmel, et jaotada koormust või teha katastroofitaaste varukoopiaid. Iga instants kuulab erinevat porti ning koormuse tasakaalustamise kiht jagab päringuid erinevatele instantsidele.



Tegelik stsenaarium

Stateful Service on üks mikroteenustest.

Enne kui hakkame tutvustama Stateful Service'i, vaatame järgmisi levinumaid äristsenaariume.



Sa mõtled oma veebilehele ostukorvi funktsiooni lisamisele. Pärast sisselogimist panevad kasutajad mõned esemed ostukorvi.

Järgmine kord, kui kasutaja sisse logib, helistab vastuvõtuleht ostukorvi teenusele ning peab uuesti läbi lugema selle teenuse salvestatud ostukorvi andmed ja kuvama.

Kui jah, siis kuidas sa seda saavutaksid?

Kui kasutajate arv pole eriti suur, lisame andmebaasi ostukäru tabeli ja seostame selle kasutajatabeliga. Kasseti tabelis on kasutaja ID väli ja see salvestab suure hulga kasutaja ostukorvi andmeid.





Siis toob see kaasa mõned järgnevad probleemid.

Kui kasutajate arv jätkab suurenemist, halveneb andmebaasitabelite jõudlus edasi.
Andmebaasitabeli andmeid tuleb regulaarselt varundada andmete kadumise korral
Kui andmebaasi jõudluses tekib probleem, tuleb tabel ümber lükata või isegi partitsioneerida
Ostukäru süsteem ise peab toime tulema andmebaasi kohandustega ning isegi see võib vajada koormuse tasakaalustamist
Selle probleemi juur on see, et süsteem ise ei ole algselt skaleeritav. Lisaks on andmebaasid potentsiaalne kitsaskoht ja jõudluse ohu.



Riigiteenistus

Võtame näiteks täiesti uue arhitektuuri.

Algusest peale on ostukorvi süsteemil 36 alamteenust, mis haldavad kõiki päringuid (36, sest kasutaja ID initsiaalid on 0-9 a-z, kokku 36).

Kasutaja päring töödeldakse vastavalt kasutaja ID algsele räsi konkreetsele alamteenusele.

Alamteenus salvestab ostukorvi andmed oma sees kerge andmebaasi kaudu ja säilitab need oma salvestusseadmes.

Igal alamteenusel on ka 3 varundust, mis pidevalt sünkroniseerivad salvestatud andmeid ning need varukoopiad töötavad alati erinevatel sõlmedel.

Samal ajal vastutab ainult üks varukoopia taotluste töötlemise eest aktiveerimisolekuna ning kui varukoopia aktiveerimisel tekib probleem, aktiveerivad teised kaks varukoopiat ühe vastavalt ajastamise algoritmile.

Katastroofitaaste alamsüsteem loob uue varukoopia, et tagada, et alamteenusel on alati 3 tervet varukoopiat.



Stateful Service on üks selline lahendus.

Tagasi eeltoodud stsenaariumi juurde: ostukäru süsteem on riigipõhine teenus.

Need 36 alamsüsteemi on selle olekuteenuse 36 eksemplari, mida nimetame partitsioonideks.

Iga alamsüsteemi all on varukoopia ning partitsioonis on 3 replikat.

Praegu aktiivne varukoopia on aktiivne koopia ja kaks mitteaktiivset varukoopiat on sekundaarne koopia.

Iga sama Partiioni koopia peab töötama erinevas sõlmes.

Olekuteenuse kood kasutab <T>liideseid nagu IReliableCollection, IReliableDictionary< T1 ja T2 >andmete salvestamiseks ja sisemiseks sünkroniseerimiseks.



Lisaks saab Stateful Service rakendada järgmisi funktsioone:

Kõiki ülaltoodud numbreid saab lähtestada ja kasseti süsteemis saab olla sadu partitsioone, et koormust suurendada. Võid isegi kasutada 5 või enam koopiat partitsiooni kohta, et tagada suurem vastupidavus.
Välised süsteemid ei hooli, kui palju partitsioone Stateful Service'il on, neid kutsutakse partitsioonivõtme järgi. Partitsioonivõti ja vastav partitsioon lahendatakse teenuse Fabrici aluseks oleva Micro Service Service'i poolt. Näiteks võib teie ettevõttes olla paar miljonit kasutajat, kuid seadistate ainult 5 partitsiooni. Kui kutsutakse ostukorvi olekuteenust, peab väline süsteem teavitama ainult kasutaja ID-d (partitsiooni võtit) ja salvestatud andmeid. See päring seostatakse automaatselt ühele viiest partitsioonist, tuginedes kasutaja ID-le ja räsi algoritmile.
Andmetoimingud olekuteenustes toetavad tehinguid. Nii saab ebaõnnestumise korral tagasi kerida


Loodan, et ülaltoodud sissejuhatus aitab sul paremini mõista riigiteenistust.

Järgnevates osades käsitleme riigiteenistuse koodinäiteid.




Eelmine:Loodan, et saate sellest omavahel rääkida
Järgmine:47 viisi C# programmi optimeerimiseks
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com