Den första föreläsningen ger en introduktion till kursen och distribuerade system. Under introduktionen kommer jag bland annat att ta upp kursplanen, reflektioner på fjolårets kurs och upplägget för årets kurs. Vidare kommer vi att diskutera vad ett distribuerat system egentligen är, beskriva några av de konsekvenser som ett sådant system medför, gå igenom vilka utmaningar som finns för systemet, samt titta på olika systemmodeller. Slutligen tar vi en titt på generella aspekter av middleware. Dessutom ska ni alla registreras på kursen.

Ett distribuerat system består oftast av många olika delar som är geografiskt spridda och kommunicerar över olika former av kommunikationskanaler. Konsekvenser av ett sådant system är bland annat att saker kan hända på flera ställen exakt samtidigt, att det inte finns någon exakt uppfattning om tid och att självständiga fel kan uppstå. Det är viktigt att ta hänsyn till dessa konsekvenser vid design och implementation av distribuerade system.

Nyckelkarakteristika för ett distribuerat system kan sammanfattas i några punkter som väl beskriver de ingående beståndsdelarna, påvisar en del av problematiken samt ger en grund för klassificering och analys av olika system.

Heterogenitet - Heterogeneity
Det finns många olika typer av nätverk, hårdvara, mjukvara, programvaruspråk och implementerare. Ett bra designat system tar hänsyn till det.

Öppenhet - Openness
En öppen arkitektur, både vad gäller hård- och mjukvara, är önskvärd för att det ska vara lätt att utöka och uppdatera systemet. Det är även viktigt att systemets gränsytor och protokoll är välspecificerade och publicerade.

Säkerhet - Security
Ett öppet distribuerat system erbjuder många fler attackmöjligheter än ett stängt centraliserat system. Integritet, konfidentialitet och tillgänglighet är tjänster som ett säkert distribuerat system ska tillhandahålla.

Skalbarhet - Scalability
Ett systems förmåga att med bibehållen eller ökad prestanda kunna utökas i storlek är ett problem som är svårt att lösa. Att uppnå skalbarhet ställer en hel del krav och begränsningar på designen av systemen, men är av största vikt för att få ett användbart och framgångsrikt system.

Felhantering - Failure handling
Ju fler komponenter i ett system, desto större risk för att något blir fel. L. Lamports definition av ett distribuerat system säger en hel del om hur situationen kan vara i dagens system:

"Om en maskin som du aldrig hört talas om går ner och det hindrar dig från att jobba så har du ett distribuerat system".

Det finns många olika typer av fel som kan dyka upp och en av målsättningarna med felhantering är att gruppera de möjliga felen för att göra det enklare att ta hand om dem och kunna skapa ett feltolerant system.

Samtidighet, jämlöpande - Concurrency
Att utnyttja parallellitet i beräkningar är en naturlig del i distribuerade system eftersom dessa ofta består av många maskiner. Parallellitet i beräkningar ställer dock ofta vissa krav på samordning och synkronisering som inte alltid är så enkla att tillgodose på ett effektivt sätt i ett distribuerat system.

Genomskinlighet - Transparency
I många fall försöker de distribuerade systemen gömma distributionen och presentera sig för användaren som ett centraliserat system. Ett exempel är WWW, World Wide Web, en webbläsare hämtar dokument från olika typer av webbservrar utan att användaren ser någon skillnad.

Systemmodeller

När man designar ett distribuerat system använder man sig av olika systemmodeller. En arkitektonisk modell beskriver var olika delar placeras och relationerna mellan dessa. Fundamentala modeller är mer formella beskrivningar av egenskaper som är vanliga i arkitektoniska modeller. Här tittar man ofta på modeller för interaktion, felhantering och säkerhet.

Middleware

Mjukvara som tillhandahåller en programmeringsmodell ovanför basblocken av processer och meddelandeöverföring brukar kallas middleware. Middleware ger location transparency, abstraherar detaljer kring kommunikationsprotokoll, operativsystem och hårdvara, samt medger att flera olika programmeringsspråk kan användas.

Här nedan finns några av de frågor man kan ställa sig när man analyserar eller designar distribuerade system som använder sig av middleware.

Under föreläsningen kommer vi att titta på generella aspekter av middleware och ovanstående frågor. Nästa gång tittar vi på olika typer av middleware.

Läsanvisningar

Intensiv läsning: Kap 1 - 3, 4.1 - 4.4, 5.1 - 5.2.4
Extensiv läsning: 4.6 (repetition?)

Kapitel 3 är en repetition av kursen Datakommunikation och Datornät, detta borde ni redan kunna. ;-)

Förslag på övningsuppgifter

I första hand: 1.2, 1.5 - 1.13, 2.6, 2.8 - 2.17, 4.1, 4.17, 4.19 - 4.22, 5. 1, 5.2, 5.4, 5.5
I andra hand: 1.1, 1.3, 1.4, 2.4, 2.7, 2.18, 3.1 - 3.10, 3.12, 3.18, 4.18
"Programmeringsuppgifter": 4.3 - 4.6, 4.15, 4.16

Programmeringsuppgifterna är främst för er egen skull i arbetet med laborationen. Det kommer inga programmeringsuppgifter på tentan.

OH-bilder

3 bilder per sida


Välkomna!