BOINC klient-server-teknik
BOINC klient-server-teknik hänvisar till den modell som BOINC arbetar under. BOINC-ramverket består av två lager som fungerar under klient-server -arkitekturen . När BOINC-programvaran är installerad i en maskin servern skicka uppgifter till klienten . Operationerna utförs på klientsidan och resultaten laddas upp till serversidan .
Design och struktur av BOINC
- BOINC är utformad för att vara en fri struktur för alla som vill starta ett distribuerat datorprojekt.
- BOINC består av ett serversystem och klientprogramvara som kommunicerar med varandra för att distribuera, bearbeta och returnera arbetsenheter.
Serverstruktur
En stor del av BOINC-systemet är backend-servern. Servern kan köras på en eller flera maskiner så att BOINC enkelt kan skalas till projekt av alla storlekar. BOINC-servrar körs på Linux-baserade datorer och använder Apache , PHP och MySQL för sina webb- och databassystem .
Vetenskapliga beräkningar körs på deltagarnas datorer. Efter uppladdning från användarens klient till en vetenskapsutredares databas validerar och analyserar backend-servern resultaten. Valideringsprocessen innebär att köra alla uppgifter på flera datorer med bidragsgivare och jämföra resultaten.
BOINC-servrar har även dessa funktioner:
- homogen redundans (sänder endast arbetsenheter till datorer med samma plattform — till exempel: endast Win XP SP2 )
- arbetsenheten sipprar (sänder information till servern innan arbetsenheten slutförs)
- lokalitetsschemaläggning (skickar arbetsenheter till datorer som redan har de nödvändiga filerna och skapar arbete på begäran)
- arbetsfördelning baserad på värdparametrar (arbetsenheter som kräver t.ex. 512 MB RAM kommer bara att skickas till värdar som har minst så mycket RAM)
Servern består av två CGI- program och (normalt) fem demoner skrivna i C++ . Beräkningar som ska utföras av klienter kallas arbetsenheter . Ett resultat beskriver en instans av en arbetsenhet, även om den inte har slutförts. Ett projekt skapar inte uttryckligen resultat; servern skapar dem automatiskt från arbetsenheter.
Schemaläggaren CGI-programmet hanterar förfrågningar från klienter, tar emot slutförda resultat och skickar nytt arbete att beräkna. Schemaläggaren får inte tillgängliga resultat direkt från databasen. Istället laddar en matardemon in uppgifter från databasen och håller dem i ett delat minnesblock , som schemaläggaren läser. Mataren fyller med jämna mellanrum tomma "platser" i blocket med delat minne efter att schemaläggaren har skickat dessa resultat till en klient.
När alla resultat från en arbetsenhet är klara och returneras kontrollerar validatorn dem. En populär metod skulle vara att jämföra resultaten mot varandra. Validatorn kan ha anpassad projektkod för att göra suddiga jämförelser mellan resultat, eller så kan den utföra en bitvis jämförelse. Om valideraren fastställer att åtminstone några av resultaten är giltiga, markerar den arbetsenheten och de giltiga resultaten som giltiga, användare som returnerat legitima resultat beviljas kredit för det och ett "kanoniskt resultat" väljs. Om resultaten inte överensstämmer, eller om ett av resultaten inte rapporteras inom dess deadline, genererar servern ytterligare en instans av jobbet och skickar den till en tredje värd. Detta upprepas tills ett kvorum av matchande resultat hittas eller en gräns för antalet instanser nås.
Därefter bearbetar assimilatordemonen det kanoniska resultatet med hjälp av projektspecifik kod. Till exempel kan vissa projekt analysera filen och lagra information i en databas, andra kan bara kopiera filen någon annanstans. En assimilator kan också generera fler arbetsenheter baserat på returnerad data.
Demonen file_deleter tar bort utdatafiler efter att assimilatorn har bearbetat dem och tar bort indatafiler som inte längre behövs.
Övergångsdemonen hanterar tillståndsövergångar för arbetsenheter och resultat . Den genererar också resultat från arbetsenheter när de skapas första gången och när fler behövs (till exempel om ett resultat visar sig vara ogiltigt).
Kundstruktur
BOINC på klienten är strukturerad i ett antal separata applikationer. Dessa kommunicerar med varandra med hjälp av BOINC- för fjärrproceduranrop (RPC).
Dessa komponentapplikationer är:
- Programmet boinc (eller boinc.exe ) är kärnklienten.
- Kärnklienten är en process som:
- Tar hand om kommunikationen mellan klient och server.
- Kärnklienten laddar också ner vetenskapsapplikationer, tillhandahåller en enhetlig loggningsmekanism, ser till att vetenskapsapplikationsbinärer är uppdaterade och schemalägger CPU-resurser mellan vetenskapsapplikationer (om flera är installerade).
- Även om kärnklienten kan ladda ner nya vetenskapliga applikationer, uppdaterar den inte sig själv. BOINC:s författare ansåg att det utgjorde en oacceptabel säkerhetsrisk [ citat behövs ] , såväl som alla risker som automatiska uppdateringsprocedurer har i datoranvändning.
- På Unix körs kärnklienten i allmänhet som en demon (eller ibland som ett cron -jobb).
- På Windows var BOINC från början inte en Windows-tjänst, utan en vanlig applikation. BOINC Client för Windows, version 5.2.13 och högre lägger till, under installationen, alternativet "Service Installation".
- Beroende på hur BOINC-klientmjukvaran installerades, kan den antingen köras i bakgrunden som en demon, eller startas när en enskild användare loggar in (och stoppas när användaren loggar ut). Programvaruversionshanteringen och arbetsenhetshanteringen som tillhandahålls av kärnklienten förenklar kodningen av vetenskapliga applikationer avsevärt.
- En eller flera vetenskapliga tillämpningar. Vetenskapstillämpningar utför den grundläggande vetenskapliga beräkningen. Det finns en specifik vetenskapsapplikation för vart och ett av de distribuerade beräkningsprojekten som använder BOINC-ramverket. Science-applikationer använder BOINC-demonen för att ladda upp och ladda ner arbetsenheter och för att utbyta statistik med servern.
- boincmgr (eller boincmgr.exe ), ett gränssnitt som kommunicerar med kärnapplikationen med hjälp av fjärranrop . Som standard tillåter en kärnklient endast anslutningar från samma dator, men den kan konfigureras för att tillåta anslutningar från andra datorer (valfritt med lösenordsautentisering); denna mekanism gör det möjligt för en person att hantera en gård med BOINC-installationer från en enda arbetsstation. En nackdel med användningen av RPC-mekanismer är att de ofta upplevs som säkerhetsrisker eftersom de kan vara vägen genom vilken hackare kan inkräkta på riktade datorer (även om det är konfigurerat för anslutningar från samma dator).
- Det grafiska gränssnittet är skrivet med hjälp av verktygslådan WxWidgets på flera plattformar, vilket ger samma användarupplevelse på olika plattformar. Användare kan ansluta till BOINC-kärnklienter, kan instruera dessa klienter att installera nya vetenskapliga applikationer, kan övervaka framstegen i pågående beräkningar och kan se BOINC-systemets meddelandeloggar.
- BOINC- skärmsläckaren . Detta ger ett ramverk där vetenskapliga applikationer kan visa grafik i användarens skärmsläckarfönster. BOINC skärmsläckare kodas med BOINC grafik API, OpenGL och GLUT verktygslåda. Vanligtvis visar BOINC-skärmsläckare animerad grafik som beskriver det pågående arbetet, kanske visar grafer eller diagram eller annan datavisualiseringsgrafik.
- Vissa vetenskapsprogram tillhandahåller inte skärmsläckarfunktioner (eller slutar tillhandahålla skärmsläckarbilder när de är inaktiva). I det här fallet visar skärmsläckaren en liten BOINC-logotyp som studsar runt skärmen.
Eftersom BOINC har funktioner som kan göra den osynlig för den typiska användaren finns det risk för att obehöriga och svårupptäckta installationer kan inträffa. Detta skulle underlätta ackumuleringen av BOINC-poäng för hobbyister som konkurrerar med andra om status inom BOINC-kredit-subkulturen.
Klientplattformar
Operativ system | Hårdvara | Exempel | Status |
---|---|---|---|
Linux | IA-32 och AMD64 | PC och servrar | De flesta Linux-projekt kräver 64-bitars Linux. 32-bitars Linux-projekt kan kräva installation av 32-bitars bibliotek om de körs på 64-bitars Linux. |
Mac OS | X86-64 , ARMv8 | Olika BOINC-klienter brukade vara tillgängliga för PowerPC, IA-32 och AMD64. AMD64-klienten kunde köra IA-32-applikationer om BOINC-servern stöder detta. BOINC Manager 7.16.13 är för både X-86-64 och ARMv8. | |
Windows | IA-32 och AMD64 | Olika BOINC-klienter finns tillgängliga för IA-32 och AMD64. 64-bitarsklienten kommer att köra 32-bitars applikationer om BOINC-servern stöder detta. | |
Raspbian ( Linux ) | ÄRM | Raspberry Pi | Mycket få klientapplikationer tillgängliga |
Android ( Linux ) | ARM , MIPS eller IA-32 | Smartphones och surfplattor | Få klientapplikationer tillgängliga. Vissa projekt kan kräva inofficiella kunder (NativeBOINC) |