Programavimas

„Java“ įmonės veiklai naudokite „Memcached“, 1 dalis: Architektūra ir sąranka

„Danga Interactive“ sukurta, kad pagerintų svetainės našumą „LiveJournal.com“, „Memcached“ platinama architektūra šiandien palaiko socialinių interneto programų, tokių kaip „Twitter“, „Facebook“ ir „Wikipedia“, eksponentinį mastelį. Šioje dviejų dalių mokymo programoje „Sunil Patil“ pristato „Memcached“ platinamą „hashtable“ architektūrą ir pradeda naudoti ją talpindamas duomenis savo duomenų bazėje valdomoms „Java“ įmonės programoms.

Ši pamoka supažindina jus su „Memcached“ naudojimu norint pagerinti „Java“ įmonės programų našumą. Pirmoji pusė prasideda tradicinių „Java“ talpyklos architektūrų apžvalga, palyginti su „Memcached“ architektūra. Mes taip pat gausime „Memcached“, įdiegtą jūsų kompiuteryje, ir aš supažindinsiu jus su „Memcached“ per „Telnet“ sąranką ir komandas. Antroje pusėje mes sukursime „Hello Memcached“ kliento programą „Java“, kurią naudosime ieškodami po spymemcached kliento gaubtu. Taip pat sužinosite apie „Memcached“ naudojimą siekiant sumažinti duomenų bazės serverio apkrovą ir naudoti jį dinamiškai sugeneruotų puslapių žymėjimui talpykloje. Galiausiai mes apsvarstysime keletą išplėstinių parinkčių, kaip konfigūruoti spymemcached klientus.

Daugiau apie „Java“ talpyklą „JavaWorld“

  • Norėdami išsamiau aptarti paskirstytą talpyklą su „Memcached“, skaitykite „Serverio apkrovos balansavimo architektūros, 1 dalis: Transporto lygio apkrovos balansavimas“.
  • Taip pat žr. „Atvirojo kodo„ Java “projektai:„ Java “talpyklos sistema“, kad sužinotumėte apie tradicinę „Java“ talpyklą.

„Memcached“ ir „Java“ talpyklos talpyklų architektūrų apžvalga

„Java“ talpyklos sistemos, tokios kaip „EHCache“ ir „OSCache“, iš esmės yra HashMap objektai jūsų programos kode. Kai pridėsite naują objektą prie talpyklos, jis bus saugomas jūsų programos atmintyje. Ši strategija puikiai tinka saugant nedidelius duomenų kiekius, tačiau ji netinka, jei talpykloje saugoma daugiau nei keli gigabaitai (GB). „Memcached“ serverio dizaineriai laikėsi paskirstyto architektūrinio požiūrio, kuris leidžia sistemos mastelį. Todėl galite naudoti „Memcached“ talpindami didžiulį duomenų kiekį.

Memcachedo architektūra susideda iš dviejų dalių. Pirmasis yra „Memcached“ serveris, kuris veikia savo procese. Jei norite išplėsti savo programą, galite įdiegti ir paleisti „Memcached“ serverį papildomose mašinose. „Memcached“ serverio egzemplioriai vienas kito nežino. „Memcached“ klientas, antroji „Memcached“ sistemos dalis, daro žinoti apie kiekvieną iš serverių. Klientas yra atsakingas už kiekvieno talpyklos įrašo serverio paėmimą ir talpyklos įrašo saugojimą arba gavimą - šį procesą aš išsamiai aptarsiu vėliau straipsnyje.

Jei turite šiek tiek patirties dirbant su „Java EE“ žiniatinklio programomis, yra tikimybė, kad anksčiau naudojote atvirojo kodo „Java“ talpyklos sistemą, pvz., „EHCache“ ar „OSCache“. Taip pat galbūt naudojote komercinę talpyklos sistemą, kuri buvo pristatyta kaip jūsų programų serverio dalis, pvz., „DynaCache“ (kuri pristatoma kartu su „IBM WebSphere Application Server“) arba „JBoss Cache“ (kuri pristatoma kartu su „JBoss AS“). Prieš pradėdami naudotis šios mokymo programos praktine mokymosi dalimi, svarbu suprasti, kuo „Memcached“ skiriasi nuo šių tradicinių „Java“ talpyklų sistemų.

