Rinnakkaisohjelmistot kevät 2004, Harjoitus 6

3.-7.5.2004

Opiskeltava alue: Andrews: 7.1-7.5 Message Passing, 8 RPC and Rendezvous, 10.3 RPC and Rendezvous.
Stallings: 13.2 Distributed Message Passing, 13.3 Remote Procedure Calls.

Kurssin viimeisissä harjoituksissa käsitellään sanomanvälitystä ja etäproseduurikutsua hajautetussa järjestelmässä. Ymmärtämisen helpottamiseksi kannattaa piirrellä kuvia.


Maanantaina 10.5. klo 12-14 pidetään koekertaus salissa C453.
Kurssikoe on torstaina 13.5. klo 16-20 päärakennuksen salissa 1.


1 - TIETOKANTAPALVELIN

Suunnittele lukijat/kirjoittajat -ongelmalle ratkaisu, jossa valvottava tietokanta on omassa erillisessä palvelimessaan ja vain palvelijaprosesseilla on pääsy tietokantaan. Asiakkaiden (lukijat ja kirjoittajat) ja palvelijoiden välinen kommunikointi perustuu asynkroniseen sanomanvälitykseen. Määrittele palveluprosessin kommunikointirajapinnat lukijoille ja kirjoittajille sekä hahmottele palvelijaprosessien koodi.

Vihje: käytä kirjan kuvan 5.5 monitoria poisulkemisessa (yksi kirjoittaja kerrallaan tai useita lukijoita yhtä aikaa).

2 - KUORMANTASAUSTA

Verkon työasemat S[i] on kytketty "nauhaksi" (siis: S[0]-S[1]- ...-S[N-1] ). Verkossa on hajautettu kuormantasapainotusjärjestelmä, joka pyrkii sijoittelemaan töitä kevyesti kuormitettuihin solmuihin. Kukin solmu

1) ottaa vastaan paikallisia ilmoituksia kuormituksen muuttumisesta ja kertoo näistä naapureilleen
2) välittää naapurilta saamansa kuormituksen muutostiedot edelleen sekä
3) vastaa ylläpitäjän tekemään tiedusteluun järjestelmän kuormitustilanteesta.

Kirjoita kuormantasauksessa kommunikoivien osien koodi. Käytä sanomanvälitystä kommunikoinnissa paikallisen järjestelmän, naapurien ja ylläpitäjän kanssa.

Tässä on tarkkailtavana kolme rinnakkaista tapahtumaa. Ohjelmoi kutakin toimintoa kohden oma prosessi (yksityinen kanava) tai käytä globaalia kanavaa ja liitä pyyntöön toimintokoodi.

3 - MONILÄHETYS JA VÄLITTÄJÄSOLMU

Monilähetystä (multicast; lähettäjä nimeää kaikki vastaanottajat) hitaan linkin yli voi tehostaa siten, että sanoma menee ensin nopean verkon puolella olevalle välittäjäsolmulle. Välittäjäsolmu lähettää sitten sanoman edelleen kullekin vastaanottajalle.

                         --> receiver[i]
sender[x] ---> välittäjä --> receiver[j]
                         --> reveiver[k]

Kirjoita välittäjäsolmun toiminta-algoritmi. Sanomanvälitys perustuu send- ja receive-operaatioiden käyttöön ja osoitteet ilmoitetaan kanavina (monilähetyssanoman lopullinen vastaanottaja "i" vastaanottaa sanoman kanavasta inbox[i]; mahdollisia vastaanottajia ovat 0,1,2,...,N-1 ).

Ratkaisussa ei tarvitse ottaa kantaa kuinka tuo sanomanvälitysyhteys muodostetaan tai kuinka tietty prosessi sidotaan johonkin tiettyyn kanavaan.

4 - ETÄPROSEDUURIKUTSUN PERUSIDEAT

Selitä mistä etäproseduurikutsussa on kyse! Miten toiminta näkyy kutsuvalle prosessille, miten palvelu löytyy ja mitä KJ:lta vaaditaan etäproseduurikutsun onnistumiseksi. Mikä prosessi suorittaa etäproseduurin koodin? Mitä ongelmia on pitänyt ratkoa etäproseduurikutsun toteutuksessa? yms. yms. [Vihje: kaiva tietoa käyttöjärjestelmäkirjoista, internetistä... Jos halaut tutustua Javan vastaavaan mekanismiin, avainsana on RMI, remote method invocation]

5 - LIUKUHIHNAN SOLMUN KOODI ETÄPROSEDUURINA

Sovellus on hajautettu verkkoon "liukuhihnaksi" (pipeline, ks. esim. harjoitus 1 tehtävä 5). Kukin liukuhihnaan kuuluva prosessi ottaa vastaan dataa edeltävältä solmulta, käsittelee sen ja välittää datan eteenpäin seuraavalle solmulle. Kirjoita yhden (liukuhihnan keskellä olevan) solmun tiedonvalityksessä tarvittava koodi. Kommunikointiin on käytettävissä etäproseduurikutsu.

Vihje: tässä on kaksi operaatiota: 1) tiedon vastaanotto edeltäjältä ja 2) välitys eteenpäin seuraajalle. Jotta ne voisivat toimia rinnakkaisesti, ohjelmoi vastaanotto etäproseduurina ja tee eteenpäinvälitykselle oma prosessi (kutsuu seuraajan etäproseduuria). Koska ne käyttävät yhteistä puskuria, muista ratkoa myös poissulkeminen.

Prosessien ja kanavien sitomiseen ei tarvitse ottaa kantaa.

Oppi ei ole palkkio, se on seuraus.

Liisa Marttinen