Programmēšana

Java uzņēmuma veiktspējai izmantojiet Memcached, 1. daļa: Arhitektūra un iestatīšana

Lai uzlabotu vietnes veiktspēju vietnē LiveJournal.com, Memcached izplatītā arhitektūra, ko izstrādājusi Danga Interactive, šodien atbalsta sociālo tīmekļa lietojumprogrammu, piemēram, Twitter, Facebook un Wikipedia, eksponenciālo mērogojamību. Šajā divdaļīgajā apmācībā Sunil Patil iepazīstina ar Memcached izplatīto hashtable arhitektūru un ļauj jums sākt to izmantot datu kešatmiņā savām datu bāzē balstītām Java uzņēmuma lietojumprogrammām.

Šī apmācība iepazīstina jūs ar Memcached izmantošanu, lai uzlabotu Java uzņēmuma lietojumprogrammu veiktspēju. Pirmā puse sākas ar pārskatu par tradicionālajām Java kešatmiņas arhitektūrām salīdzinājumā ar Memcached arhitektūru. Mēs arī instalēsim jūsu datorā Memcached, un es jūs iepazīstināšu ar iestatījumiem un komandām darbam ar Memcached, izmantojot Telnet. Otrajā pusē mēs izstrādāsim Java programmu "Hello Memcached", kuru izmantosim, lai skatītos zem spymemcached klienta pārsega. Jūs arī uzzināsiet par Memcached izmantošanu, lai samazinātu datu bāzes servera slodzi, un tā izmantošanu, lai kešatmiņā saglabātu dinamiski ģenerētās lapas iezīmes. Visbeidzot, mēs apsvērsim dažas papildu iespējas, kā konfigurēt spymemcached klientus.

Vairāk par Java kešatmiņu vietnē JavaWorld

  • Sīkāku diskusiju par sadalīto kešatmiņu ar Memcached skatiet sadaļā "Servera slodzes līdzsvarošanas arhitektūras, 1. daļa: Transporta līmeņa slodzes līdzsvarošana".
  • Skatiet arī sadaļu "Atvērtā koda Java projekti: Java kešatmiņas sistēma", lai uzzinātu par tradicionālo Java kešatmiņu.

Pārskats par Memcached un Java kešatmiņas arhitektūrām

Java kešatmiņas ietvari, piemēram, EHCache un OSCache, būtībā ir HashMap objekti jūsu lietojumprogrammas kodā. Ikreiz, kad kešatmiņā pievienojat jaunu objektu, tas tiks saglabāts jūsu lietojumprogrammas atmiņā. Šī stratēģija darbojas lieliski, ja glabājat nelielu daudzumu datu, taču tā nedarbojas kešatmiņā, kas pārsniedz dažus gigabaitus (GB). Memcached servera dizaineri izmantoja izplatītu arhitektūras pieeju, kas ļauj veikt sistēmas mērogojamību. Rezultātā jūs varat izmantot Memcached, lai kešatmiņā saglabātu milzīgu datu daudzumu.

Memcached arhitektūra sastāv no diviem gabaliem. Pirmais ir Memcached serveris, kas darbojas pats. Ja vēlaties palielināt lietojumprogrammas mērogu, varat instalēt un palaist Memcached serveri uz citām mašīnām. Memcached servera gadījumi nezina viens otru. Memcached klients, Memcached sistēmas otrais gabals, dara zināt par katru no serveriem. Klients ir atbildīgs par servera uzņemšanu katram kešatmiņas ierakstam un kešatmiņas ieraksta glabāšanu vai iegūšanu - procesu es detalizēti apspriedīšu vēlāk rakstā.

Ja jums ir zināma pieredze darbā ar Java EE tīmekļa lietojumprogrammām, iespējams, ka iepriekš esat izmantojis atvērtā koda Java kešatmiņas sistēmu, piemēram, EHCache vai OSCache. Iespējams, esat izmantojis arī komerciālu kešatmiņas ietvaru, kas piegādāts kā daļa no lietojumprogrammu servera, piemēram, DynaCache (kas tiek piegādāts kopā ar IBM WebSphere Application Server) vai JBoss kešatmiņa (kas piegādā ar JBoss AS). Pirms mēs nokļūstam šīs apmācības praktiskajā mācību daļā, ir svarīgi saprast, kā Memcached atšķiras no šiem tradicionālajiem Java kešatmiņas ietvariem.

