Programmēšana

Atbrīvojiet vietu JavaSpaces 1. daļai

Šis raksts sāk otro rakstu Jinioloģija sērija. Jūnijā Bils Venners sāka darbu Jinioloģija ar pārskatu par Jini tehnoloģiju - jaudīgu jaunu infrastruktūru izplatītu sistēmu izveidei un ieviešanai, kas tiek organizētas kā pakalpojumu federācijas. Šis pavediens, kas šajā slejā tiks parādīts katru otro mēnesi, ir koncentrēts uz JavaSpaces, Jini pamatpakalpojums no Sun Microsystems, kas nodrošina augsta līmeņa līdzekļus sadarbības un izplatītu lietojumprogrammu radīšanai. Ja jūs veidojat lietojumprogrammas kopā ar Jini, jūs vēlēsities zināt, kā izmantot JavaSpaces, lai koordinētu dalībniekus Jini federācijā. Bet ir arī svarīgi atcerēties, ka JavaSpaces varat izmantot atsevišķi no Jini kā rīku vispārēju izplatītu sistēmu izveidošanai Java. Jebkurā gadījumā JavaSpaces ir vērts apskatīt, jo tas var ievērojami atvieglot izplatīto lietojumprogrammu dizainu un kodēšanu.

Atbrīvojiet vietu JavaSpaces: izlasiet visu sēriju!

  • 1. daļa. Vienkārša izplatīto lietotņu izstrāde ar JavaSpaces
  • 2. daļa. Izveidojiet skaitļošanas serveri ar JavaSpaces
  • 3. daļa. Koordinējiet savas Jini lietotnes ar JavaSpaces
  • 4. daļa. Izpētiet Jini darījumus ar JavaSpaces
  • 5. daļa. Padariet savu skaitļošanas serveri izturīgu un pielāgojamu

Šajā sērijā mēs vispirms iepazīstināsim jūs ar unikālo JavaSpaces programmēšanas modeli, kas ir diezgan atšķirīgs no citiem tīkla un izplatītiem rīkiem, kas jums varētu būt pazīstami. Turpmākajos rakstos mēs aplūkosim sīkāku informāciju par JavaSpaces API un to, kā jūs varat to izmantot, lai salīmētu procesus sadalītā lietojumprogrammā, un aprakstīsim, kā JavaSpaces mijiedarbojas ar citiem Jini komponentiem. Visā sērijā jūs redzēsiet, ka JavaSpaces ir vienkāršs (API sastāv tikai no nedaudzām darbībām), izteiksmīgs (lielu skaitu problēmu var atrisināt, izmantojot JavaSpaces) un spēcīgs (jūs varat izveidot sarežģītas sadalītas sistēmas ar nelielu daudzumu JavaSpaces koda).

Sāksim.

Jauns izplatīts skaitļošanas modelis

Izplatītu lietojumprogrammu veidošana ar parastiem tīkla rīkiem parasti nozīmē ziņojumu pārsūtīšanu starp procesiem vai metožu izsaukšanu uz attāliem objektiem. JavaSpaces lietojumprogrammās turpretī procesi nesazinās tieši, bet gan koordinē savas darbības, apmainot objektus caur a telpa, vai koplietojamo atmiņu. Process var rakstīt jauni objekti telpā, ņemt objekti no kosmosa vai lasīt (izveidot kopiju) objektus telpā; 1. attēlā ir parādīti vairāki procesi (ko pārstāv Dukes), kas mijiedarbojas ar atstarpēm, izmantojot šīs darbības. Paņemot vai lasot objektus, procesi izmanto vienkāršu atbilstību, pamatojoties uz lauku vērtībām, lai atrastu viņiem nozīmīgos objektus. Ja atbilstošs objekts netiek atrasts uzreiz, process var gaidīt, līdz kāds ieradīsies. JavaSpaces, atšķirībā no parastajiem objektu veikaliem, procesi nemodificē objektus telpā vai tieši atsaucas uz to metodēm - turpretī objekti ir tikai pasīvi dati. Lai modificētu objektu, procesam tas ir skaidri jānoņem, jāatjaunina un no jauna jāievieto telpā.