Naudojant tradicinę „Java“ talpyklą

Naudoti tradicinę „Java“ talpyklos sistemą yra gana paprasta, neatsižvelgiant į tai, ar pasirenkate atvirojo kodo, ar komercinį variantą. Jei norite naudoti atvirojo kodo struktūrą, pvz., „EHCache“ ar „OSCache“, turėsite atsisiųsti dvejetainius failus ir pridėti reikiamus JAR failus prie savo programos klasės kelio. Taip pat gali tekti sukurti konfigūracijos failą, kurį naudosite sukonfigūruodami talpyklos dydį, disko iškrovimą ir pan. Talpyklos sistemai, kuri buvo pridėta prie programų serverio, paprastai nereikės atsisiųsti jokių papildomų JAR, nes jie bus susieti su programine įranga.

Pridėję talpyklos sistemos palaikymą savo programoje, galėsite pradėti ją naudoti sukurdami „CacheManager“ objektą ir talpyklos įrašų gavimą bei nustatymą jame. Po gaubtu talpyklos sistema sukurtų „CacheManager“ objektai tame pačiame JVM, kuriame buvo vykdoma jūsų programa. Kiekvieną kartą, kai pridedate talpyklos įrašą, tas objektas taip pat bus pridėtas prie tam tikros rūšies maišos, kurią palaiko talpyklos sistema.

Jei jūsų programų serveris veikė keliuose mazguose, galbūt norėsite palaikyti paskirstytą talpyklą. Kai paskirstote talpyklos sistemą, pridėdami objektą į „AppServer1“ talpyklą, tas objektas taip pat pasiekiamas „AppServer2“ ir „AppServer3“. Naudojamos tradicinės „Java“ talpyklos replikacija paskirstytam talpyklui, tai reiškia, kad pridėjus talpyklos įrašą „AppServer1“, jis automatiškai nukopijuojamas į kitus jūsų sistemos programų serverius. Todėl įrašas bus pasiekiamas visuose jūsų mazguose.

Naudojant „Memcached“

Norėdami naudoti „Memcached“ talpykloje, pirmiausia turite atsisiųsti ir įdiegti pasirinktos platformos „Memcached“ serverį. Įdiegus „Memcached“ serverį, jis TCP arba UDP prievade išklausys skambučių talpinimo.

Tada atsisiųskite „Java“ klientą, skirtą „Memcached“, ir pridėsite kliento JAR prie savo programos. Po to galite sukurti „Memcached“ kliento objektą ir pradėti skambinti jo metodu, kad gautumėte ir nustatytumėte talpyklos įrašus. Kai pridedate objektą prie talpyklos, „Memcached“ klientas paims tą objektą, serizuos ir nusiųs baitų masyvą saugoti „Memcached“ serveriui. Tuomet talpykloje saugomas objektas gali būti šiukšlės, surinktos iš JVM, kurioje veikia jūsų programa.

Kai jums reikia to talpykloje esančio objekto, galite paskambinti į „Memcached“ klientą gauti () metodas. Klientas imsis gauti prašymą, serijizuokite ir nusiųskite į „Memcached“ serverį. „Memcached“ serveris naudos užklausą ieškodamas objekto iš talpyklos. Turėdamas objektą, jis grąžins baitų masyvą atgal į „Memcached“ klientą. Tada „Memcached“ kliento objektas paims baitų masyvą ir deserializuos jį, kad sukurtų objektą ir grąžintų jį į jūsų programą.

Net jei jūsų programa veikia daugiau nei viename programų serveryje, visi jie gali nukreipti į tą patį „Memcached“ serverį ir naudoti jį talpyklos įrašams gauti ir nustatyti. Jei turite daugiau nei vieną „Memcached“ serverį, serveriai vienas apie kitą nežinos. Vietoj to sukonfigūruosite „Memcached“ klientą taip, kad jis žinotų visus galimus „Memcached“ serverius. Pvz., Jei jūsų programa sukuria „Java“ objektą „AppServer1“ ir iškviečia rinkinys () metodas, tada „Memcached“ klientas išsiaiškins, kuriame „Memcached“ serveryje tas įrašas eina. Tada jis pradės bendrauti tik su tuo „Memcached“ serveriu. Panašiai, kai jūsų kodas bando „AppServer2“ arba „AppServer3“ gauti įrašą, „Memcached“ klientas pirmiausia išsiaiškins, kuriame serveryje tas įrašas yra saugomas, ir tada susisieks tik su tuo serveriu.

