Programavimas

Atvirojo kodo „Java“ projektai: „Java“ talpyklos sistema

„Enterprise Java“ specialistas Steve'as Hainesas šį mėnesį prisijungia prie „Open source Java“ projektų serijos pristatydamas „Java Caching System“ (JCS) - tvirtą įmonės lygio talpyklos sprendimą. Steve'as pradeda trumpą įvadą į talpyklą, aptardamas kriterijus, pagal kuriuos nustatoma, ar objektai turėtų būti talpinami ir ar jūsų programai būtų naudinga talpykla. Tada jis parodo, kaip sukonfigūruoti JCS ir naudoti ją kuriant talpyklos programą.

„Java“ talpyklos sistema (JCS) yra patikimas atvirojo kodo talpyklos produktas, išleistas per „Apache Jakarta“ paprojektą. Jame pateikiamos standartinės funkcijos, kurių galite tikėtis iš talpyklos sistemos, pvz., Atminties talpykla ir algoritmai, skirti selektyviai pašalinti objektus iš talpyklos. Jis taip pat siūlo pažangesnes funkcijas, tokias kaip indeksuotų diskų talpinimas ir paskirstytų talpyklų palaikymas.

JCS talpykla turi į žemėlapį panašią struktūrą, kurioje duomenys talpykloje saugomi kaip vardo ir vertės pora. JCS padalija talpyklą į regionuose. Kiekvienas regionas turi savo konfigūraciją, taip pat savo vardų ir porų rinkinį. Kiekvienas regionas gali:

  • Būkite skirtingo dydžio
  • Būkite įgyvendintas kitaip
  • Pateikti skirtingus duomenis

raktai (pavadinimai vardų ir verčių porose) viename regione gali būti tokie patys kaip raktai kituose regionuose. Tai svarbu, nes tai leidžia jums išlaikyti atskiras talpyklas skirtingiems objektams, visiems tame pačiame JVM - ir visiems, apibrėžtiems viename ypatybių faile.

Atvirojo kodo licencijos

Kiekvienam atvirojo kodo „Java“ projektui, kuriam taikoma ši serija, reikalinga licencija, kurią turėtumėte suprasti prieš integruodami projektą su savo projektais. JCS taikoma „Apache“ licencija; Žr. šaltinius, kad sužinotumėte daugiau.

Šiame straipsnyje nagrinėjama JCS, pirmiausia parodant, kaip gauti ir įdiegti dabartinį leidimą. Tada paaiškinsiu, kas yra talpykla, kodėl ją galite naudoti ir ar tai yra tinkamas sprendimas konkrečiai programai. Tada gilinsitės į JCS ypatybių failą, kuris yra geriausias būdas suprasti JCS. Galiausiai sukursite talpyklos programos pavyzdį, kuriame naudojama JCS.

Pradėkite naudotis JCS

JCS galite atsisiųsti iš JCS projekto svetainės atsisiuntimų puslapio. Nuo šio rašymo naujausia versija yra 1.3. Atsisiųskite dvejetainį paskirstymą (kaip TAR failą „Unix“ sistemose arba ZIP failą sistemoje „Windows“) ir išspauskite jį į vietinį savo kompiuterio katalogą.

Diegimo katalogo šaknyje yra jcs-1.3.jar, kurį turite pridėti prie savo CLASSPATH prieš sudarydami ir vykdydami JCS programas.

Klasės dokumentai aukso kasykla

Šiame straipsnyje, taip pat savarankiškuose tyrimuose rasite, kad JCS dokumentai katalogas yra neįkainojamas informacijos apie JCS šaltinis, įskaitant API dokumentus. Patikimas „Javadoc“ dokumentas yra jūsų teisė suprasti, kaip naudoti JCS klases.

Jums reikės dviejų priklausomybių:

  • „Commons Logging“
  • Kartu

Iš „Commons Logging“ pridėkite commons-logging.jar tavo CLASSPATH.

Greitas spartinimas talpykloje