Spaces ir objektu veikali ar vairākām svarīgām īpašībām, kas palīdz padarīt JavaSpaces par spēcīgu, izteiksmīgu rīku. Apskatīsim tuvāk:

  • Vietas tiek koplietotas: Daudzi attāli procesi vienlaikus var mijiedarboties ar telpu - telpa pati apstrādā vienlaicīgas piekļuves detaļas, ļaujot jums koncentrēties uz augsta līmeņa protokolu dizainu starp jūsu procesiem.

  • Atstarpes ir noturīgas: Atstarpes nodrošina objektu drošu glabāšanu. Uzglabājot objektu telpā, tas tur paliks bezgalīgi, līdz tiks noņemts. Jūs varat arī pieprasīt a Nomas laiks kura laikā objekts jāuzglabā. Kad objekts tiks uzglabāts telpā, tas paliks tur, līdz būs beidzies tā nomas laiks (kuru var atjaunot) vai līdz brīdim, kad process to skaidri noņem. Vēlāk šajā sērijā mēs apspriedīsim īres līgumus.

  • Telpas ir asociatīvas: Objekti telpā atrodas caur asociatīva meklēšana, nevis pēc atmiņas vietas vai identifikatora. Asociatīvā uzmeklēšana nodrošina vienkāršu veidu, kā atrast interesējošos objektus atbilstoši to saturam, nezinot, kā objekts tiek saukts, kas to izveidojis vai kur tas tiek glabāts. Lai meklētu objektu, jūs izveidojat veidne (objekts, kura dažiem vai visiem laukiem ir iestatītas noteiktas vērtības, bet pārējie atstāti kā nulle darboties kā aizstājējzīmes). Objekts telpā atbilst veidnei, ja tas precīzi atbilst veidnes norādītajiem laukiem. Jūs redzēsiet, ka, izmantojot asociatīvo meklēšanu, jūs varat viegli izteikt vaicājumus par objektiem, piemēram, "Vai ir kādi uzdevumi, ko aprēķināt?" vai "Vai ir kādas atbildes uz galveno faktoru, kuru es prasīju?"

  • Telpas ir drošas darījumos: JavaSpaces izmanto Jini transakciju pakalpojumu, lai nodrošinātu, ka operācija telpā ir atomu (vai nu operācija tiek piemērota, vai arī tā nav). Darījumi tiek atbalstīti atsevišķām operācijām vienā telpā, kā arī vairākām operācijām vienā vai vairākās atstarpēs (vai nu visas darbības tiek piemērotas, vai neviena no tām nav). Kā redzēsit vēlāk sērijā, darījumi ir svarīgs veids, kā tikt galā ar daļēju neveiksmi.

  • Izmantojot atstarpes, varat apmainīties ar izpildāmo saturu: Atrodoties telpā, objekti ir tikai pasīvi dati - jūs nevarat tos modificēt vai atsaukties uz viņu metodēm. Tomēr, lasot vai paņemot objektu no vietas, tiek izveidota objekta lokāla kopija. Tāpat kā ar jebkuru citu lokālu objektu, jūs varat modificēt tā publiskos laukus un atsaukties uz tā metodēm, pat ja jūs nekad iepriekš neesat redzējis tādu objektu. Šī spēja nodrošina spēcīgu mehānismu, kā paplašināt lietojumprogrammu darbību caur atstarpi.

Kamēr šī sērija attīstās, mēs parādīsim, kā šīm īpašībām ir galvenā loma, ļaujot jums izveidot izplatītas lietojumprogrammas, kas labi darbojas Jini vidē, kur tīklošana bieži notiek spontāni, un procesi dinamiski pievienojas un atstāj aprēķinu, dažreiz ierīces vai citu iemeslu dēļ. tīkla kļūda.

JavaSpaces izcelsme

Mēs esam aprakstījuši JavaSpaces kā jaunu izplatītu skaitļošanas modeli, taču tā pirmsākumi meklējami Jeila universitātē 1980. gadu sākumā. Tur doktors Deivids Gelerners izstrādāja rīku ar nosaukumu Linda izplatītu lietojumprogrammu izveidošanai. Linda sastāv no neliela skaita darbību apvienojumā ar pastāvīgu veikalu ar nosaukumu a dubultā vieta. Šīs darbības ir ortogonālas jebkurai konkrētai programmēšanas valodai; tie ir daļa no koordinācijas valoda ko var pievienot jebkuram citam skaitļošanas valoda. Linda pētījuma rezultāts bija pārsteidzošs: izmantojot objektu krātuvi kopā ar nelielu skaitu vienkāršu darbību, jūs viegli varat īstenot lielu paralēlu un sadalītu problēmu klasi, izmantojot paņēmienus, kas atvieglo daudzas tīkla tīklu veidošanas nepilnības. Citiem vārdiem sakot, uz kosmosu balstītas sistēmas ir ne tikai vienkāršas (tām nepieciešamas tikai dažas operācijas), bet arī izteiksmīgas (labi piemērotas daudzu izplatītu problēmu risināšanai).