Memchached kliento logika

Pagal numatytąją konfigūraciją „Memcached“ klientas naudoja labai paprastą logiką, kad pasirinktų serverį, kuriai reikia gauti arba nustatyti operaciją. Kai padarysite a gauti () arba rinkinys () skambutį, klientas paima talpyklos raktą ir iškviečia jį hashCode () metodas gauti sveikąjį skaičių, pavyzdžiui, 11. Tada jis paima tą skaičių ir padalija jį iš galimų „Memcached“ serverių skaičiaus, tarkime, du. Tada imama likusioji vertė, kuri šiuo atveju yra 1. Talpyklos įrašas bus skirtas „Memcached“ serveriui 1. Šis paprastas algoritmas užtikrina, kad „Memcached“ klientas kiekviename iš jūsų programų serverių visada pasirinktų tą patį serverį nurodytam talpyklos raktui.

Diegiama „Memcached“

„Memcached“ veikia Unix, Linux, Windows ir MacOSX. Galite atsisiųsti „Memcached“ šaltinį ir jį sukompiliuoti, arba galite atsisiųsti dvejetainius failus, kuriuos sudarė kažkas kitas, ir naudoti juos „Memcached“ įdiegti. Čia apžvelgsiu jūsų pasirinktos platformos dvejetainių failų atsisiuntimo procesą; žr. Ištekliai, jei norite rinkti iš šaltinio.

Šios diegimo instrukcijos skirtos „Windows XP“ 32 bitų mašinai. Kitų platformų, pvz., „Linux“, diegimo instrukcijas rasite šaltiniuose. Taip pat atkreipkite dėmesį, kad šio straipsnio pavyzdinis kodas buvo sukurtas „Windows XP“ 32 bitų kompiuteryje, nors jis turėtų veikti bet kurioje kitoje platformoje.

  1. „Jellycan“ kodas turi modifikuotą „Memcached“ versiją, su kuria lengva ir efektyvu dirbti. Pradėkite čia atsisiųsdami „Win32“ dvejetainį ZIP failą
  2. Išskleisti „Memcached--win32-bin.zip“ standžiajame diske. Atkreipkite dėmesį, kad viskas jame yra memcached.exe. Vykdydami šį failą paleiskite „Memcached“ serverį.
  3. Dabar vykdyk memcached.exe -d įdiegti registruoti memcached.exe kaip paslaugą. „Services“ konsolėje galėsite paleisti ir sustabdyti „Memcached“ serverį.

CL start / stop

Pabandykite paleisti ir sustabdyti „Memcached“ serverį naudodami komandų eilutę, o ne iš paslaugų skydelio. Tai suteiks daugiau lankstumo išbandyti įvairias komandų eilutės parinktis ir išsiaiškinti geriausią įmanomą konfigūraciją pagal jūsų poreikius.

Kai vykdote memcached.exe be jokių komandinės eilutės parinkčių, pagal nutylėjimą „Memcached“ serveris paleidžia 11211 prievadą su 64 MB atmintimi. Kai kuriais atvejais galbūt norėsite išsamiau valdyti konfigūraciją. Pvz., Tarkime, kad prievadą 11211 naudoja kitas jūsų kompiuterio procesas ir norite, kad „Memcached“ serveris naudotų 12000 prievadą; arba jei paleidote „Memcached“ serverį kokybės užtikrinimo ar gamybos aplinkoje, norėtumėte suteikti jam daugiau atminties nei numatytasis 64 MB. Tokiais atvejais galite naudoti komandinės eilutės parinktis, kad pritaikytumėte serverio elgesį. Vykdoma memcache.exe - pagalba komanda suteiks išsamų komandinės eilutės parinkčių sąrašą, kaip parodyta 3 paveiksle.