Izmantojot tradicionālo Java kešatmiņu

Tradicionālās Java kešatmiņas ietvara izmantošana ir diezgan vienkārša neatkarīgi no tā, vai izvēlaties atvērtā koda vai komerciālu opciju. Atvērtā koda sistēmai, piemēram, EHCache vai OSCache, jums būs jālejupielādē binārie faili un jāpievieno nepieciešamie JAR faili jūsu lietojumprogrammas klases ceļā. Iespējams, jums būs jāizveido arī konfigurācijas fails, kuru izmantosiet, lai konfigurētu kešatmiņas lielumu, diska izlādi utt. Kešatmiņas ietvaram, kas tika piegādāts kopā ar lietojumprogrammu serveri, parasti nevajadzētu lejupielādēt papildu JAR, jo tie būtu saistīti ar programmatūru.

Pēc tam, kad lietojumprogrammā esat pievienojis kešatmiņas ietvara atbalstu, varat sākt to izmantot, izveidojot CacheManager objektu un tajā ievietot un iestatīt kešatmiņas ierakstus. Zem pārsega kešatmiņas sistēma izveidotu CacheManager objekti tajā pašā JVM, kur darbojās jūsu lietojumprogramma. Katru reizi, kad pievienojat kešatmiņas ierakstu, šis objekts tiks pievienots arī kāda veida hashtable, ko uztur kešatmiņas sistēma.

Ja lietojumprogrammu serveris darbojās vairākos mezglos, iespējams, vēlēsities arī atbalstu izplatītajai kešatmiņai. Izplatītā kešatmiņas sistēmā, pievienojot objektu AppServer1 kešatmiņā, šis objekts ir pieejams arī vietnēs AppServer2 un AppServer3. Tradicionālās Java kešatmiņas tiek izmantotas replikācija izplatītai kešatmiņai, kas nozīmē, ka, pievienojot kešatmiņas ierakstu AppServer1, tas tiek automātiski atkārtots pārējos jūsu sistēmas lietotņu serveros. Rezultātā ieraksts būs pieejams visos jūsu mezglos.

Izmantojot Memcached

Lai kešatmiņā izmantotu Memcached, vispirms ir jālejupielādē un jāinstalē Memcached serveris jūsu izvēlētajai platformai. Kad esat instalējis serveri Memcached, tas TCP vai UDP portā klausīsies zvanu kešatmiņu.

Pēc tam jūs lejupielādēsit Java klientu Memcached un pievienosiet klienta JAR jūsu lietojumprogrammai. Pēc tam jūs varat izveidot klienta objektu Memcached un sākt izsaukt tā metodi, lai iegūtu un iestatītu kešatmiņas ierakstus. Kad kešatmiņā pievienojat objektu, Memcached klients paņems šo objektu, serializēs to un nosūtīs baitu masīvu Memcached serverim glabāšanai. Tajā brīdī kešatmiņā saglabātie objekti var būt atkritumi, kas savākti no JVM, kurā darbojas jūsu lietojumprogramma.

Kad jums ir nepieciešams kešatmiņā saglabāts objekts, varat piezvanīt Memcached klientam gūt() metodi. Klients ņems gūt pieprasiet, serializējiet to un nosūtiet to Memcached serverim. Memcached serveris izmantos pieprasījumu, lai meklētu objektu no kešatmiņas. Kad tam ir objekts, tas atgriezīs baitu masīvu atpakaļ Memcached klientam. Pēc tam Memcached klienta objekts paņems baitu masīvu un deserializēs to, lai izveidotu objektu un atgrieztu to jūsu lietojumprogrammā.