Dr. Gelerntera darbs iedvesmoja Sun JavaSpaces pakalpojumu, kā arī ietekmēja Jini pamattehnoloģijas uzmeklēšanas un atklāšanas komponentu dizainu (ko jūs redzēsiet kā Jinioloģija sērija progresē). Kamēr JavaSpaces mantoja kosmosa modeli no Lindas, JavaSpaces dizaineri modeli ir būtiski atjauninājuši, izmantojot Java objektu, Jini, RMI un objektu sērijas iespējas.

JavaSpaces kontekstā

Mūsu līdzšinējais apraksts ir bijis nedaudz abstrakts, tāpēc ņemsim vērā dažus reālu izplatītu lietojumprogrammu piemērus, kurus varat modelēt kā procesus, kas apmaina objektus caur atstarpēm.

Tērzēšanas sistēmas

Apsveriet vienkāršu daudzlietotāju tērzēšanas sistēmu, kurā telpa kalpo kā tērzēšanas zona, kurā ir visi ziņojumi, kas veido diskusiju. Lai sarunātos, dalībnieks telpā ievieto ziņojumu objektus. Visi tērzēšanas dalībnieki gaida jaunu ziņojumu objektu parādīšanos, tos lasa un parāda to saturu. Vēlā ierašanās var pārbaudīt esošos ziņojumu objektus telpā, lai pārskatītu iepriekšējo diskusiju. Faktiski, tā kā telpa ir noturīga, jauns dalībnieks var apskatīt diskusiju ilgi pēc tam, kad visi pārējie ir aizgājuši, un dalībnieki var pat atgriezties daudz vēlāk, lai turpinātu sarunu tur, kur viņi pārtrauca. Tērzēšanas dalībnieku sarakstu var glabāt arī telpā un atjaunināt ikreiz, kad kāds pievienojas sarunai vai pamet to.

Aprēķināt serverus

Tagad apsveriet reāllaika radioteleskopa datu analīzi par ārpuszemes dzīves pazīmēm (līdzīgi kā to dara SETI @ home projekts). Šādi dati ir apjomīgi, un to analizēšana ir skaitļošanas ziņā intensīvs darbs, kas ir piemērots paralēlai skaitļošanai ar datoru tīkla - citiem vārdiem sakot, "skaitļošanas servera" starpniecību. Izmantojot JavaSpaces tehnoloģiju, telpā tiek ierakstīta virkne uzdevumu, piemēram, viens uzdevums katram datu gabalam, kas jāanalizē. Katrs iesaistītais dators meklē uzdevuma vietu, noņem to, pabeidz nepieciešamo skaitļošanas darbu, atgriež rezultātu atpakaļ telpā un pēc tam turpina meklēt vairāk uzdevumu. Šī pieeja mērogojas dabiski: tā darbojas tāpat kā neatkarīgi no tā, vai ir pieejami 10 vai 1000 datori. Pieeja nodrošina arī dabisku slodzes līdzsvarošana, tā kā katrs darba ņēmējs uzņem tieši tik daudz darba, cik var paveikt noteiktā laikā, lēniem datoriem veicot mazāku darbu, bet ātriem - vairāk.

Brokeru sistēmas

Kā trešo piemēru aplūkosim tiešsaistes izsoles sistēmu, kas apvieno preču un pakalpojumu pircējus un pārdevējus. Pieņemsim, ka jūs kā potenciāls pircējs aprakstiet preci (piemēram, automašīnu), kuru vēlaties iegādāties, un cenu, kuru esat gatavs maksāt, iesaiņojiet informāciju ierakstā un uzrakstiet iegūto pirkt pirkumu ierakstu uz atstarpi. Tajā pašā laikā potenciālie pārdevēji pastāvīgi uzrauga vietu, kur ierasties vēlamo pirkumu ieraksti, kas atbilst viņu krājumā esošajām precēm. Piemēram, Mazda dīleri uzrauga vietu ierakstiem, kas raksturo Mazdas, savukārt lietotu automašīnu tirgotāji uzrauga vietu visiem lietotu automašīnu pieprasījumiem. Kad tiek atrasts un nolasīts atbilstošs pieprasījums, potenciālais pārdevējs telpā ieraksta piedāvājuma ierakstu, norādot piedāvājuma cenu. Kā potenciāls pircējs jūs pastāvīgi uzraugāt vietu, kur ir piedāvājumi par jūsu neizpildītajiem pieprasījumiem, un, atrodot pieņemamu piedāvājumu, jūs noņemat cenas un sazinieties ar pārdevēju (iespējams, izmantojot citu vietu).