Talpykla skirta objektams laikyti, paprastai atmintyje, kad programa galėtų nedelsiant pasiekti. Programa su talpykla sąveikauja kitaip nei su išorinės atminties sprendimais. Paprastai programa gauna ryšį su duomenų baze, vykdo užklausą visame tinkle ir analizuoja rezultatus, kai jie grąžinami. Talpykla palaiko lengvai pasiekiamų objektų rinkinį tvirta į žemėlapį panašioje struktūroje, kuriai nereikia tinklo skambučio. „Enterprise Java“ programų našumas pagerėja eksponentiškai, kai ji prieina prie daugkartinio naudojimo objektų, esančių talpykloje, juos įkėlus iš duomenų bazės, o ne skambina nuotoliniu būdu.

Jei jūsų programoje yra daugybė prieinamų objektų, kurie dažnai pasiekiami, talpykla tikriausiai gali pagerinti jos našumą. „Java“ programas riboja turimi JVM ištekliai, kurių brangiausia yra atmintis. Nėra prasmės atimti JVM atminties, kad būtų galima laikyti objektus, prie kurių retai prieinama. Tikriausiai geriau įkelti objektą, prie kurio pasiekiama kartą per kelias valandas, kiek reikia, ir palikti pakankamai laisvos atminties kitiems ištekliams. Kita vertus, geriau kelis kartus per minutę ar net kelis kartus per valandą pasiekiamus objektus įkelti į talpyklą ir aptarnauti juos iš atminties, o ne skambinti nuotoliniu būdu kiekvieną kartą, kai to reikia. Jei objektų, kuriuos jūsų programa dažnai pasiekia, skaičių galima valdyti per laisvą atmintį, tai yra geras kandidatas į talpyklą. Bet jei prieina milijonai objektų dažnai, tada vis tiek programai gali būti naudingiausia įkelti objektus, jei reikia, o ne naudoti 75 procentus JVM krūvos talpyklai talpinti.

Talpykla, palyginti su kaupimu

Diskusijose apie talpyklą dažnai kyla painiava dėl talpyklos ir telkinio skirtumo. Kurie objektai turėtų būti talpykloje ir kokie objektai turėtų būti kaupiami? Atsakymas slypi pačių daiktų pobūdyje. Jei objektas palaiko būseną, jis turėtų būti laikomas talpykloje. Objektai be pilietybės turėtų būti sutelkti. Kaip analogiją apsvarstykite dvi veiklas: maisto pirkimą prekybos centre ir vaiko pasiėmimą iš mokyklos. Bet kuris kasininkas gali patikrinti bet kurį prekybos centro klientą; nesvarbu, kurį kasininką gausite, todėl kasininkus reikėtų sutelkti. Kai pasiimate savo vaiką iš mokyklos, norite tavo vaikas, o ne kažkas kitas, todėl vaikai turėtų būti laikini talpykloje.

Ekstrapoliuojant šią idėją įmonės „Java“, turėtų būti telkiami tokie ištekliai kaip duomenų bazių ryšiai ir verslo apdorojimo pupelės, o tokie objektai kaip darbuotojai, dokumentai ir valdikliai turėtų būti talpykloje. Nesvarbu, kurią duomenų bazės jungtį jūsų programa gauna iš ryšio telkinio - jie visi daro tą patį, bet jei norite sau pakelti atlyginimą, svarbu, kad gautumėte tavo darbuotojo objektas.

Suprasti JCS regionus

JCS naudojimas iš tikrųjų yra gana paprastas, tačiau jums reikia šiek tiek žinių apie tai, kaip JCS apibrėžia talpyklos regionus ir kaip juos galima sukonfigūruoti. JCS ypatybių failas yra logiška vieta pradėti suprasti JCS. 1 sąraše rodomas JCS ypatybių failo pavyzdys.

Sąrašas 1. JCS ypatybių failas (cache.ccf)