Susisiekite su „Memcached“ per „Telnet“

Paleidus „Memcached“ serverį, jis klausosi prievado, kuriam jį priskyrėte. „Memcached“ klientas prisijungia prie serverio TCP arba UDP prievade, siunčia komandas ir gauna atsakymus ir galiausiai uždaro ryšį. (Daugiau informacijos apie protokolą, kurį klientas naudoja ryšiui su serveriu, žr. Ištekliai.)

Galite prisijungti prie „Memcached“ serverio įvairiais būdais. Jei naudojate „Java“ klientą, kaip tai darysime antroje šios mokymo programos pusėje, galėsite pasiekti paprastą API, skirtą objektams laikyti ir gauti iš talpyklos. Arba galite naudoti „Telnet“ klientą, kad tiesiogiai prisijungtumėte prie serverio. Norint derinti „Java“ klientą, svarbu žinoti, kaip naudoti „Telnet“ klientą bendraujant su „Memcached“ serveriu, todėl pradėsime nuo to.

„Telnet“ komandos

Pirmiausia turėsite naudoti pasirinktą „Telnet“ klientą, kad prisijungtumėte prie „Memcached“ serverio. „Windows XP“ kompiuteryje galite tiesiog vykdyti „telnet localhost 11211“ darant prielaidą, kad „Memcached“ serveris veikia tuo pačiu kompiuteriu ir klausosi numatytuoju 11211 prievadu. Šios komandos yra būtinos dirbant su „Memcached“ per „Telnet“:

  • rinkinys prideda naują elementą prie talpyklos. Skambinama: Nustatyti . Galite įvesti faktinę vertę, kuri turėtų būti saugoma kitoje eilutėje. Jei nenorite, kad pasibaigtų talpyklos įrašo galiojimo laikas, įveskite 0 kaip vertę.
  • gauti grąžina talpyklos rakto vertę. Naudokite gauti gauti vertės keyName.
  • papildyti prideda naują raktą tik tuo atveju, jei jo dar nėra. Pavyzdžiui: papildyti
  • pakeisti reikšmę pakeis tik tuo atveju, jei raktas yra. Pavyzdžiui: pakeisti
  • Ištrinti ištrina rakto talpyklos įrašą. Galite naudoti skambutį Ištrinti ištrinti keyName.

4 paveiksle pateiktoje ekrano kopijoje pateikiama pavyzdinė sąveika su „Memcached“ serveriu per „Telnet“. Kaip matote, „Memcached“ serveris teikia atsiliepimus kiekvienai komandai, pvz LAIKYTA, NOT_STORED, ir taip toliau.

1 dalies išvada

Iki šiol trumpai aptarėme skirtumus tarp „Memcached“ paskirstytos architektūros ir labiau tradicinių „Java“ talpyklų sistemų. Be to, mes sukūrėme „Memcached“ diegimą jūsų kūrimo aplinkoje, o jūs bandėte prisijungti prie „Memcached“ per „Telnet“. Kitoje šios pamokos dalyje mes naudosime „Java“ klientą, kurį spymemcached nustatysime paskirstytąjį talpyklos sprendimą „Java“ pavyzdžiui. Tuo metu sužinosite daug daugiau apie „Memcached“ ir kaip tai gali pagerinti jūsų „Java EE“ programų našumą.

Sunilas Patilas yra „Java EE“ architektas, dirbantis „Avnet Technology“ kompanijoje San Franciske, Kalifornijoje. Jis yra knygos autorius „Java“ portletai 101 (SourceBeat, 2007 m. Balandžio mėn.) Ir parašė daugybę straipsnių, kuriuos paskelbė „JavaWorld“, „IBM developerWorks“ ir „O'Reilly Media“. Be to, kad yra „IBM“ sertifikuoto „WebSphere Portal Server“ programų kūrėjas ir administratorius, jis yra „Sun Microsystems“ sertifikuotas „Java“ programuotojas, interneto komponentų kūrėjas ir verslo komponentų kūrėjas. „Sunil“ tinklaraštį galite peržiūrėti adresu //www.webspherenotes.com.

$config[zx-auto] not found$config[zx-overlay] not found