Pat ja jūsu lietojumprogramma darbojas vairāk nekā vienā lietojumprogrammu serverī, visi no tiem var norādīt uz to pašu Memcached serveri un izmantot to kešatmiņas ierakstu iegūšanai un iestatīšanai. Ja jums ir vairāki Memcached serveri, serveri nezina viens par otru. Tā vietā jūs konfigurēsit savu Memcached klientu tā, lai tas zinātu visus pieejamos Memcached serverus. Piemēram, ja jūsu lietojumprogramma izveido Java objektu vietnē AppServer1 un izsauc komplekts () Memcached metodi, tad Memcached klients izdomās, uz kuru Memcached serveri šis ieraksts iet. Pēc tam tā sāks sazināties tikai ar šo Memcached serveri. Tāpat, kad mēģina mēģināt jūsu kods pakalpojumā AppServer2 vai AppServer3 gūt ierakstu, Memcached klients vispirms noskaidro, kurā serverī šis ieraksts tiek glabāts, un pēc tam sazināsies tikai ar šo serveri.

Memchached klienta loģika

Pēc noklusējuma konfigurācijā Memcached klients izmanto ļoti vienkāršu loģiku, lai atlasītu serveri saņemšanai vai iestatīšanai. Kad jūs veicat gūt() vai komplekts () zvanu, klients paņem kešatmiņas atslēgu un izsauc to hashCode () metodi, lai iegūtu tādu veselu skaitli kā 11. Pēc tam tiek ņemts šis skaitlis un dalīts ar pieejamo Memcached serveru skaitu, teiksim, divi. Pēc tam tiek ņemta atlikuma vērtība, kas šajā gadījumā ir 1. Kešatmiņas ieraksts tiks novirzīts uz 1. Memcached serveri. Šis vienkāršais algoritms nodrošina, ka Memcached klients katrā no jūsu lietojumprogrammu serveriem vienmēr izvēlas to pašu serveri dotajai kešatmiņas atslēgai.

Instalē Memcached

Memcached darbojas Unix, Linux, Windows un MacOSX. Varat vai nu lejupielādēt Memcached avotu un to kompilēt, vai arī lejupielādēt bināros failus, kurus apkopojis kāds cits, un izmantot tos Memcached instalēšanai. Šeit es iepazīstos ar bināro failu lejupielādes procesu jūsu izvēlētajai platformai; skatiet Resursi, ja vēlaties apkopot no avota.

Šīs instalēšanas instrukcijas ir paredzētas Windows XP 32 bitu mašīnai. Skatiet Resursi, lai instalētu citas platformas, piemēram, Linux. Ņemiet vērā arī to, ka šī raksta koda paraugs tika izstrādāts Windows XP 32 bitu mašīnā, lai gan tam vajadzētu darboties jebkurā citā platformā.

  1. Jellycan kodam ir modificēta Memcached versija, ar kuru ir viegli un efektīvi strādāt. Sāciet šeit, lejupielādējot Win32 bināro ZIP failu
  2. Izvērst Memcached--win32-bin.zip cietajā diskā. Ņemiet vērā, ka viss, kas tajā ir, ir memcached.exe. Izpildiet šo failu, lai palaistu Memcached serveri.
  3. Tagad izpildiet memcached.exe -d instalēt reģistrēt memcached.exe kā pakalpojumu. Pakalpojumu konsoli varēsiet sākt un apturēt Memcached serveri.

CL start / stop

Mēģiniet sākt un apturēt Memcached serveri no komandrindas, nevis no pakalpojumu paneļa. To darot, jūs iegūsiet lielāku elastību izmēģināt dažādas komandrindas opcijas un noskaidrot vislabāko iespējamo konfigurāciju atbilstoši jūsu prasībām.

Kad jūs izpildāt memcached.exe bez komandrindas opcijām pēc noklusējuma Memcached serveris tiks palaists 11211 ostā ar 64 MB atmiņu. Dažos gadījumos, iespējams, vēlēsities precīzāk kontrolēt konfigurāciju. Piemēram, pieņemsim, ka portu 11211 izmanto kāds cits process jūsu datorā, un jūs vēlaties, lai Memcached serveris izmantotu portu 12000; vai ja jūs palaidāt Memcached serveri kvalitātes nodrošināšanas vai ražošanas vidē, vēlaties tam piešķirt vairāk atmiņas nekā noklusējuma 64 MB. Šādos gadījumos servera uzvedības pielāgošanai varat izmantot komandrindas opcijas. Izpildot memcache.exe -palīdzība komanda dos pilnu komandrindas opciju sarakstu, piemēram, tās, kas parādītas 3. attēlā.

