BLOGas.lt
Sukurk savo BLOGą Kitas atsitiktinis BLOGas

Įvadas į paskirstytą tarpinę atmintį Microsoft Velocity – 3 dalis

Parašė Sergejus | 2009-09-27 22:17

Antroje įvado dalyje aš aprašiau Microsoft Velocity diegimą ir konfigūravimą. Šiandien paskutinė straipsnių ciklo dalis, kurioje norėčiau trumpai aprašyti pagrindinius Velocity API metodus. Šiame pavyzdyje aš naudosiu konsolinę programą, kuri kešuos iš vienos lentelės gaunamus duomenis.

Pradėsime nuo konfigūracijos failo aprašymo. Darant prielaidą, kad Microsoft Distributed Cache yra suinstaliuotas lokaliame kompiuteryje ir naudoja prievadą (portą) pagal nutylėjimą, App.config failas atrodys taip:

velocity6

Norėdami pasinaudoti Velocity iš kodo, pirma reikia įtraukti dvi nuorodas į CacheBaseLibrary ir ClientLibrary bibliotekas (randasi Microsoft Distributed Cache kataloge). Tarpinės atminties panaudojimą geriausia parodyti aprašant servisų klasę:

velocity7

Kaip matyti, metode GetLanguages() pirma bandoma kreiptis į tarpinę atmintį ir jeigu joje nieko nėra – vykdoma užklausą į duomenų bazę. Kadangi tarpinė atmintis turi būti atnaujinama keičiant egzistuojančius arba įterpiant naujus duomenis, metode SaveLanguage() sukešuotas elementas išvalomas.

Norėdami patikrinti tarpinės atminties veikimą, parašykime paprasčiausią testą:

velocity8

Testo metu 10 kartų kreipiamasi į metodą GetLanguages(), bet Debug konsolėje matysime lygiai 1 select užklausą. Norėčiau atkreipti dėmesį į tai, kaip kuriamas tarpinės atminties objektas. Tai daroma GetDefaultCache() factory metodo pagalba. Norint gauti priėjimą ne prie numatytosios tarpinės atminties, bet prie norimo tarpinės atminties regiono – tereikia pasinaudoti metodu GetCache().

Štai ir viskas, ką norėjau aprašyti šiame straipsnių cikle. Iš asmeninės patirties galiu pasakyti, kad Microsoft Distributed Cache greitaveika šiuo metu tikrai yra gera, bet API jaučiasi dar nėra iki galo išbaigtas. Pavyzdžiui, nėra paprasto būdo patikrinti ar egzistuoja tarpinės atminties regionas nurodytu vardu. Kaip mane tikino Velocity komanda, su artimiausia versija toks metodas pasirodys. Nepaisant visų trūkumų, džiugu kad judama tinkama linkme ir jeigu jums prisireiks paskirstytos tarpinės atminties – tikrai siūlyčiau išbandyti Microsoft Velocity.

Rodyk draugams

Įvadas į paskirstytą tarpinę atmintį Microsoft Velocity – 2 dalis

Parašė Sergejus | 2009-09-20 13:24

Pirmoje įvado dalyje aš trumpai aprašiau Microsoft Velocity paskirstytos tarpinės atminties pagrindus, apžvelgiau pagrindines sąvokas, architektūrą bei veikimo principus. Šiandien norėčiau parodyti kaip ją įdiegti, sukonfigūruoti bei paruošti darbui.

Šio straipsnio rašymo metu naujausia versija yra CTP3, kurią galima parsisiųsti iš čia. Greitu metu turėtų pasirodyti atnaujinta versija – CTP4. Microsoft Velocity diegimas yra pakankamai paprastas, bet ypatingą dėmesį reikia atkreipti į šį konfigūracijos langą:

velocity3 

Kaip matyti, šiame lange reikia pasirinkti kur bus saugomi mūsų paskirstytos tarpinės atminties nustatymai: bendrai prieinamame kataloge (shared folder) arba duomenų bazėje, kiek blokinio (klasterio) mazgų numatoma turėti, kokius prievadus (portus) naudosime ir kokį didžiausią duomenų kiekį leisti laikyti tarpinėje atmintyje. Šiuo atveju nustatymų saugojimui aš pasirinksiu išorinę duomenų bazę bei paliksiu kitus nustatymus pagal nutylėjimą:

velocity4

Sėkmingai įdiegus Microsoft Velocity jūsų darbastalyje atsiras PowerShell nuoroda: Administration Tool - Microsoft Distributed Cache. Ją reikia būtinai leisti administratoriaus teisėmis (Run as Administrator), kitaip gausite klaidą. Pirmo paleidimo metu pamatysite klausimą „Ar norite leisti naudotis nepasirašytomis (unsigned) bibliotekomis“. Atsakymas turėtų būti teigimas – Allow Always. Taip pat prieš pradedant naudotis, PowerShell komandinėje eilutėje jums reikės įvykdyti komandą Use-CacheCluster. Štai ir viskas, Microsoft Velocity paruošta darbui!

velocity5