# Numatytasis talpyklos regionas jcs.default = DC jcs.default.cacheattributes = org.apache.jcs.engine.CompositeCacheAttributes jcs.default.cacheattributes.MaxObjects = 1000 jcs.default.cacheattributes.MemoryCacheNem = org .lru.LRUMemoryCache jcs.default.cacheattributes.UseMemoryShrinker = true jcs.default.cacheattributes.MaxMemoryIdleTimeSeconds = 3600 jcs.default.cacheattributes.ShrinkerIntervalSeconds.cs.telef.cs.telef. elementattributes.IsEternal = false jcs.default.elementattributes.MaxLifeSeconds = 21600 jcs.default.elementattributes.IdleTime = 1800 jcs.default.elementattributes.IsSpool = true jcs.default.elementattributes.IsRemote = true jcs.default.el # IŠ anksto numatyti talpyklos regionai jcs.region.musicCache = DC jcs.region.musicCache.cacheattributes = org.apache.jcs.engine.CompositeCacheAttributes jcs.region.musicCache.cacheattributes.MaxObjects = 1000 jcs.regea.region.music ame = org.apache.jcs.engine.memory.lru.LRUMemoryCache jcs.region.musicCache.cacheattributes.UseMemoryShrinker = true jcs.region.musicCache.cacheattributes.MaxMemoryIdleTimeSeconds = 3600 jcs.regers.regic.regic.regic.reg region.musicCache.cacheattributes.MaxSpoolPerRun = 500 jcs.region.musicCache.elementattributes = org.apache.jcs.engine.ElementAttributes jcs.region.musicCache.elementattributes.IsEternal = false # AVAILABLE AUXILIARY CACHiary.cs .jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory jcs.auxiliary.DC.attributes = org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes jcs.auxiliary.DC.attributes.DiskPcs = c: / temp .attributes.MaxPurgatorySize = 10000000 jcs.auxiliary.DC.attributes.MaxKeySize = 1000000 jcs.auxiliary.DC.attributes.MaxRecycleBinSize = 5000 jcs.auxiliary.DC.attributes.OptimizeAtRemoveCut.im = 60000 jm

1 sąraše yra trys skyriai:

  • Numatytasis regionas apibrėžia numatytąją visų regionų konfigūraciją, nebent tai aiškiai pakeičia vienas iš kitų regionų.
  • Kitas yra iš anksto nustatytų (tai yra vartotojo nustatytų) talpyklos regionų sąrašas, kuriame šiuo atveju yra „musicCache“ kurį panaudosiu būsimame pavyzdyje.
  • Pagalbinės talpyklos apibrėžia pagalbiniai kurį galima prijungti prie talpyklos srities. Nors kiekvienoje talpyklos srityje turi būti viena (ir tik viena) atminties pagalbinė priemonė, joje gali būti bet koks skaičius kitų pagalbinių įrenginių, kurie talpina talpykloje saugomus duomenis. Šiame pavyzdyje sukuriu indeksuoto disko talpyklą, bet jūs taip pat galite apibrėžti šoninis ir Nuotolinis pagalbiniai. Šoninis pagalbinis įrenginys gali nukopijuoti jūsų talpyklos duomenis į kitas talpyklas per TCP lizdą arba „JGroups“ protokolo kaminą. Nuotolinis pagalbinis įrenginys gali pakartoti duomenis į kitas talpyklas naudodamas nuotolinio metodo iškvietimą (RMI).

Kiekvienas regionas gali apibrėžti talpyklos atributus taip pat elemento atributai. Talpyklos atributas apibrėžia talpyklos konfigūracijos parinktį, o elemento atributas - talpyklos elementų konfigūravimo parinktį. Čia pateikiama talpyklos atributo parinkčių santrauka:

  • „MaxObjects“: Tai yra maksimalus atmintyje leidžiamas objektų skaičius.
  • „MemoryCacheName“: Ši ypatybė leidžia jums nustatyti atminties tvarkyklę, kuri bus naudojama kaip jūsų „MemoryCache“. Numatytasis atminties tvarkytuvas įgyvendina LRU strategiją.
  • UseMemoryShrinker: Ši parinktis leidžia JCS periodiškai kartoti talpyklą, ieškant objektų, kuriuos galima pašalinti (elementai, kurių galiojimo laikas pasibaigęs arba viršytas maksimalus laisvosios atminties laikas). Numatytoji vertė yra melagingas.
  • „MaxMemoryIdleTimeSeconds“: Jei įgalintas atminties sutraukėjas, ši ypatybė nurodo JCS, kiek laiko objektas gali likti nenaudojamas, kol susitraukėjas jį pašalins (ir sukite į diską, jei buvo sukurta indeksuota disko talpykla). Numatytoji vertė yra -1, kuri išjungia šią parinktį.
  • „ShrinkerIntervalSeconds“: Jei įgalintas atminties sutraukėjas, ši ypatybė nurodo JCS, kaip dažnai reikia paleisti susitraukėją. Numatytoji vertė yra 60 sekundžių.
  • „DiskUsagePattern“: Jei įgalinta disko talpykla, ši ypatybė nurodo JCS, kaip išsaugoti duomenis, kai atminties talpykla pilna. Numatytoji vertė yra KEITIMASIS, kuris susuka elementus į diską tik tada, kai pilna atminties talpykla. Kitas variantas yra ATNAUJINTI, kuris visus duomenis išlaiko į diską, bet tik tada, kai duomenys yra atnaujinami. Jei JDBC pagalbinė priemonė buvo apibrėžta kaip disko talpykla, visi objektai lieka atmintyje (tol, kol atmintis bus pilna) ir taip pat perkeliami į duomenų bazę, kuri užtikrina gerą našumą ir patikimumą.

