Schalen
ERDDAP™- Zware belasting, rasters, Clusters, Federaties en Cloud Computing
ERDDAP:
ERDDAP™is een webapplicatie en een webservice die wetenschappelijke gegevens uit verschillende lokale en externe bronnen samenvoegt en een eenvoudige, consistente manier biedt om deelverzamelingen van de gegevens in gemeenschappelijke bestandsformaten te downloaden en grafieken en kaarten te maken. Deze web pagina bespreekt kwesties met betrekking tot zwaarERDDAP™gebruik ladingen en verkent mogelijkheden voor het omgaan met extreem zware lasten via roosters, clusters, federaties en cloud computing.
De originele versie is geschreven in juni 2009. Er zijn geen significante veranderingen geweest. Dit is voor het laatst bijgewerkt 2019-04-15.
DISCLAIMER
De inhoud van deze webpagina zijn Bob Simons persoonlijke meningen en niet noodzakelijkerwijs weerspiegelt een standpunt van de regering of deNational Oceanic and Atmospheric Administration. De berekeningen zijn simplistisch, maar ik denk dat de conclusies juist zijn. Heb ik verkeerde logica gebruikt of een fout gemaakt in mijn berekeningen? Zo ja, dan is de schuld alleen aan mij. Stuur een e-mail met de correctie naarerd dot data at noaa dot gov.
Zware lasten/beperkingen
Met zwaar gebruik, een standaloneERDDAP™zal worden beperkt (van meest naar minst waarschijnlijk) door:
Bronbandbreedte op afstand
- De bandbreedte van een databron op afstand, zelfs met een efficiënte verbinding (bv. viaOPeNDAP) , tenzij een externe gegevensbron een zeer hoge bandbreedte internetverbinding heeft,ERDDAP's Antwoorden zullen worden beperkt door hoe snelERDDAP™kan gegevens van de gegevensbron te krijgen. Een oplossing is om de dataset te kopiëren naarERDDAP's harde schijf, misschien metEDDGridKopiërenofEDDtabelkopie.
ERDDAP's Serverbandbreedte
- TenzijERDDAP's server heeft een zeer hoge bandbreedte internetverbinding,ERDDAP's Antwoorden zullen worden beperkt door hoe snelERDDAP™kan gegevens uit de gegevensbronnen en hoe snelERDDAP™kan gegevens terugsturen naar de klanten. De enige oplossing is om een snellere internetverbinding te krijgen.
Geheugen
- Als er veel gelijktijdige verzoeken,ERDDAP™kan zonder geheugen en tijdelijk weigeren nieuwe verzoeken. (ERDDAP™heeft een aantal mechanismen om dit te voorkomen en om de gevolgen te minimaliseren als het gebeurt.) Hoe meer geheugen in de server, hoe beter. Op een 32-bits server is 4+ GB echt goed, 2 GB is oké, minder wordt niet aanbevolen. Op een 64-bits server kunt u het probleem bijna geheel vermijden door veel geheugen te krijgen. Zie\-Xmx en -Xms instellingenvoorERDDAPTomcat. EenERDDAP™Het krijgen van zwaar gebruik op een computer met een 64-bits server met 8GB geheugen en -Xmx ingesteld op 4000M is zelden, indien ooit, beperkt door geheugen.
Had Drive Bandbreedte
- Toegang tot gegevens die zijn opgeslagen op de harde schijf van de server is veel sneller dan toegang tot gegevens op afstand. Toch, als deERDDAP™server heeft een zeer hoge bandbreedte internetverbinding, het is mogelijk dat toegang tot gegevens op de harde schijf een knelpunt zal zijn. Een gedeeltelijke oplossing is sneller te gebruiken (b.v. 10.000 RPM) magnetische harde schijven of SSD-schijven (als het logisch is kostenbewust) . Een andere oplossing is om verschillende datasets op verschillende schijven op te slaan, zodat de cumulatieve bandbreedte van de harde schijf veel hoger is.
Te veel bestanden
- Te veel bestanden in eencachemapERDDAP™caches alle afbeeldingen, maar alleen caches de gegevens voor bepaalde soorten gegevensverzoeken. Het is mogelijk dat de cache directory voor een dataset een groot aantal bestanden tijdelijk heeft. Dit vertraagt verzoeken om te zien of er een bestand in de cache zit (Echt waar!) .<cache Minuten> insetup.xmlkunt u instellen hoe lang een bestand kan worden in de cache voordat het wordt verwijderd. Een kleiner getal zou dit probleem minimaliseren.
CPU
- Slechts twee dingen kosten veel CPU tijd:
- NetCDF4 enHDF5 ondersteunt nu interne compressie van gegevens. Een grote gecomprimeerde decomprimerenNetCDF4 /HDF5 gegevensbestand kan 10 of meer seconden duren. (Dat is geen uitvoeringsfout. Het is de aard van compressie.) Dus, meerdere gelijktijdige verzoeken naar datasets met gegevens opgeslagen in gecomprimeerde bestanden kan een ernstige spanning op elke server. Als dit een probleem is, is de oplossing om populaire datasets op te slaan in niet-gecomprimeerde bestanden, of een server te krijgen met een CPU met meer cores.
- Grafieken maken (inclusief kaarten) : ruwweg 0,2 - 1 seconde per grafiek. Dus als er veel gelijktijdige unieke verzoeken voor grafieken (WMSKlanten doen vaak 6 gelijktijdige verzoeken!) Er kan een CPU beperking zijn. Wanneer meerdere gebruikers actief zijnWMSKlanten, dit wordt een probleem.
Meerdere identiekeERDDAPBij Load Balancing?
De vraag komt vaak op: "Om te gaan met zware lasten, kan ik meerdere identiekeERDDAP' Het is een interessante vraag omdat het snel tot de kern vanERDDAPHet ontwerp. Het snelle antwoord is nee. Ik weet dat dit een teleurstellend antwoord is, maar er zijn een paar directe redenen en enkele grotere fundamentele redenen waarom ikERDDAP™om een andere aanpak te gebruiken (een federatie vanERDDAPs, beschreven in het grootste deel van dit document) , wat volgens mij een betere oplossing is.
Enkele directe redenen waarom u niet kan/moet instellen meerdere identiekeERDDAPs zijn:
- A gegevenERDDAP™leest elk gegevensbestand wanneer het voor het eerst beschikbaar wordt om de reeksen gegevens in het bestand te vinden. Het slaat die informatie dan op in een indexbestand. Later, als er een gebruikersverzoek voor gegevens binnenkomt,ERDDAP™gebruikt die index om uit te zoeken welke bestanden om in te kijken voor de gevraagde gegevens. Als er meerdere identiekeERDDAPS, ze zouden elk deze indexering doen, die verspilde inspanning. Met het hieronder beschreven gefedereerde systeem wordt de indexering slechts eenmaal uitgevoerd door één van deERDDAPs.
- Voor sommige soorten gebruikersverzoeken (bv. voor.nc, .png, .pdf bestanden) ERDDAP™moet het hele bestand te maken voordat het antwoord kan worden verzonden. Dus.ERDDAP™Deze dossiers worden kort bewaard. Indien een identiek verzoek binnenkomt (zoals het vaak doet, vooral voor afbeeldingen waar de URL is ingebed in een webpagina) ,ERDDAP™kan dat gecached bestand hergebruiken. In een systeem van meerdere identiekeERDDAPs, die gecachede bestanden worden niet gedeeld, dus elkERDDAP™zou onnodig en verspillend de.nc, .png, of .pdf bestanden. Met het gefedereerde systeem dat hieronder wordt beschreven, worden de bestanden slechts eenmaal, door een van deERDDAPen hergebruikt.
- ERDDAP's abonnementssysteem is niet ingesteld om gedeeld te worden door meerdereERDDAPs. Bijvoorbeeld, als de load balancer stuurt een gebruiker naar eenERDDAP™en de gebruiker abonneert zich op een dataset, dan de andereERDDAPS zal niet op de hoogte zijn van dat abonnement. Later, als de load balancer stuurt de gebruiker naar een andereERDDAP™en vraagt om een lijst van zijn/haar abonnementen, de andereERDDAP™zal zeggen dat er geen (waarbij hij/zij een dubbel abonnement neemt op de andere EREDDAP) . Met het hieronder beschreven gefedereerde systeem wordt het abonnementssysteem eenvoudigweg behandeld door de belangrijkste, publieke, samengesteldeERDDAP.
Ja, voor elk van deze problemen, kon ik (met grote moeite) maak een oplossing (om de informatie te delen tussenERDDAPs) , maar ik denk datFederatie-van-ERDDAPAanpak (beschreven in het grootste deel van dit document) Het is een veel betere algemene oplossing, mede omdat het andere problemen behandelt die de multi-identieke-ERDDAPs-with-a-load-balancer aanpak begint niet eens aan te pakken, met name de gedecentraliseerde aard van de gegevensbronnen in de wereld.
Het is het beste om het simpele feit te accepteren dat ik niet heb ontworpenERDDAP™in te zetten als meerdere identiekeERDDAPs met een belastingsbalans. Ik heb bewust ontworpenERDDAP™goed te werken binnen een federatie vanERDDAPS, wat volgens mij vele voordelen heeft. Met name een federatie vanERDDAPs is perfect afgestemd op het gedecentraliseerde, gedistribueerde systeem van datacenters dat we hebben in de echte wereld (Denk aan de verschillende IOOS regio's, of de verschillende CoastWatch regio's, of de verschillende delen van NCII, of de 100 andere datacenters inNOAA, of de verschillende NASA DAACs, of de 1000's van datacenters over de hele wereld) . In plaats van alle datacenters van de wereld te vertellen dat ze hun inspanningen moeten opgeven en al hun gegevens in een gecentraliseerd "datameer" moeten stoppen (Zelfs als het mogelijk was, is het een verschrikkelijk idee om tal van redenen -- zie de verschillende analyses die de talrijke voordelen vangedecentraliseerde systemen) ,ERDDAPHet ontwerp werkt met de wereld zoals het is. Elk datacenter dat gegevens produceert, kan doorgaan met onderhouden, curatoren en hun gegevens bedienen. (zoals ze zouden moeten) , en toch,ERDDAP™, de gegevens kunnen ook direct beschikbaar zijn vanuit een gecentraliseerdERDDAP, zonder dat de gegevens aan de gecentraliseerdeERDDAP™hetzij een kopie van de gegevens opslaan. Inderdaad, een gegeven dataset kan tegelijkertijd beschikbaar zijn van eenERDDAP™bij de organisatie die de gegevens heeft geproduceerd en opgeslagen (bv. GoMOOS) , van eenERDDAP™bij de moederorganisatie (b.v. IOOS centraal) , Van een all-NOAA ERDDAP™, van een federale regering van de VSERDDAP™, van een globaleERDDAP™ (GOOS) , en van gespecialiseerdERDDAPs (bv. eenERDDAP™aan een instelling voor HAB-onderzoek) , alle in wezen onmiddellijk, en efficiënt omdat alleen de metagegevens wordt overgedragen tussenERDDAPs, niet de gegevens. Het beste van alles, na de eersteERDDAP™bij de organisatie van oorsprong, alle andereERDDAPs kunnen snel ingesteld worden (een paar uur werken) , met minimale middelen (een server die geen RAID's nodig heeft voor gegevensopslag omdat het geen gegevens lokaal opslaat) , en dus tegen werkelijk minimale kosten. Vergelijk dat met de kosten van het opzetten en onderhouden van een gecentraliseerd datacenter met een data meer en de behoefte aan een echt enorme, echt dure, internetverbinding, plus het bijbehorende probleem van het centrale datacenter is een enkel punt van mislukking. Voor mij,ERDDAPDe gedecentraliseerde, gefedereerde aanpak is veel beter.
In situaties waarin een gegeven datacenter meerdereERDDAPs om aan de hoge vraag te voldoen;ERDDAPHet ontwerp is volledig in staat de prestaties van het meervoudige-identieke-ERDDAPS-with-a-load-balancer benadering. Je hebt altijd de mogelijkheid om op te zettenmeervoudige samenstellingERDDAPs (zoals hieronder besproken) , die elk al hun gegevens van andereERDDAPs, zonder belastingsbalancering. In dit geval raad ik u aan om een punt te maken van elk van de composietenERDDAPs een andere naam / identiteit en indien mogelijk in verschillende delen van de wereld (Bijvoorbeeld verschillende AWS-regio's) , bijvoorbeeld,ERDOost,ERDWest,ERDO_IE,ERD\_FR,ERD\_IT, zodat gebruikers bewust, herhaaldelijk, werken met een specifiekeERDDAP, met het toegevoegde voordeel dat u het risico hebt verwijderd van een enkel punt van mislukking.
Rasters, Clusters en Federaties
Onder zeer zwaar gebruik, een enkele standaloneERDDAP™zal een of meer van debeperkingenDe hierboven genoemde en zelfs voorgestelde oplossingen zullen onvoldoende zijn. Voor dergelijke situaties,ERDDAP™heeft functies die het gemakkelijk maken om schaalbare roosters te bouwen (ook clusters of federaties genoemd) vanERDDAPs waarmee het systeem zeer zwaar kan omgaan (bv. voor een groot datacenter) .
Ik gebruikrasterals algemene aanduiding van een typecomputerclusterwanneer alle onderdelen al dan niet fysiek in één installatie zijn gevestigd en al dan niet centraal worden beheerd. Een voordeel van gemeenschappelijke, centraal beheerde en beheerde netwerken (clusters) is dat zij profiteren van schaalvoordelen (vooral de menselijke werklast) en vereenvoudigen om de delen van het systeem goed samen te laten werken. Een voordeel van niet-gecolocatieerde netten, niet-centraal eigendom en beheerd (federaties) is dat zij de menselijke werklast en de kosten verdelen en een extra fouttolerantie kunnen bieden. De oplossing die ik hieronder voorstel werkt goed voor alle raster, cluster, en federatie topografische.
Het basisidee om een schaalbaar systeem te ontwerpen is om de potentiële knelpunten te identificeren en vervolgens het systeem zo te ontwerpen dat delen van het systeem kunnen worden nagebootst als nodig is om de knelpunten te verlichten. Idealiter verhoogt elk gekopieerd deel de capaciteit van dat deel van het systeem lineair (efficiëntie van schalen) . Het systeem is niet schaalbaar tenzij er een schaalbare oplossing is voor elke bottleneck.Schaalbaarheidverschilt van efficiëntie (hoe snel een taak kan worden uitgevoerd • efficiëntie van de onderdelen) . Schaalbaarheid stelt het systeem in staat om met elk niveau van vraag om te gaan. Efficiëntie (van schalen en van delen) bepaalt hoeveel servers etc. nodig zijn om aan een bepaalde vraag te voldoen. Efficiëntie is heel belangrijk, maar heeft altijd grenzen. Schaalbaarheid is de enige praktische oplossing voor het bouwen van een systeem dat zeer zwaar gebruik. Idealiter zal het systeem schaalbaar en efficiënt zijn.
Doelstellingen
De doelstellingen van dit ontwerp zijn:
- Een schaalbare architectuur maken (een die gemakkelijk uitbreidbaar is door het repliceren van een deel dat overbelast raakt) . Een efficiënt systeem maken dat de beschikbaarheid en doorvoer van de gegevens maximaliseert gezien de beschikbare computerbronnen. (Kosten zijn bijna altijd een probleem.)
- Om de mogelijkheden van de delen van het systeem in evenwicht te brengen zodat het ene deel van het systeem geen ander deel overweldigt.
- Een eenvoudige architectuur te maken zodat het systeem eenvoudig te installeren en beheren is.
- Om een architectuur te maken die goed werkt met alle rastertopografieën.
- Om een systeem te maken dat sierlijk en op een beperkte manier faalt als een deel overbelast raakt. (De tijd die nodig is om een grote datasets te kopiëren, beperkt altijd het vermogen van het systeem om te gaan met plotselinge stijgingen van de vraag naar een specifieke dataset.)
- (Indien mogelijk) Om een architectuur te maken die niet gebonden is aan specifiekecloud computingdiensten of andere externe diensten (Omdat het ze niet nodig heeft.) .
Aanbevelingen
Onze aanbevelingen zijn
- Ik stel voor om een composite op te zetten.ERDDAP™ ( D in het diagram) , dat is een regelmatigeERDDAP™behalve dat het alleen gegevens van andereERDDAPs. De architectuur van het raster is ontworpen om zoveel mogelijk werk te verschuiven (CPU-gebruik, geheugengebruik, bandbreedtegebruik) van de samenstellingERDDAP™aan de andereERDDAPs.
- ERDDAP™twee speciale datasets heeft,EDDGridVanErdapenEDDtabelVanErdap, die betrekking hebben op datasets op andereERDDAPs.
- Wanneer de samenstellingERDDAP™ontvangt een verzoek om gegevens of afbeeldingen uit deze datasets, de samenstellingERDDAP™ omleidingenhet verzoek om gegevens aan de andereERDDAP™server. Het resultaat is:
- Dit is erg efficiënt. (CPU, geheugen en bandbreedte) , omdat anders
- De samenstellingERDDAP™moet het gegevensverzoek naar de andereERDDAP.
- De andereERDDAP™moet de gegevens te krijgen, opnieuw te formatteren, en de gegevens te verzenden naar de samenstellingERDDAP.
- De samenstellingERDDAP™moet de gegevens ontvangen (met extra bandbreedte) , herformatteren (met extra CPU tijd en geheugen) , en verzend de gegevens naar de gebruiker (met extra bandbreedte) . Door het omleiden van de gegevens verzoek en het toestaan van de andereERDDAP™om het antwoord direct naar de gebruiker te sturen, de composietERDDAP™besteedt in wezen geen CPU tijd, geheugen, of bandbreedte aan gegevensverzoeken.
- De omleiding is transparant naar de gebruiker, ongeacht de client software (een browser of een andere software of command line tool) .
- Dit is erg efficiënt. (CPU, geheugen en bandbreedte) , omdat anders
Rasteronderdelen
A : Voor elke externe databron met een hoge bandbreedteOPeNDAPserver, u kunt rechtstreeks verbinding maken met de externe server. Als de externe server eenERDDAP™GebruikEDDGridFromErdap of EDDtableVanERDDAPom de gegevens in de samenstelling te dienenERDDAP. Als de externe server een ander type isDAPserver, bv. THredDS,HyraxGebruikEDDGridVan Dap.
B : Voor elkeERDDAP-able data source (een gegevensbron waaruitERDDAPkan data lezen) die een high-bandwidth server heeft, een andere server instellenERDDAP™in het net dat verantwoordelijk is voor het bedienen van de gegevens van deze gegevensbron.
- Indien verscheideneERDDAPs krijgen niet veel verzoeken voor gegevens, kunt u ze consolideren in eenERDDAP.
- Indien deERDDAP™gewijd aan het verkrijgen van gegevens van een externe bron krijgt te veel verzoeken, is er een verleiding om extra toe te voegenERDDAPs om toegang te krijgen tot de externe gegevensbron. In speciale gevallen kan dit zinvol zijn, maar het is waarschijnlijker dat dit de externe databron zal overweldigen (Dat is zelfvernietigend.) en ook voorkomen dat andere gebruikers toegang krijgen tot de externe gegevensbron (Wat niet leuk is.) . In een dergelijk geval, overwegenERDDAP™om die ene dataset te gebruiken en de dataset daarop te kopiërenERDDAP's harde schijf (zie C ) , metEDDGridKopiërenen/ofEDDtabelkopie.
- B servers moeten openbaar toegankelijk zijn.
C : Voor elkeERDDAP-able data source met een server met lage bandbreedte (of een langzame dienst is om andere redenen) , overwegen een andereERDDAP™en een kopie van de dataset op te slaanERDDAP's harde schijven, misschien metEDDGridKopiërenen/ofEDDtabelkopie. Indien verscheideneERDDAPs krijgen niet veel verzoeken voor gegevens, kunt u ze consolideren in eenERDDAP. C servers moeten openbaar toegankelijk zijn.