Administruojant Microsoft Distributed Cache patartina atsiminti porą pagrindinių komandų:

  • New-Cache – sukuria naują vardinę tarpinę atmintį
  • Get-Cache – parodo visas sukurtas tarpines atmintis ir jų regionus
  • Get-CacheStatistics –CacheName X – parodo tarpinės atminties vardu X panaudojimo statistiką
  • Stop-CacheCluster, Start-CacheCluster, Restart-CacheCluster – sustabdo, startuoja ir perkrauna kešavimo blokinį

Tiek šiam kartui iš Microsoft Velocity diegimo ir konfigūravimo, trečioje dalyje aptarsiu Velocity API panaudojimą iš kodo.

Rodyk draugams

Įvadas į paskirstytą tarpinę atmintį Microsoft Velocity – 1 dalis

Parašė Sergejus | 2009-09-07 23:36

Taip jau atsitiko, kad darbe man prisireikė panaudoti bendrą tarpinę atmintį (kešą) iš karto kelioms aplikacijoms: ASP.NET aplikacijai, WCF servisams, Windows servisui ir net konsolinei aplikacijai. Prasidėjo nuo to, kad pradžioje kešavimas buvo naudojamas tik ASP.NET pusėje (WebCache). Vėliau buvo kuriamos papildomos aplikacijos bei servisai ir galiausiai atsirado poreikis panaudoti tarpinę atmintį, kuri būtų pasiekiama iš bet kokio tipo aplikacijos.

Jau kurį laiką CTP stadijoje egzistuoja Microsoft paskirstyta tarpinė atmintis Velocity (galutinis pavadinimas tikriausiai bus Microsoft Distributed Cache). Šiandien aš norėčiau padaryti trumpą įvadą į Microsoft Velocity bei apžvelgti pagrindines sąvokas.

Pradėsime nuo pradžių - kas yra paskirstyta tarpinė atmintis? Manau geriausiai į šį klausimą atsako šis paveiksliukas:

Kaip matyti, paskirstyta tarpinė atmintis pasižymi keliomis svarbiomis charakteristikomis:

  • ji yra pasiekiama aplikacijoms esančioms tiek tame pačiame kompiuteryje, tiek skirtinguose;
  • iš programavimo pusės ji atrodo kaip unifikuota, neriboto dydžio tarpinė saugykla;
  • visi sukešuoti duomenys yra saugomi viename arba keliuose serveriuose (blokinyje), sugedus vienam iš kurių visa apkrova bus automatiškai paskirstyta tarp likusių serverių.

Akivaizdu, kad tarpinės atminties blokinio valdymui reikalinga atskira programinė įranga. Norėčiau pagirti Velocity komandą už tikrai teisingą sprendimą naudoti PowerShell šiam uždaviniui. Iš PowerShell komandinės eilutės galima perkrauti tarpinės atminties blokinį arba atskirą jo serverį, galima pasižiūrėti egzistuojančias tarpines atmintis, sukurti naują arba tiesiog gauti jos naudojimo statistiką.

Išnagrinėję bendrus paskirstytos tarpinės atminties aspektus, laikas aptarti Velocity komponentus bei pagrindines sąvokas: kešavimo serverį, vardinę tarpinę atmintį bei regionus.

Kaip jau buvau užsiminęs, Velocity paskirstytą tarpinę atmintį sudaro vienas arba daugiau kešavimo serverių, apjungtų į blokinį. Tarpinės atminties valdymas yra atliekamas viso blokinio mastu. Kadangi tuo pačiu tarpinės atminties blokiniu gali naudotis skirtingos, tarpusavyje nesusijusios aplikacijos, egzistuoja taip vadinamos vardinės tarpinės atmintis (Named Cache). Pagal nutylėjimą visada prieinama numatytoji (default) tarpinė atmintis, bet esant  poreikiui galima sukurti vardines (pavyzdyje, vardinė tarpinė atmintis „Klientai”). Verta pabrėžti, kad kiekviena vardinė tarpinė atmintis yra paskirstyta tarp visų blokinio serverių.

Sukešuoti objektai gali būti saugomi ne tik vardinėje tarpinėje atmintyje, bet ir regione. Kiekvienoje vardinėje tarpinėje atmintyje galima sukurti vieną arba daugiau regionų. Jie yra skirti loginiam sukešuotų objektų grupavimui ir pasižymi tokiomis savybėmis:

  • sukešuotų objektų paieška regionuose yra žymiai patogesnė nei vardinėje tarpinėje atmintyje;
  • sukešuoti objektai regionuose gali turėti žymes (tags);
  • vienam regionui priklausantys objektai fiziškai visada bus viename serveryje.

Apie Velocity veikimą galima dar rašyti ir rašyti, bet manau tiek pakanka, kad sudaryti bendrą vaizdą kas yra paskirstyta tarpinė atmintis ir iš kokių dalių susideda Microsoft Distributed Cache. Jeigu kas susidomėjo - patariu pasiskaityti MSDN dokumentaciją. Kitoje įvado dalyje aš pademonstruosiu Velocity diegimo ir konfigūravimo procesą.

Rodyk draugams