Sazinieties ar Memcached, izmantojot Telnet

Pēc Memcached servera palaišanas tas klausās portā, kuram esat to piešķīris. Memcached klients izveido savienojumu ar serveri TCP vai UDP portā, sūta komandas un saņem atbildes un galu galā aizver savienojumu. (Sīkāku informāciju par protokolu, ko klients izmanto saziņai ar serveri, skatiet sadaļā Resursi.)

Varat izveidot savienojumu ar savu Memcached serveri dažādos veidos. Ja izmantojat Java klientu, kā mēs to darīsim šīs apmācības otrajā pusē, varēsiet piekļūt vienkāršai API objektu glabāšanai un iegūšanai no kešatmiņas. Varat arī izmantot Telnet klientu, lai izveidotu tiešu savienojumu ar serveri. Java klienta atkļūdošanai ir svarīgi zināt, kā izmantot Telnet klientu, lai sazinātos ar Memcached serveri, tāpēc mēs sāksim ar to.

Telnet komandas

Vispirms jums būs jāizmanto izvēlētais Telnet klients, lai izveidotu savienojumu ar Memcached serveri. Windows XP datorā jūs varat vienkārši izpildīt telnet localhost 11211 pieņemot, ka Memcached serveris darbojas tajā pašā mašīnā un klausās noklusējuma 11211 portā. Darbam ar Memcached, izmantojot Telnet, ir nepieciešamas šādas komandas:

  • komplekts pievieno jaunu vienumu kešatmiņā. Zvans ir: Iestatiet . Varat ierakstīt faktisko vērtību, kas jāsaglabā nākamajā rindā. Ja nevēlaties, lai kešatmiņas ieraksts beigtos, kā vērtību ievadiet 0.
  • gūt atgriež kešatmiņas atslēgas vērtību. Izmantot gūt lai iegūtu vērtību keyName.
  • pievienot pievieno jaunu atslēgu tikai tad, ja tās vēl nav. Piemēram: pievienot
  • aizvietot aizstās vērtību tikai tad, ja atslēga pastāv. Piemēram: aizvietot
  • dzēst izdzēš atslēgas kešatmiņas ierakstu. Jūs varat izmantot zvanu dzēst lai izdzēstu keyName.

4. attēlā redzamais ekrāns parāda mijiedarbības paraugu ar Memcached serveri, izmantojot Telnet. Kā redzat, Memcached serveris sniedz atsauksmes par katru komandu, piemēram, UZGLABĀTS, NOT_STORED, un tā tālāk.

Secinājums par 1. daļu

Līdz šim mēs īsi apspriedām atšķirības starp Memcached izplatīto arhitektūru un tradicionālākajām Java kešatmiņas sistēmām. Jūsu izstrādes vidē mēs esam izveidojuši arī Memcached ieviešanu, un jūs esat praktizējis savienojumu ar Memcached, izmantojot Telnet. Šīs apmācības nākamajā daļā mēs izmantosim Java klientu spymemcached, lai iestatītu izplatītu kešatmiņas risinājumu Java lietojumprogrammas paraugam. Šajā procesā jūs uzzināsiet daudz vairāk par Memcached un to, kā tas var uzlabot jūsu Java EE lietojumprogrammu veiktspēju.

Sunils Patils ir Java EE arhitekts, kurš strādā Avnet Technology uzņēmumā Sanfrancisko, Kalifornijā. Viņš ir grāmatas autors Java portletes 101 (SourceBeat, 2007. gada aprīlis) un ir uzrakstījis daudz rakstu, ko publicējuši JavaWorld, IBM developerWorks un O'Reilly Media. Papildus tam, ka viņš ir IBM sertificēts WebSphere Portal Server lietojumprogrammu izstrādātājs un administrators, viņš ir arī Sun Microsystems sertificēts Java programmētājs, tīmekļa komponentu izstrādātājs un biznesa komponentu izstrādātājs. Sunila emuāru varat apskatīt vietnē //www.webspherenotes.com.

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