|
| Föreläsning 1 - Kursintroduktion och generellt om Middleware |
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.
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.
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.
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. ;-)
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.