CORBA services: Navngiving og trading INF5040 Foreleser: Olav Lysne Ifi/UiO 1 To design spørsmål Navngiving ressursdeling krever globale lokasjonsuavhengige navn på ressurser og objekter hvordan konstruere navngivingsskjema som skalerer i tilstrekkelig grad og som tillater effektiv avbildning fra navn til lokasjon? Trading tjenester har behov for kunder hvordan publisere tjenster og hvordan kan klienter finne relevante tjenester (som de kanskje ikke vet navnet på)? Ett svar: GULE SIDER Ifi/UiO 2
Litteratur Navngiving Coulouris et al, chap. 9 ORBACUS manual, chap. 9 Trading ORBACUS manual, chap 14 Tutorial on ODP trading function Ifi/UiO 3 Navngiving En prosess som krever adgang til et objekt eller en ressurs som den ikke forvalter, må eie et navn eller en identifikator til objektet/ressursen Objektets/Ressursens navn er grunnlaget for å lokalisere objektet Lokalisering: avbilde navnet til en kommunikasjonsidentifikator (f.eks. IP adresse/port, eller ObjektRef.) Design valg for navn i DS: navnerom (endelig/uendelig, flatt/hierarkisk) metode for lokalisering av ressurs fra dens navn Ifi/UiO 4
Lokalisere ressurs fra navn Lokasjon kodet i navnet Distribuert navnetjener Cache/broadcast Forover pekere Kombinasjoner av metodene over Internet Domain Naming Service distribuert navnetjener (inkl. replikering) caching Ifi/UiO 5 Noen begreper Binding assosiasjon mellom et navn og et objekt tjenste-spesifikke navn bindes til et objekt eller ressurs tjeneste-uavhengige navn bindes til attributter om det navngitte objekt Navneoppklaring finne attributtene assosiert med et navn (look_up) Ifi/UiO 6
Noen begreper II Attributt-verdi: primitiv (f.eks. Ethernet adresse) navn (som igjen er bundet til et objekt eller en ressurs) Bruker-attributter e-post adresse, login navn, passord, hjemmekatalog, Datamaskin-attributter fysisk adresse, arkitektur, type operativsystem, Tjeneste-attributter versjon, aksess-protokoll, Ifi/UiO 7 Navnetjeneste Database av bindinger mellom tekstlige navn og objekt-attributter look_up : navn attributter Ifi/UiO 8
Krav til global navnetjeneste Skalerbarhet effektiv handtering av vilkårlig store mengder navn betjene vilkårlig antall administrative domener Lang levetid => må kunne absorbere endringer i navnerommets organisering Høy tilgjengelighet de fleste andre systemer avhenger av navnetjenesten Feilisolering lokale feil må ikke medføre total feiling av navnetjenesten Toleranse for mistro ikke gjøre systemet avhengig av en eneste komponent som alle klienter må stole på Ifi/UiO 9 DNS Domain Name Service Navnetjenesten på Internettet Brukes i all hovedsak til å oversette maskinnavn (smtp.ifi.uio.no) til IP-adresser (128.64.28.01). Fra en mailadresse å finne en maskin som kan håndtere mail for det gitte domenet. Kan også oversette IP-adresser til maskinnavn fra et maskinnavn finne maskinarkitektur of OS-type Velkjente tjenester - hvilke tjenester tilbys av en maskin (f. eks telnet, FTP) Ifi/UiO 10
DNS Navnerom hierarkisk (jfr. krav om skalerbarhet) navnesyntaks: <navnekomponent>(. <navnekomponent>)* ifi.uio.no www.yahoo.com Domener avsluttende del av et navn uio.no.com identifiserer et domene -- en samling av navn med samme suffix Ifi/UiO 11 DNS Navnerom II Alias Samme maskin kan ha flere navn Dette er praktisk for lokasjonstransparens (jfr. www.ifi.uio.no). Hierarkisk oppdelt navnene deles mellom høyere-nivå domener. Disse motsvarer gjerne (men ikke nødvendigvis) forskjellige geografiske områder (no), samfunnsområder (com, gov) eller institusjoner og bedrifter (vg.no, ifi.uio.no). hvert domene er assosiert med et suffix uio.no purdue.edu administratorer kan fritt binde navn med sine respektive assosierte suffix en ifi administrator kan binde navn med suffix ifi.uio.no en.com administrator kan binde navn med suffix com Ifi/UiO 12
Navnetjenere DNS partisjonerer navnedatabasen over flere soner hver navnetjener lagrer data for et eller flere subtrær av navnerommetsamtnavnetpårotkatalogeni hvertsubtre com no edu de... yahoo stepstone... vg uio... ifi fys... Ifi/UiO 13 DNS Datatyper Abstraksjon DNS lagrer records på formen <navn, TTL, klasse, type,verdi> Domene navn TTL klasse type verdi www 1D IN CNAME digre digre 1D IN A 128.101.57.3 Domenenavnene tolkes innenfor en gitt sone Ifi/UiO 14
DNS Skalerbarhet og navigering Skalerbare domain navnetjenere replikering & caching av deler lokalisert til steder de benyttes ofte f.eks. domener nært roten er ofte replikert (jfr. hot-spots) hver tjener lagrer domenenavn og adresser til andre tjenere som kan oppklare navn som er utenfor tjenerens domene Navigering iterativ og rekursiv iterativ: spør en tjener først, som deretter gir deg beskjed om hvilken tjener du bør spørre i stedet rekursiv: tjenerne i de forskjellige sonene kaller hverandre direkte for å oppklare navn Ifi/UiO 15 Andre eksempler på navnetjenester DECs Global Name Service (GNS) X.500 Directory Service CORBA Naming Service Ifi/UiO 16
CORBA Navnetjeneste Tillater objekter å lokalisere andre objekter ved deres navn Kan innkapsle kjente eksisterende navnetjenersystemer prøver å generalisere disse slik at de kan benyttes til å implementere CORBA navnetjeneste Navnerom hierarkisk Ifi/UiO 17 CORBA Navnetjeneste II Hierarkisk navnerom Feriesteder Global katalog Spaina Hellas Kypros Saga Club Med Katalog Playa ResortInn BA operasjoner inkluderer: void bind(in Name n, in Object obj); Object resolve(in Name n); AlcuidaBeach kontekst objektnavn Ifi/UiO 18
CORBA Navn Feriested Spania Club Med Alcudia Beach Kontekst navn Kontekst navn Kontekst navn Enkelt navn sammensatte objektnavn: består av ett eller flere komponentnavn (betegner kontekster) og et enkelt navn enkelt navn: value-kind par value attributtet brukes til å oppklare navn kind attributtet brukes til å lagre info om rollen til objektet brukes på en applikasjonsspesifikk måte for å gi mer info om semnatikken til objektet som er bundet til navnet Ifi/UiO 19 IDL typer for navn module CosNaming { typedef string Istring; struct NameComponent { Istring id; Istring kind; }; typedef sequence <NameComponent> Name;... }; Ifi/UiO 20
IDL grensesnitt NamingService er spesifisert ved to IDL grensesnitt: NamingContext definerer operasjoner for å binde objekter til navn og oppklare navnebindinger. BindingIterator definerer operasjoner for å iterere over en mengde navn som er definert i en navnekontekst. Ifi/UiO 21 Utdrag av NamingContext grensesnitt interface NamingContext { void bind(in Name n, in Object obj) raises (NotFound,...); Object resolve(in Name n) raises (NotFound,CannotProceed,...); void unbind (in Name n) raises (NotFound, CannotProceed...); NamingContext new_context(); NamingContext bind_new_context(in Name n) raises (NotFound,...) void list(in unsigned long how_many, out BindingList bl, out BindingIterator bi); }; Ifi/UiO 22
Utdrag av BindingIterator grensesnitt interface BindingIterator { boolean next_one(out Binding b); boolean next_n(in unsigned long how_many, out BindingList bl); void destroy(); } Ifi/UiO 23 Hvordan oppstår det første navn? OMG har standardisert en del tjenstenavn, inklusive NameService TradingService POA metode: Object resolve_initial_reference(in ObjectId identifier) Eksempel på bruk: obj = orb.resolve_initial_reference( NameService ) Se og ORBacus manual kap. 4 og 6. Ifi/UiO 24
Begrensinger Begrensninger ved navngiving: klienten må alltid identifisere tjeneren ved navn Passer ikke hvis klienten kun ønsker å bruke en tjeneste med en viss kvalitet men vet ikke fra hvem Video on demand lokalisere tjeneren som har tittelen og til best pris Elektronisk handel aksjehandel: lokalisere børs med beste tilbud Mange situasjoner der tjeneren ikke kan/bør lokaliseres basert på navn men snarere basert på kvalitative egenskaper Ifi/UiO 25 Trading Lokalisere tjenester ut fra deres egenskaper interface type andre attributter (tjenestekvalitet m.m.) Ifi/UiO 26
Motivasjon Lokalisere objekter på en lokasjonstransparent måte Navngiving er enkel med passer ikke når klienter ikke kjenner tjeneren det er flere tjenere å velge mellom Trading understøtter lokalisering av tjenere basert på tjener funksjonalitet og kvalitet Navngiving hvite sider Trading gule sider Ifi/UiO 27 ODP/CORBA Trader En objekt-tjeneste (database) som dynamisk kan koble tjeneste-behov med tjeneste-tilbud (sein binding) Eksportør et objekt som tilbyr tjenester Importør et objekt som har behov for tjenester Trader Importør ORB 2 Importer tjeneste ORB Eksporter tjeneste 1 Eksportør ORB 3 Anrop tjeneste Ifi/UiO 28
Trading karakteristika Felles spåk mellom klient og tjener tjeneste type tjenestekvalitet (QoS) Tjeneren registrerer tjenester hos traderen Tjeneren definerer tjenestekvalitet med garantier: statisk QoS definisjon dynamisk QoS definisjon Ifi/UiO 29 Trading karakteristika Klienten spør traderen om en tjeneste av en bestemt type på et visst kvalitetsnivå Traderen understøtter service matching service shopping Ifi/UiO 30
Eksempel Hongkong Telecom video-on-demand tjener Server MGM Warner Video-ondemand provider Trader User Independent Ifi/UiO 31 Trading prosessen Eksempel: video-on-demand tjener :Client query() :Trader MGM:VoDS export() export() Warner:VoDS download() modify() Ifi/UiO 32
Definisjon av tjenestetype Tjenestetype funksjonalitet som tilbys av en tjeneste og tjenestekvaliteten som tilbys Funksjonalitet defineres ved objekt type (grensnitt type) Tjenestekvalitet er basert på attributterer ( properties ): egenskapsnavn egensskapstype egenskapsverdi(er) statisk tjeneste-egenskap (f.eks. skriverhastighet) dynamisk tjeneste-egenskap (f.eks. kø-lengde til skriver) egenskapsmodus (obligatorisk/valgfri, immutabel/mutabel) Ifi/UiO 33 Eksempel tjenestetype typedef enum {VGA,SVGA,XGA} Resolution; service video_on_demand { interface VideoServer; readonly mandatory property float fee; readonly mandatory property Resolution res; modifiable optional property float bandwidth; } Ifi/UiO 34
Tjenestetype hierarki En objekt type kan ha flere implementasjoner med forskjellige QoS. Samme objekt type kan brukes i forskjellige tjenestetyper. Tjenestetype S er en subtype til tjenestetype S hviss objekt type til S er identisk med eller er en subtype til objekt type til S S har minst alle QoS egenskaper som er definert for S Subtype relasjonen kan utnyttes av traderen for mer fleksibel utvelgelse av tjenestetilbud (service matching) Ifi/UiO 35 Eksport av tjenestetilbud navn på tjenestetype identifiserer en tjenestetype (interfacetype & egenskapstyper) objekt/interface referanse referer tjenestetilbudet mengde tilbudte tjeneste-egenskaper Ifi/UiO 36
Import av tjenestetilbud Importør spesifiserer tjenestebehov ved: Tjenesteadferd navn på tjenestetype begrensende egenskapsuttrykk (property matching constraint) boolsk uttrykk i et constraint språk evalueres over tjenesteegenskaper PrinterType = laser AND Cost_per_Page < NOK10.00 Utvelgelseskriterium utvalgskriterium når flere tjenestetilbud oppfyller kravene minimize(cost_per_page) Ifi/UiO 37 Trading policies Avhengig av constraint uttrykk og mengden tilgjengelig tjenester, kan resultatet av en import-spørring bli svært mange tjenestetilbud Trading policies brukes til å begrense størrelsen på søkeresultatet spesifikasjon av hvordan søket skal gjennomføres ved føderasjoner av tradere kan begrense antall trader-lenker som skal følges (hop-count) eller hvilken trader søket skal starte i maks. antall tilbud som kan returneres m.m. Ifi/UiO 38
Trader føderasjoner Skalerbarhet krever føderasjoner av tradere En trader deltar i en føderasjon ved å tilby tjenestene den kjenner til andre tradere videresender importspørringer den ikke selv kan tilfredsstille til andre andre tradere. Ifi/UiO 39 CORBA Trading service Application Objects Domain Interfaces CORBA facilities Object Request Broker CORBAservices Object Trader Ifi/UiO 40
Definisjon av tjenestekvalitet typedef Istring PropertyName; typedef sequence<propertyname> PropertyNameSeq; typedef any PropertyValue; struct Property { PropertyName name; PropertyValue value; }; typedef sequence<property> PropertySeq; Ifi/UiO 41 Trader interface for eksportører interface Register { OfferId export(in Object reference, in ServiceTypeName type, in PropertySeq properties) raises(...); OfferId withdraw(in OfferId id) raises(...); void modify(in OfferId id, in PropertyNameSeq del_list, in PropertySeq modify_list) raises (...); }; Ifi/UiO 42
Trader interface for importører interface Lookup { void query(in ServiceTypeName type, in Constraint const, in Preference pref, in PolicySeq policies, in SpecifiedProps desired_props, in unsigned long how_many, out OfferSeq offers, out OfferIterator offer_itr, out PolicyNameSeq Limits_applied) raises (...); }; Ifi/UiO 43 Trader interaksjoner Eksportør Importør 2 1 3 Type repository 1a 2a 3a Trader 1: Tjenesteeksport 1a: sjekker med type repository om tjeneste-eksport er gyldig 2: Tjensteimport 2a: sjekker med type repository om gyldig importanrop 3: returnerer tjenestetilbud som oppfyller importbehovet 3a: trader innhenter alle tjenestetyper som er subtyper med typen i importanropet Ifi/UiO 44