Īss API pārskats

Tagad ir pienācis laiks ieviest JavaSpaces API. Kā mēs jau teicām, tas ir vienkārši; Patiesībā šī raksta atlikušajā daļā mēs aplūkosim visu, kas jums par to jāzina (izņemot dažas sīkākas detaļas). Tomēr, pirms mēs aprakstām JavaSpace saskarni un tās metodēm, vispirms ir jārunā par ierakstiem.

Ieraksti

Objektu, kas tiek uzglabāts telpā, sauc par

ieraksts.

Lai objekts būtu ieraksts, tam vienkārši jāievieš

Ieraksts

interfeiss. Piemēram, definēsim ziņojuma ierakstu, kuru varat ierakstīt atstarpē:

importēt net.jini.core.entry.Entry;

public class Ziņojums realizē ierakstu {public String content;

// bez argumenta konstruktora publisks ziņojums () {}}

Šeit mēs esam definējuši Ziņojums klase ar virknes lauku, kurā glabājas ziņojuma saturs. Tā kā mēs vēlamies izmantot šo klasi ar atstarpēm, mums jāievieš saskarne net.jini.core.entry.Entry, kas atrodams iepakojumā net.jini.core.entry. Ir svarīgi to norādīt Ieraksts ir marķiera saskarne; citiem vārdiem sakot, saskarne nesatur konstantes vai metodes, un tāpēc tās īstenošanai nav nepieciešams īpašs darbs, izņemot pievienošanu īsteno ierakstu atbilstoši jūsu klases definīcijai.

Papildus programmas ieviešanai Ieraksts saskarnē, ir vēl dažas konvencijas, kas jāievēro mūsu ierakstiem. Mums būs vairāk ko teikt par iemesliem turpmākajos rakstos, bet pagaidām mēs tikai aplūkosim vispārīgās aprises. Ierakstam jābūt publiskam konstruktoram, kurā nav argumentu (tā sauktais nē-arg konstruktors); šī prasība izriet no pamatā esošās sērijas, kas rodas, kad ieraksti tiek pārvietoti uz atstarpēm un ārpus tām. Ņemiet vērā, ka mūsu definīcija Ziņojums satur no-arg konstruktoru. Vēl viena konvencija ir tāda, ka ir jādeklarē ieraksta lauki publiski; tas ļauj citiem procesiem atrast jūsu ierakstus atstarpēs, izmantojot asociatīvu meklēšanu, pamatojoties uz šo lauku vērtībām. Trešā konvencija ir tāda, ka ieraksta laukos ir jābūt atsaucēm uz objektiem, nevis primitīviem tipiem (tas ir, ja jums ir jādefinē primitīva tipa lauks, piemēram, int, jums jāizmanto atbilstošā iesaiņojuma klase Vesels skaitlis tā vietā). Lai pārliecinātos, ka, definējot ierakstus, jūs aptverat visas savas bāzes, iesakām atsaukties uz to JavaSpaces principi, modeļi un prakse,vai uz Sun Microsystems JavaSpaces specifikāciju, lai iegūtu sīkāku informāciju. Mēs arī, kā minēts, pieskarīsimies dažiem sīkākiem punktiem turpmākajos rakstos.

Izņemot šīs prasības, ieraksts ir kā jebkura cita Java klase; jūs varat to instancēt, izmantot tās metodes un piešķirt vērtības tā publiskajiem laukiem. Tagad, kad mēs esam definējuši a Ziņojums ierakstu klase, apskatīsim, kādas operācijas ir pieejamas mijiedarbībai ar ierakstiem atstarpēs.

JavaSpace saskarne

Lai mijiedarbotos ar atstarpi, jums jāiegūst piekļuve objektam, kas īsteno JavaSpace interfeiss. Ir daudzi veidi, kā iegūt piekļuvi šādam objektam (varat, piemēram, izmantot Jini uzmeklēšanu vai RMI reģistru), un sīkāku informāciju par to darīsim nākamajā rakstā. Pagaidām mēs koncentrēsimies uz JavaSpace pati saskarne.

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