|
|
Paskelbta 2018-03-15 10:03:44
|
|
|
|

Ankstesniame skyriuje kalbėjome apie dvi žemiausias "Service Fabric" sąvokas, viena yra mazgo tipas ir mazgas aparatinės įrangos lygiu. Kitas yra taikymas.
Mazgo tipas yra mazgų rinkinys, kuris yra konceptualios diegimo mašinų abstrakcijos. "Service Fabric" mazgas gali būti fizinė mašina, virtuali mašina ar net populiariausias konteineris.
Veikia mazgo tipas yra programa. Tai abstraktus supratimas sistemos programinės įrangos lygiu. Programoje yra kelios mikro paslaugos. Net visos pagrindinės "Service Fabric" paslaugos, tokios kaip "FailoverManager" paslauga ir pavadinimų suteikimo paslauga, yra mikro paslaugos.
Visos paskirstytos "Service Fabric" funkcijos atitinka "Micro Service" diegimą. Galime dinamiškai reguliuoti, kiek egzempliorių turi veikti mikro paslauga, kiek mazgų, kad paskirstytų apkrovos slėgį arba atliktų atsargines kopijas. Kiekvienas egzempliorius klausosi skirtingo prievado, o apkrovos balansavimo sluoksnis paskirsto užklausas skirtingiems egzemplioriams.
Faktinis scenarijus
Stateful Service yra viena iš mikro paslaugų.
Prieš pradėdami pristatyti "Stateful Service", apsvarstykime šiuos įprastus verslo scenarijus.
Galvojate apie pirkinių krepšelio funkcijos įdiegimą savo svetainėje. Prisijungę vartotojai įdės kai kurias prekes į savo pirkinių krepšelį.
Kitą kartą vartotojui prisijungus, registratūros puslapis paskambins į pirkinių krepšelio paslaugą ir turės iš naujo perskaityti išsaugotus šios paslaugos pirkinių krepšelio duomenis ir juos parodyti.
Jei taip, kaip tai pasiektumėte?
Jei vartotojų skaičius nėra itin didelis, į duomenų bazę įtrauksime pirkinių krepšelio lentelę ir susiesime ją su vartotojų lentele. Krepšelio lentelėje bus vartotojo ID laukas ir bus įrašytas didelis kiekis vartotojo krepšelio duomenų.
Tada tai sukels tam tikrų tolesnių problemų.
Jei vartotojų skaičius ir toliau didės, duomenų bazės lentelių našumas ir toliau blogės. Duomenų bazės lentelės duomenų atsarginės kopijos turi būti reguliariai kuriamos praradus duomenis Jei kyla problemų dėl duomenų bazės veikimo, lentelę reikia demaskuoti arba net skaidyti Pati pirkinių krepšelio sistema turi atlikti bet kokius duomenų bazės pakeitimus, ir net ją gali tekti subalansuoti Šios problemos esmė yra ta, kad pati sistema nėra sukurta taip, kad būtų keičiamo dydžio. Be to, duomenų bazės yra potenciali kliūtis ir grėsmė našumui.
Būsenos tarnyba
Apsvarstykime tokią visiškai naują architektūrą.
Nuo pat pradžių pirkinių krepšelio sistemoje yra 36 papildomos paslaugos, kurios apdoroja visas užklausas (36, nes vartotojo ID inicialai yra 0-9 a-z, iš viso 36).
Naudotojo užklausa apdorojama pagal pradinę naudotojo ID maišą konkrečiai antrinei paslaugai.
Antrinė paslauga saugo pirkinių krepšelio duomenis viduje per lengvą duomenų bazę ir saugo juos savo saugojimo įrenginyje.
Kiekviena antrinė paslauga taip pat turi 3 atsargines kopijas, kurios nuolat sinchronizuoja saugomus duomenis, ir šios atsarginės kopijos visada veikia skirtinguose mazguose.
Tuo pačiu metu tik viena atsarginė kopija yra atsakinga už užklausų apdorojimą kaip aktyvinimo būseną, o kai kyla problemų suaktyvinant atsarginę kopiją, kitos dvi atsarginės kopijos suaktyvina vieną pagal planavimo algoritmą.
Avarinio atkūrimo posistemis sukuria naują atsarginę kopiją, kad užtikrintų, jog antrinė paslauga visada turėtų 3 sveikas atsargines kopijas.
Stateful Service yra vienas iš tokių sprendimų.
Grįžtant prie aukščiau pateikto scenarijaus, pirkinių krepšelio sistema yra būsenos paslauga.
36 posistemiai yra 36 šios būsenos tarnybos, kurią vadiname skaidiniais, egzemplioriai.
Kiekvieno posistemio atsarginė kopija yra replika, o skaidinyje yra 3 replikos.
Šiuo metu aktyvi atsarginė kopija yra aktyvi replika, o dvi neaktyvios budėjimo režimo atsarginės kopijos yra antrinė replika.
Kiekviena to paties Partiion kopija turi veikti skirtingame mazge.
Būsenos tarnybos kodas naudoja <T>tokias sąsajas kaip IReliableCollection, IReliableDictionary< T1 ir T2 >duomenims įrašyti ir sinchronizuoti viduje.
Be to, "Stateful Service" gali įdiegti šias funkcijas:
Visus aukščiau nurodytus skaičius galima nustatyti iš naujo, o krepšelio sistemoje galite turėti šimtus skaidinių, kad įkeltumėte daugiau streso. Viename skaidinyje netgi galite turėti 5 ar daugiau replikų, kad užtikrintumėte didesnį tvirtumą. Išorinėms sistemoms nesvarbu, kiek skaidinių turi "Stateful Service", jos iškviečiamos skaidinio raktu. Skaidinio raktą ir atitinkamą skaidinį išsprendžia pagrindinė "Service Fabric" mikrotarnyba. Pavyzdžiui, savo versle galite turėti kelis milijonus vartotojų, bet nustatyti tik 5 skaidinius. Skambinant į pirkinių krepšelį "Stateful Service", išorinei sistemai tereikia informuoti vartotojo ID (skaidinio raktą) ir išsaugotus duomenis. Ši užklausa automatiškai susiejama su vienu iš penkių skaidinių pagal vartotojo ID ir maišos algoritmą. Būsenos tarnybų duomenų operacijos palaiko operacijas. Taigi galite atšaukti nesėkmę
Tikiuosi, kad aukščiau pateiktas įvadas padės jums geriau suprasti valstybinę tarnybą.
Tolesniuose skyriuose apžvelgsime būsenos tarnybos kodo pavyzdžius. |
Ankstesnis:Tikiuosi, kad galėsite tai aptarti tarpusavyjeKitą:Keturiasdešimt septyni būdai, kaip optimizuoti C# programą
|