Introduktion
Stigende forventninger, til hvad det skal være muligt at beregne, har drevet parallel processering ind i en udvikling, hvor paralleliseringen i stadigt højere grad bliver foretaget på softwareniveau i netværksopstillinger, fremfor på hardwareniveau i parallelle computere. Dette har haft sin rod i det forhold, at hardware-baserede løsninger er meget dyrere at udvikle end de 'bløde' løsninger, og at det har været enklere at skalere softwarebaserede løsninger fremfor hardwarebaserede løsninger.
Generelt kan man spore en tendens, hvor der bliver økonomiseret med udvekslingen af data mellem processerne, således at kun de data, der er absolut nødvendige for den distribuerede applikation, bliver udvekslet. Dette har været nødvendigt fordi maskinerne imellem sig har en begrænset båndbredde til udveksling af data (en båndbredde, der ikke i samme grad som processorhastigheden har fulgt Moores lov mht. ydelse).
Der er i parallelprocessering en gruppe af hukommelsesmodeller, der er derivater af Linda TupleSpace. Linda er en hukommelsesmodel, der udmærkede sig ved at løse en række problemstillinger, der var gældende indenfor den parallelle processering, når denne anvender en DSM model til den interprocessuelle kommunikation. Vi har i vores projekt arbejdet videre på baggrund af nogle af de hukommelsesmodeller, der udspringer af Linda, idet vi har søgt at fortsætte udviklingen med at økonomisere kommunikationen mellem processorerne. Samtidig søger vi at bibeholde den simple anvendelse af hukommelsesmodellen, som gør det relativt enkelt at skrive distribuerede applikationer. Vi ønsker også, at vores projekt skal følge den udvikling der er vedrørende anvendelse af objektorienteret programmering i distribuerede applikationer, som JavaSpaces lægger op til.
Der er også en udvikling - indenfor serverløse netværksarkitekturer - som er interessant. Peer-to-peer strukturer udmærker sig ved en høj grad af robusthed og fleksibilitet. Disse egenskaber kan være nyttige i skalerbare distribuerede hukommelsesmodeller, hvor man ofte ønsker at undgå udfald af ydelse, og muligheden for enkel runtime-baseret udvidelse. Samtidig er det en struktur, der ikke kræver at én computer i systemet er specielt kraftfuld for at styrer systemet.
Som rapporten antyder er implementeringen af p2p (peer-to-peer) dog ikke nødvendigvis i overensstemmelse med økonomisering af netværkstrafikken.
Abstrakt
This report describes a prototype of a software package implementation of a peer-to-peer space. The implementation is inspired by JavaSpaces and our implementation (SubSpace) supports some of the same methods. This includes methods to put objects into a space and methods to take them out (write, read, take).
We have tried to make the public part of SubSpace look like JavaSpaces while the actual implementation is quite different on several crucial points. SubSpace is mainly based on a p2p-architecture, on data partitioning, and on minimal workload on the peers when they are performing tasks for the benefit of the community of peer processes.
SubSpace demonstrates potential when it comes to scaleable p2p DSMs. It also shows potential regarding the distribution of objects of size larger than 20kb. It does not implement any security features, persistence, or error handling.
The report is written in Danish, as well as the included user manual. The package is written in Java using English terms and expressions, and is also commented in English. It is the product of a group of three students, attending the 2nd semester on the faculty for computer science, Roskilde Universitetscenter, RUC. It represents one semester of project work, equivalent of on half of a semester workload, 15 ECTS to be precise.
English title :
SubSpace - A prototype of a DSM-system based on a non-replicated data partitioned peer-to-peer middleware space with object granularity, inspired by JavaSpaces.
Kort introduktion til JavaSpaces
Nedenstående citat er taget fra forsiden til JavaSpaces specifikationerne. Citatet opsummere ganske godt, hvilke mål som JavaSpaces skal opfylde.
"The JavaSpaces service specification provides a distributed persistence and object exchange mechanism for code written in the Java programming language. Objects are written in entries that provide a typed grouping of relevant fields. Clients can perform simple operations on a JavaSpaces service to write new entries, lookup existing entries, and remove entries from the space. Using these tools, you can write systems to store state, and also write systems that use flow of data to implement distributed algorithms and let the JavaSpaces service implement distributed persistence for you."
Ovenstående billede viser, hvordan man enkelt kan opbygge en generiske computserver ved brug af JavaSpaces. Man har en "Master", der søger for at putte opgaver ind i spacet, og man har en masse "Workere", der søger for at løse disse opgaver og putte et resultat tilbage i spacet.
Download
Projekt:
Selve projektet (i pdf-format) 767 KB
Appendix zippet (i pdf-format) 821 KB
Subspace-pakken (jar fil) 15 KB
Kildekode (zippet) 11 KB