Čia pateikiamos elemento atributo parinktys:

  • IsEternal: Jei elementas yra amžinas, jo negalima pašalinti iš talpyklos, nes jis viršija maksimalų jo tarnavimo laiką. Numatyta ši parinktis tiesa.
  • „MaxLifeSeconds“: Jei elementai nėra amžini, ši parinktis apibrėžia maksimalų kiekvieno objekto gyvenimą prieš jį pašalinant. Jei atminties susitraukėjas veikia, objektus pašalina susitraukėjas; jei ne, jie pašalinami, kai jie pasiekiami. Numatyta ši parinktis -1, kuri išjungia parinktį.
  • „IsSpool“: Ši parinktis apibrėžia, ar elementą galima susukti į diską. Pagal nutylėjimą tiesa.
  • Vienpusis: Ši parinktis apibrėžia, ar elementą galima siųsti į šoninę talpyklą, ar ne. Pagal nutylėjimą tiesa.
  • „IsRemote“: Ši parinktis apibrėžia, ar elementą galima siųsti į nuotolinę talpyklą, ar ne. Pagal numatytuosius nustatymus tiesa.

1 sąraše sukūriau regioną pavadinimu „musicCache“ kad atmintyje telpa iki 1000 daiktų. Jos atminties tvarkyklė naudoja LRU algoritmą: kai talpykla pilna ir JCS reikia vietos naujiems elementams, ji pašalins elementus, prie kurių neseniai nebuvo pasiekta. Jame įjungtas atminties sutraukėjas, ir jis veiks kas 60 sekundžių. Jis iškels daiktus, kurie neveikia ilgiau nei 60 minučių (3600 sekundžių.). Jo daiktai nėra amžini, juos galima išrašyti į diską, šoninę talpyklą arba nuotolinę talpyklą.

Atkreipkite dėmesį, kad „IsSpool“, Vienpusisir „IsRemote“ parametrai yra paveldimi iš numatytųjų parametrų. Nes jcs.region.musicCache elementas nustatytas DC, jis apibrėžiamas ne tik palaikyti atminties talpyklą, bet ir naudoti indeksuotą disko talpyklą kaip pagalbinę. (Ypatybę galima nustatyti kableliais atskirtame kelių pagalbinių įrenginių sąraše.) Disko talpykla sukonfigūruota laikyti elementus c: / temp kataloge. (JCS teikia pirmenybę pasviriesiems brūkšniams, o ne atgaliniams.) Likę atributai sukonfigūruoja disko talpyklą naudodami „IndexedDiskCacheAttribute“ objektas; apie šiuos atributus galite perskaityti JCS „Javadoc“.

Talpyklos pavyzdinės programos kūrimas

Supratę, kaip sukonfigūruoti JCS, talpyklos programos kūrimas yra nesudėtingas. Programa turi sugebėti:

  • Inicializuokite talpyklą iš jos konfigūracijos failo
  • Talpykloje pasiekite regioną
  • Įkelkite objektus į talpyklą
  • Gauti objektus iš talpyklos
  • Pašalinkite objektus iš talpyklos

Talpyklą galima inicijuoti automatiškai arba rankiniu būdu. Jei pavadinsite savo konfigūracijos failą talpykla.ccf ir įdėkite jį tiesiai į savo CLASSPATH (pvz., jūsų šakninio katalogo), tada, kai pirmą kartą iškviečiamas JCS, jis suranda failą ir tinkamai inicijuoja. Jei jums reikia laikyti savo konfigūracijos failą kitur arba pavadinti kitaip, galite naudoti org.apache.jcs.utils.props.PropertyLoader loadProperties () metodas įkelti JCS ypatybes iš bet kurio failo.

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