Stříkání
ERDDAP™- Heavy Loads, Grids, Clusters, Federations, and Cloud Computing
ERDDAP:
ERDDAP™je webová aplikace a webová služba, která shromažďuje vědecká data z různých místních a vzdálených zdrojů a nabízí jednoduchý a konzistentní způsob, jak stáhnout podmnožiny dat ve společných formátech souborů a vytvářet grafy a mapy. Tato webová stránka pojednává o otázkách souvisejících s těžkýmERDDAP™používání zatížení a zkoumá možnosti řešení extrémně těžkých zatížení prostřednictvím sítí, klastrů, federací a cloud computingu.
Původní verze byla napsána v červnu 2009. Nedošlo k žádným významným změnám. Toto bylo naposledy aktualizováno 2019-04-15.
ZDŮVODNĚNÍ
Obsah této webové stránky jsou Bob Simons osobní názory a nemusí nutně odrážet žádné postavení vlády neboNational Oceanic and Atmospheric Administration. Výpočty jsou zjednodušené, ale myslím, že závěry jsou správné. Použil jsem chybnou logiku nebo jsem udělal chybu ve svých výpočtech? Pokud ano, je to jen moje chyba. Prosím, pošlete e-mail s opravouerd dot data at noaa dot gov.
Těžké zatížení / omezení
S těžkým použitím, samostatnýERDDAP™budou omezeny (od nejvíce do nejm éně pravděpodobné) podle:
Šířka pásma vzdáleného zdroje
- Vzdálený zdroj dat je šířka pásma i s efektivním připojením (např. prostřednictvímOPeNDAP) , pokud vzdálený zdroj dat nemá velmi vysoké připojení k internetu,ERDDAP's reakce budou omezeny tím, jak rychleERDDAP™může získat data ze zdroje dat. Řešením je zkopírovat soubor dat naERDDAP's pevným diskem, možná sEDDGridKopírovatneboEDDtableCopy.
ERDDAP's šířka pásma serveru
- PokudERDDAP's serverem má velmi velké připojení k internetu,ERDDAP's reakce budou omezeny tím, jak rychleERDDAP™může získat data ze zdrojů dat a jak rychleERDDAP™může klientům vrátit data. Jediným řešením je získat rychlejší internetové připojení.
paměť
- Pokud existuje mnoho současných žádostí,ERDDAP™může dojít paměti a dočasně odmítnout nové požadavky. (ERDDAP™má několik mechanismů, jak se tomu vyhnout a minimalizovat důsledky, pokud k tomu dojde.) Čím více paměti na serveru, tím lépe. Na 32bitovém serveru je 4+ GB opravdu dobrá, 2 GB je v pořádku, méně se nedoporučuje. Na 64-bitovém serveru se můžete téměř zcela vyhnout problému tím, že získáte spoustu paměti. VizNastavení \-Xmx a -XmsmístoERDDAPTomcat. AnERDDAP™získání těžkého použití na počítači s 64-bitovým serverem s 8GB paměti a -Xmx nastaven na 4000M je zřídka, pokud vůbec, omezena pamětí.
Had Drive Bandwidth
- Přístup k datům uloženým na pevném disku serveru je mnohem rychlejší než přístup k vzdáleným datům. I tak, pokudERDDAP™server má velmi vysokou šířku pásma připojení k internetu, je možné, že přístup k datům na pevném disku bude zablokovat. Částečný roztok je rychlejší (např. 10 000 otáček za minutu) magnetické pevné disky nebo SSD disky (Jestli to dává smysl.) . Dalším řešením je ukládat různé soubory dat na různých diskech, takže kumulativní šířka pásma pevného disku je mnohem vyšší.
Příliš mnoho souborů zachycených
- Příliš mnoho souborů vcacheadresářERDDAP™caches všechny obrázky, ale pouze caches data pro některé typy požadavků na data. Je možné, aby adresář cache pro datový soubor měl dočasně velký počet souborů. To zpomalí požadavky, zda je soubor v cache (Opravdu!) .<cache Minutysetup.xmlumožňuje nastavit, jak dlouho může být soubor v cache před jeho odstraněním. Nastavení menšího čísla by tento problém minimalizovalo.
CPU
- Jen dvě věci zaberou spoustu času CPU:
- NetCDF4 aHDF5 nyní podporuje vnitřní komprese dat. Dekompresní velký komprimovanýNetCDF4 /HDF5 datových souborů může trvat 10 nebo více sekund. (To není chyba při realizaci. Je to povaha komprese.) Takže více simultánních žádostí o datové soubory s daty uloženými v komprimovaných souborech může způsobit vážné napětí na jakémkoli serveru. Pokud jde o problém, řešením je ukládat populární data v nestlačených souborech nebo získat server s procesorem s více jádry.
- Výroba grafů (včetně map) : přibližně 0,2 - 1 sekunda na graf. Takže pokud existuje mnoho současných unikátních žádostí o grafy (WMSklienti často požadují 6 současně!) Mohlo by dojít k omezení CPU. Když běží více uživatelůWMSKlienti, tohle je problém.
VíceznačnéERDDAPS Load Balancing?
Často přichází otázka: "Můžu se vypořádat s těžkými břemeny, a tak vytvořit více stejnýchERDDAPs vyvažováním nákladu?" Je to zajímavá otázka, protože se rychle dostane do jádraERDDAPJe to design. Rychlá odpověď je "ne." Vím, že je to neuspokojivá odpověď, ale existuje několik přímých důvodů a některé větší základní důvody, proč jsem navrhlERDDAP™používat jiný přístup (federaceERDDAPs, popsaná ve velké části tohoto dokumentu) Což je podle mě lepší řešení.
Některé přímé důvody, proč nemůžete / by neměl nastavit více stejnýchERDDAPjsou:
- ZadánoERDDAP™čte každý datový soubor, jakmile je poprvé k dispozici, aby bylo možné najít rozsah dat v souboru. Pak tyto informace uloží do indexu. Později, když přijde žádost uživatele o data,ERDDAP™pomocí tohoto indexu zjistit, které soubory hledat požadované údaje. Pokud by bylo více stejnýchERDDAPS, každý by dělal toto indexování, což je promarněné úsilí. S federovaným systémem popsaným níže, indexování se provádí pouze jednou, jedním zERDDAPs.
- Pro některé typy žádostí o uživatele (např. pro.nc, .png, .pdf soubory) ERDDAP™musí provést celý soubor před odesláním odpovědi. Takže...ERDDAP™na krátkou dobu ukládá tyto soubory. Pokud přijde stejná žádost (jako často, zejména pro obrázky, kde je URL vložena do webové stránky) ,ERDDAP™může znovu použít ten cachovaný soubor. V systému více identickýchERDDAPs, tyto cachované soubory nejsou sdíleny, takže každýERDDAP™by zbytečně a zbytečně znovu vytvořit.nc, .png, nebo .pdf soubory. S federovaným systémem popsaným níže, soubory jsou vyrobeny pouze jednou, jedním zERDDAPs a znovu použít.
- ERDDAP's systém předplatného není nastaven tak, aby byl sdílen víceERDDAPs. Například pokud vyvažovač zatížení pošle uživateli jednuERDDAP™a uživatel se přihlásí k datovému souboru, pak k druhémuERDDAPNebude si toho předplatného vědom. Později, pokud vyvažovač zatížení pošle uživatele jinémuERDDAP™a žádá o seznam jeho předplatného, druhýERDDAP™řekne, že žádné nejsou. (vede ho k dvojímu předplatnému na druhé EREDDAP) . S federovaným systémem popsaným níže je systém předplatného jednoduše řešen hlavním, veřejným, kompozitemERDDAP.
Ano, pro každý z těchto problémů bych mohl (s velkým úsilím) vytvořit řešení (sdílet informace meziERDDAPán) , ale myslím, žeFederace-of-ERDDAPs přiblížení (popisovaný ve velké části tohoto dokumentu) je mnohem lepší celkové řešení, částečně proto, že se zabývá jinými problémy, které více-identické-ERDDAPs-s-a-ta-balancer přístup ani nezačne řešit, zejména decentralizované povahy zdrojů dat ve světě.
Nejlepší je přijmout prostý fakt, že jsem nenavrhovalERDDAP™rozmístěno jako vícenásobná identickáERDDAPs vyvažovačem zatížení. I vědomě navrženERDDAP™pracovat dobře v rámci federaceERDDAPMyslím, že má mnoho výhod. FederaceERDDAPs je dokonale sladěno s decentralizovaným, distribuovaným systémem datových center, která máme v reálném světě (Myslete na různé regiony IOOS, nebo různé regiony CoastWatch, nebo různé části NCEI, nebo 100 dalších datových center vNOAA, nebo různé NASA DAAC, nebo 1000's datových center po celém světě) . Místo toho, aby řekli všem datacentrům světa, že musí opustit své úsilí a dát všechna data do centralizovaného "data lake" (i kdyby to bylo možné, je to hrozný nápad z mnoha důvodů - viz různé analýzy ukazující četné výhodydecentralizované systémy) ,ERDDAPDesign pracuje se světem tak, jak je. Každé datové centrum, které vytváří data, může i nadále udržovat, kurovat a sloužit svým údajům (jak by měly) , a přesto, sERDDAP™, data mohou být také okamžitě k dispozici z centralizovanéERDDAP, bez nutnosti přenosu dat do centralizovanéERDDAP™nebo uchovávání duplikátních kopií údajů. Vskutku, daný soubor údajů může být současně k dispozici zERDDAP™v organizaci, která vytvořila a skutečně uchovává údaje (např. GoMOOS) , zERDDAP™v mateřské organizaci (např. IOOS central) , ze všech-NOAA ERDDAP™, od americké federální vládyERDDAP™, z globálníhoERDDAP™ (Goos) , a ze specializovanýchERDDAPán (např.ERDDAP™v instituci věnované výzkumu HAB) , všechny v podstatě okamžitě a efektivně, protože pouze metadata jsou přenesena meziERDDAPS, ne data. Nejlepší ze všeho, po iniciáluERDDAP™v původní organizaci, všechny ostatníERDDAPs lze nastavit rychle (Pár hodin práce) , s minimálními zdroji (jeden server, který nepotřebuje RAID pro ukládání dat, protože neukládá žádná data lokálně) , a tedy za skutečně minimální cenu. Porovnejte to s náklady na zřízení a udržování centralizovaného datového centra s datovým jezerem a nutností skutečně masivního, skutečně drahého připojení k internetu, plus s doprovodem problému centralizovaného datového centra je jediným místem selhání. Pro mě,ERDDAPDecentralizovaný přístup je daleko lepší.
V situacích, kdy dané datové centrum potřebuje víceERDDAPs k uspokojení vysoké poptávky,ERDDAP's designem je plně schopen sladit nebo překročit výkon víceidentického--ERDDAPs-s-a-balancer přístup. Vždycky máš možnost nastavitvícesložkovéERDDAPán (jak je uvedeno níže) , každý z nich dostane všechny své údaje od ostatníchERDDAPs, bez vyvažování zatížení. V tomto případě doporučuji vám, abyste dali každému z kompozitůERDDAPs odlišným jménem / identitou a pokud možno nastavením v různých částech světa (např. různé oblasti AWS) např.ERD\_US\_Východ,ERD\_US\_West,ERD\_IE,ERD\_FR,ERD\_IT, takže uživatelé vědomě, opakovaně, pracovat s konkrétníERDDAP, s přidaným přínosem, že jste odstranili riziko z jediného bodu selhání.
Mřížky, hvězdokupy a federace
Při velmi těžkém použití, jediný samostatnýERDDAP™narazí na jednu nebo více zomezeníuvedené výše a dokonce i navrhované řešení budou nedostatečné. V takových situacíchERDDAP™má vlastnosti, které usnadňují konstrukci škálovatelných sítí (také nazývané klastry nebo federace) zERDDAPs, které umožňují systému zvládnout velmi těžké použití (např. pro velké datové centrum) .
Používámmřížkajako obecný výraz pro označení typupočítačový klastrkde všechny části mohou nebo nemusí být fyzicky umístěny v jednom zařízení a mohou nebo nemusí být centrálně spravovány. Výhoda společných, centrálně vlastněných a regulovaných sítí (klastry) že mají prospěch z úspor z rozsahu (zejména pracovní zátěž) a zjednodušit fungování částí systému. Výhoda nelokovaných sítí, které nejsou centrálně vlastněny a spravovány (federace) je to, že distribuují lidskou pracovní zátěž a náklady a mohou poskytnout dodatečnou chybovou toleranci. Řešení, které navrhuji níže, funguje dobře pro všechny topografie sítě, clusteru a federace.
Základní myšlenkou návrhu škálovatelného systému je určit potenciální překážky a navrhnout systém tak, aby části systému mohly být replikovány podle potřeby ke zmírnění překážek. V ideálním případě každá replikovaná část zvyšuje kapacitu této části systému lineárně (účinnost škálování) . Systém není škálovatelný, pokud neexistuje škálovatelné řešení pro každý výběžek.Skalovatelnostse liší od účinnosti (jak rychle je možné provést úkol - účinnost dílů) . Škálovatelnost umožňuje, aby systém rostl a zvládl jakoukoli úroveň poptávky. Účinnost (o rozměrech a částech) určuje, kolik serverů, atd. bude potřeba k uspokojení dané úrovně poptávky. Účinnost je velmi důležitá, ale vždy má limity. Škálovatelnost je jediným praktickým řešením budování systému, který dokáže zvládnout velmi těžké využití. V ideálním případě bude systém škálovatelný a efektivní.
Cíle
Cílem tohoto návrhu jsou:
- Vytvořit škálovatelnou architekturu (ten, který je snadno extenzovatelný replikací jakékoliv části, která se stane přetížený) . Pro vytvoření efektivního systému, který maximalizuje dostupnost a průchodnost dat za předpokladu dostupných výpočetních zdrojů. (Cena je téměř vždy problém.)
- Vyvážit schopnosti částí systému tak, aby jedna část systému nepřemohla další část.
- Vytvořit jednoduchou architekturu tak, aby systém bylo snadné nastavit a spravovat.
- Vytvořit architekturu, která dobře funguje se všemi topografiemi.
- Vytvořit systém, který elegantně a omezeně selže, pokud se nějaká část přetíží. (Čas potřebný k kopírování velkých souborů dat vždy omezí schopnost systému vypořádat se s náhlým zvýšením poptávky po určitém datovém souboru.)
- (Pokud je to možné) Vytvořit architekturu, která není vázána na žádné konkrétnícloud computingslužby nebo jiné externí služby (Protože je nepotřebuje.) .
Doporučení
Naše doporučení jsou
- V podstatě navrhuji vytvořit kompozit.ERDDAP™ ( D v diagramu) , který je pravidelnýERDDAP™kromě toho, že slouží pouze údaje z jinýchERDDAPs. Architektura sítě je navržena tak, aby co nejvíce pracovala (Využití CPU, využití paměti, využití šířky pásma) z kompozituERDDAP™na druhouERDDAPs.
- ERDDAP™má dva speciální typy souborů údajů,EDDGridFromErddapaEDDTableFromErddap, které odkazují na Údaje o ostatních datechERDDAPs.
- Při kompozituERDDAP™obdrží žádost o údaje nebo obrázky z těchto souborů souborů, složenéERDDAP™ přesměrovánížádost o údaje pro ostatníERDDAP™server. Výsledkem je:
- Tohle je velmi efektivní. (CPU, paměť a šířka pásma) , protože jinak
- KompozitERDDAP™musí zaslat žádost o údaje druhé osoběERDDAP.
- DruhýERDDAP™musí získat data, přeformátovat je a předat data kompozitu.ERDDAP.
- KompozitERDDAP™musí přijímat údaje (pomocí extra šířky pásma) , přeformátovat ji (pomocí extra CPU času a paměti) , a předat data uživateli (pomocí extra šířky pásma) . Přesměrováním požadavku na údaje a umožněním druhéERDDAP™zaslat odpověď přímo uživateli, složenémuERDDAP™Netráví v podstatě žádný čas CPU, paměť, nebo šířku pásma na požadavky dat.
- Přesměrování je transparentní pro uživatele bez ohledu na klientský software (prohlížeč nebo jiný software nebo nástroj příkazového řádku) .
- Tohle je velmi efektivní. (CPU, paměť a šířka pásma) , protože jinak
Části mřížky
A : Pro každý vzdálený zdroj dat, který má vysokou šířku pásmaOPeNDAPserver, můžete se připojit přímo na vzdálený server. Pokud je vzdálený serverERDDAP™, použitíEDDGridFromErddap nebo EddtableFromERDDAPsloužit údajům v kompozituERDDAP. Pokud je vzdálený server jiným typemDAPserver, např. THREDDS,Hyrax, nebo GRADS, použitíEDDGridFromDap.
B : Pro každýERDDAP-ovatelný zdroj dat (zdroj dat, z něhožERDDAPmůže číst data) který má vysokopásmový server, nastavit dalšíERDDAP™v síti, která je odpovědná za poskytování údajů z tohoto zdroje dat.
- Pokud několik takovýchERDDAPs nedostává mnoho žádostí o data, můžete je konsolidovat do jednéERDDAP.
- PokudERDDAP™věnované získání dat z jednoho vzdáleného zdroje je dostat příliš mnoho požadavků, tam je pokušení přidat dalšíERDDAPs přístup ke vzdálenému zdroji dat. Ve zvláštních případech to možná dává smysl, ale je pravděpodobnější, že to přemůže vzdálený zdroj dat. (která se sama porazí) a také zabránit ostatním uživatelům v přístupu ke vzdálenému zdroji dat (Což není hezké.) . V takovém případě zvažte zřízení jinéhoERDDAP™sloužit tomuto datovému souboru a zkopírovat datový soubor na němERDDAP's pevným diskem (viz C ) , snad sEDDGridKopírovatneboEDDtableCopy.
- B servery musí být veřejně přístupné.
C : Pro každýERDDAP-schopný zdroj dat, který má nízkopásmový server (nebo je pomalý servis z jiných důvodů) , Zvažte zřízení jinéhoERDDAP™a uložení kopie souboru údajů na němERDDAP's pevnými disky, možná sEDDGridKopírovatneboEDDtableCopy. Pokud několik takovýchERDDAPs nedostává mnoho žádostí o data, můžete je konsolidovat do jednéERDDAP. C servery musí být veřejně přístupné.
KompozitníERDDAP
D : KompozitERDDAP™je pravidelnáERDDAP™kromě toho, že slouží pouze údaje z jinýchERDDAPs.
- Protože ta kompoziceERDDAP™má v paměti informace o všech datových souborech, může rychle reagovat na žádosti o seznamy datových souborů (úplné vyhledávání textů, vyhledávání kategorií, seznam všech souborů údajů) , a žádosti o individuální formulář pro přístup k datům datového souboru, vytvořit graf neboWMSInformační stránka. To vše jsou malé, dynamicky generované HTML stránky založené na informacích, které jsou uloženy v paměti. Takže odpovědi jsou velmi rychlé.
- Protože žádosti o aktuální data jsou rychle přesměrovány na druhouERDDAPs, složenéERDDAP™může rychle reagovat na žádosti o aktuální data bez použití CPU času, paměti nebo šířky pásma.
- Přesouváním co nejvíce práce (CPU, paměť, šířka pásma) z kompozituERDDAP™na druhouERDDAPs, složenéERDDAP™může se zdát, že slouží data ze všech souborů údajů a přesto stále drží krok s velkým počtem žádostí o údaje od velkého počtu uživatelů.
- Předběžné zkoušky ukazují, že směsERDDAP™může reagovat na většinu žádostí v ~1ms času procesoru, nebo 1000 požadavků/sekundu. Takže 8 jádrový procesor by měl být schopen reagovat na asi 8000 požadavků za sekundu. I když je možné si představit výbuchy vyšší aktivity, které by způsobily zpomalení, to je hodně průniku. Je pravděpodobné, že šířka datového centra bude těsnícím výklenem dlouho před kompozitemERDDAP™Stane se zákoutí.
Aktuální max (čas) ?
TheEDDGrid/TableFromErddap v kompozituERDDAP™změní své uložené informace o každém zdrojovém souboru pouze tehdy, pokud zdrojový soubor je"reloaded"eda některé změny metadat (např. časová proměnnáactual\_range) , čímž vzniká oznámení o předplatném. Pokud má zdrojový soubor data, která se často mění (například nová data každou sekundu) a používá"aktualizace"systém pro zjištění častých změn základních údajů,EDDGrid/TableFromErddap nebude informován o těchto častých změnách až do dalšího souboru souborů "načíst," takžeEDDGrid/TableFromErddap nebude dokonale aktuální. Tento problém lze minimalizovat změnou zdrojového souboru<Načíst každý NMinutes na menší hodnotu (60, 15?) takže existuje více oznámení o předplatném říctEDDGrid/TableFromErddap aktualizovat své informace o zdrojovém souboru.
Nebo pokud váš systém správy dat ví, kdy má zdrojový soubor nová data (např. prostřednictvím skriptu, který kopíruje datový soubor na místo) , a pokud to není super časté (např. každých 5 minut nebo méně často) Existuje lepší řešení:
- Nepoužívejte<aktualizovatEveryNMillis> udržovat zdrojový soubor aktuální.
- Nastavit zdrojový soubor<Načíst každý NMinutes na větší číslo (1440?) .
- Ať skript kontaktuje zdrojový souborURL vlajkyHned poté, co kopíruje nový datový soubor. To povede k tomu, že zdrojový soubor bude dokonale aktualizován a způsobí, že vytvoří oznámení o předplatném, které bude zaslánoEDDGrid/TableFromErddap data data. To povedeEDDGrid/TableFromErddap database to be perfectly up-to-date (No, do 5 sekund po přidání nových údajů) . A vše, co bude provedeno efektivně (bez zbytečného opětovného načítání dat) .