Menü
Ingyenes
bejegyzés
itthon  /  Problémák/ Keith Matsudeira: Scalable Web Architecture and Distributed Systems. BBR rendszer: torlódásszabályozás közvetlenül a torlódáson Kilépés nélküli részlet cfm

Keith Matsudeira: Skálázható webes architektúra és elosztott rendszerek. BBR rendszer: torlódásszabályozás közvetlenül a torlódáson Kilépés nélküli részlet cfm

Ebben a cikkben felvázolunk néhány olyan fogalmat, amelyeket a házventilátor kiválasztásakor kell használni, és elmondjuk a különböző típusú ventilátorokra jellemző jellemzőket. Ezenkívül teszteljük a 120 mm-es akasa Amber AK-183-L2B ventilátort, amely már több mint egy éve a Thermaltake Sonic Tower processzorhűtő rendszer aktív eleme, és amelyet a processzorok és videokártyák tesztelésére használnak. . És meg kell jegyezni, hogy teljes mértékben megérdemelte a jogot, hogy az első hős legyen a rajongóinknak szánt kritikák sorozatában az erőforrásunkról.

A kérdések, amelyekre megpróbálunk válaszolni, a következők lesznek ...

Milyen követelményeket támasztanak a tok ventilátorral szemben?

  1. Teljesítményszint.
  2. Zajszint.
  3. Megjelenés (megvilágítás jelenléte és típusa).
  4. További funkciók (PWM tápegység támogatása, sebességszabályozó, rezgéscsillapítóval felszerelve).

Melyek a fő különbségek a ventilátorok között?

1. Méretek- járókerék mérete.

A ház belső szellőzésének kialakításához a legtöbb esetben 80 mm -es, 92 mm -es vagy 120 mm -es szabványos méretű ventilátorokat használnak, mivel kezdetben rögzítési lyukak vannak kialakítva a tokban történő felszereléshez. Teljesen világos, hogy minél nagyobb a ventilátor járókerék mérete, annál nagyobb a légáramlás szivattyúzási képessége. Ezért a ventilátor kisebb méretű a hatékonysági mutatók elérése érdekében nagy modellek nagyobb sebességgel kell forognia, és ennek megfelelően sokkal nagyobb zajt kell adnia. Emiatt a nagy, 120 mm -es ventilátorok a népszerűek.

Ezen tulajdonságok szemléltetéséhez összehasonlíthatja a Xinruilian Science & Technology Co. azonos sorozatú ventilátor modelljeinek jellemzőit. különböző méretűek:

Méret, mm

Fordulatszám ford./perc

Légáramlás CFM

Zajszint, dB

Nyomás, mm H 2 0

A modellek adott jellemzőiből ítélve megállapíthatjuk, hogy ugyanazon 92 mm -es forgási sebesség mellett a ventilátor 1,65 -ször hatékonyabb lesz, mint a 80 mm, és a 120 mm -es ventilátor kétszer olyan hatékony, mint a 92 mm -es modell, figyelembe véve, hogy minden ventilátor egy típusú járókerékkel rendelkezik.

A járókerék különböző átmérői mellett a ventilátor profilmérete vagy mélysége egyaránt fontos. A 25 mm -es profil "klasszikus" a hagyományos szekrényekhez. A kisebb profilú ventilátorokat alacsony profilúnak, a nagyobb profilt pedig magas profilúnak nevezik. A légáramerősség közvetlenül függ a profil méretétől, amelyet a specifikációban a maximális nyomásérték jellemez.

Például hasonlítsuk össze két 120 mm -es modell jellemzőit - normál és magas profillal, azonos forgási sebességgel.

Méret, mm

Fordulatszám ford./perc

Légáramlás CFM

Zajszint, dB

Nyomás, mm H20

A táblázatból látható, hogy a nagy profilú ventilátor csak a maximális légáramlási nyomás legjobb mutatójában különbözik. A hétköznapi számítógépes rendszerek nincs szükség túlnyomás kialakítására, ezért ezeket a ventilátorokat nem használják bennük. A legtöbb esetben a kiszolgálókban nagy horderejű ventilátorokat használnak, ráadásul vannak megnövelt sebesség forgás és ennek következtében kellően nagy működési zaj.

2. Csapágy típus.

A ventilátorokban három fő csapágytípust használnak: sima, kombinált csúszó és gördülő, valamint két gördülőcsapágyat. Az ilyen típusú csapágyak mellett lényegesen ritkábban vannak hidrodinamikai típusok, amelyeket egyes gyártók külön fejlesztettek ki.

Leggyakrabban a csapágy típusát a következő indexek alapján lehet meghatározni a ventilátor modell nevében, bár mindig tanácsos ellenőrizni a hivatalos specifikációt:

S (ujj) - hüvelycsapágy, amely lényegében hüvely;
VAL VEL (kombináció) - egy golyóscsapágy és rövid persely;
B (labda) vagy 2B (2 golyó)- két golyóscsapágy.

A legegyszerűbb és legolcsóbb, de sajnos nem különösebben tartós a hüvelycsapágy. Ez a csapágy kisméretű réz persely, amelynek belsejében a járókerék tengelye (rúdja) csúszik forgás közben. Az új, kenett hüvelycsapágyas ventilátor teljesen néma lehet, de ez a tulajdonság idővel elveszhet. Megfelelő kenési szint hiányában a persely meglehetősen gyorsan „kimerül”, ami zajt okoz a ventilátorban. Ezenkívül kenés hiányában, magas hőmérsékletű területen dolgozva a ventilátor teljesen elakadhat. Ezt a tényt különösen világosan bizonyítják az olcsó kínai tápegységekkel kapcsolatos esetek, amelyekben gyakran előfordultak olyan esetek, amikor a ventilátor megállt egy hüvelycsapágyon, amely biztosítja a teljesítmény -félvezető elemek hűtését. Ennek eredményeként az áramellátás meghibásodott.

A csapágy kombinált változata viszonylag hosszabb élettartamú.

A két golyóscsapággyal ellátott csapágy a legdrágább, de ugyanakkor tartósabb megoldás. Ez a fajta csapágy szabadon működhet magas hőmérsékletű területen. De ugyanakkor az ilyen rajongók között gyakran találhat olyan példányokat, amelyek meglehetősen hangos és kellemetlen zajt bocsátanak ki. Hasonló kép különösen jellemző az olcsó ventilátorokra, mivel a teljes szerkezet zajjellemzői közvetlenül függnek egy miniatűr csapágy gyártási minőségétől. Ezért, ha golyóscsapágyas terméket választ, ne törekedjen az olcsóságra, mert még a drágább modellek is ritkán csendesek.

3. Motorosztály.

Minden dobozventilátort 4 pólusú motor hajt egyenáram... A sebesség tekintetében mindegyiket három kategóriába sorolják: alacsony fordulatszám 2000 fordulat / perc, közepes sebesség 2000 és 3000 fordulat / perc között, valamint nagy fordulatszám 3000 fordulat / perc felett. Gyakran megtudhatja a ventilátor motor osztályát a nevén lévő index alapján, amelyet gyakran feltüntetnek a matricán:

L (alacsony) - lassú mozgás ( egészen 2000 -ig fordulat);
M (középső) - átlagos ( 2000 -től 3000 -ig fordulat);
H (magas) - Magassebesség ( több mint 3000 fordulat).

Milyen jellemzői vannak a gyártó specifikációjában szereplő adatoknak?

Ventilátor sebesség percenkénti fordulatszámban mérve (RPM - fordulat percenként). Mivel maga a ventilátor fordulatszáma szinte egyenesen arányos lehet a tápfeszültséggel, a specifikációban megadott érték megfelel a névleges tápfeszültségnek. Minél nagyobb a forgási sebesség, annál hatékonyabb a ventilátor, de általában zajosabb is.

Légáramlat megadható CFM (köbméter / perc, CFM) - köbméter / perc vagy köbméter / óra (m 3 / h). Ebben az esetben 1 CFM ≈ 1,7 m 3 / h. Ez az érték egy bizonyos ideig a "szivattyúzott" levegő mennyiségét tükrözi, feltéve, hogy nincs ellenállás a légárammal szemben, vagyis a ventilátor mindkét oldalán egyenlő légnyomással. Természetesen minél nagyobb ez az érték, annál jobb.

Statikus légáramlás A ventilátort általában milliméter vízoszlopban adják meg, és a ventilátor által keltett légáram erejét jellemzi.

Emlékezzünk vissza, hogy a nyomást a P = F / S képlet alapján kell kiszámítani. Vagyis a nyomás a légáram erejének és a területnek az aránya, amelyre hat. A specifikáció a maximális légáramot jelzi, amelyet a ventilátor hoz létre, ha az ellenállás miatt nem tud légáramot létrehozni.

A teljes ventilátor jellemző a "Teljesítménygörbe" grafikonon látható.

A teljesítménygörbe a légáram és a nyomás közötti kapcsolatot jelöli. A görbe tengelyen elhelyezkedő legmagasabb pontja csak a specifikációban megadott maximális nyomás. A görbe alsó pontja, amely a másik tengelyen fekszik, a ventilátor maximális légáramának felel meg, amikor nem kell nyomást növelnie. Valós körülmények között, nevezetesen abban az esetben, a légáramnak le kell győznie bizonyos ellenállást. Minden testnek külön -külön megvan a maga ellenállási foka. A rendszer ellenállását lejtésként fejezzük ki a grafikonon, az egyenes és a görbe metszéspontja pedig nem más, mint a ventilátor működési pontja feltételes rendszerünkben.

Rajongói erőforrás azt az ezer órát mérve, amely alatt a ventilátornak dolgoznia kell, és biztosítania kell a bejelentett jellemzőket. A cikk szerzője nem teljesen ismeri azokat a működési feltételeket, amelyek mellett az idézett értékeket elérik, mivel az élettartam közvetlenül függ a működési feltételektől. Feltételezzük, hogy a ventilátor képes a megadott számú órát dolgozni anélkül, hogy elveszítené zajminőségét. Az erőforrás nagymértékben függ a csapágy típusától és minőségétől. A siklócsapágyak jellemzően 30 000 órát, a kombinált csapágyak 45 000 órát, a dupla golyóscsapágyak pedig 60 000 vagy annál több órát jelentenek.

A legtöbb esetben a hüvelycsapágyon lévő ventilátor körülbelül egy évig csendesen működhet, bár a gyártók 30 ezer adatot deklarálnak, ezért nem szabad elfogultnak lenni ezekkel a számokkal kapcsolatban - ezek meglehetősen relatívak. Ha pedig körülássuk, kiderül, hogy a gyártó a ventilátorok időszakos karbantartását is értette, azaz kenje meg azt hétköznapi felhasználók ritkán gyártják.

Most térjünk vissza recenziónk hőséhez, a rajongóhoz akasa AK-183-L2Bés nézd meg a specifikációját:

akasaAK-183-L2B

Méret, mm

Fordulatszám, ford./perc

Légáramlás CFM

Nyomás, mm H20

Erőforrás, h

Csapágy típus

két guruló

3 tűs

Zajszint, dB

Tápfeszültség, V

Termékek weboldal

átlag ár

Az akasa AK-183-L2B ventilátor átlátszó műanyag zacskóba van csomagolva. A csomag hátulján kék kartonlap található, amely kiemeli az átlátszó burkolatot és a ventilátor áttetsző borostyánsárga járókerékét. Általában mindent az Akasa Group szokásos vállalati kék-sárga színe díszít.

A kartondoboz hátoldalán egy specifikációs lap található öt különböző nyelven.

A ventilátoron kívül a csomag alján egy kis fekete kartondoboz található egy fordításban, amely "3-4 tűs adapterként" hangzik.

Ezért egyáltalán nem meglepő, hogy a doboz ugyanazt az adaptert tartalmazta, amely lehetővé teszi a ventilátor csatlakoztatását a perifériás eszközök csatlakozóiból, és ezenkívül rendelkezik egy 3 tűs csatlakozóval a ventilátor sebességének szabályozására. A kis fekete dobozban négy csavar is helyet kapott, amelyek a ventilátort a tokba szerelték.

Az akasa AK-183-L2B ventilátor burkolata fehér, átlátszó műanyagból, járókereke borostyánsárga, áttetsző műanyagból készült. Valójában, ha figyelembe vesszük az akasa vállalat teljes termékválasztékát, akkor néhány egyszerű és szabványos megoldás ritkán találkozik vele, mert a vállalat nagyrészt kifejezetten modifikációra tervezett áruk forgalmazásával foglalkozik. Ez azonban egyáltalán nem jelenti azt, hogy ha nem tartozik a módosítók kasztjához, és csak gyakorlati okokból szokta értékelni a terméket, akkor ez a ventilátor és a többi hasonló termék nem felel meg Önnek. Valójában, amikor termékeket gyárt az úgynevezett nehéz felhasználóknak, módosítóknak vagy overlockereknek, ez mindig fokozott figyelmet jelent elsősorban a kivitelezés minőségére és valamivel magasabb tulajdonságaira. Ezért egyáltalán nem meglepő, hogy az ilyen termékek fogyasztói tulajdonságai szinte mindig magasabbak, mint az egyszerű termékeké.

Külsőleg a ventilátor természetesen elsősorban a sárga és a fehér gyönyörű kombinációjával tűnik ki, és úgy tűnik, hogy egy ilyen ventilátornak egyszerűen háttérvilágítással kell rendelkeznie, de valójában nem. Aerodinamikai szempontból a ventilátorban nem valósult meg innováció vagy know-how-egy egyszerű, hét lapátos járókerék.

Az akasa AK-183-L2B ventilátor alacsony sebességű modellekhez tartozik, névleges forgási sebessége 1400 fordulat / perc, míg a maximális légáramlás elérheti a 44,8 CFM-et, a statikus nyomás pedig 1,1 mm-es vízoszlop. A specifikációk sem szuper-magasak, sem nem egészen hétköznapiak, de ez nem meglepő, hiszen az otthoni rendszer tok-rajongója számára elsősorban a zajra vonatkozó magasabb követelményeket támasztják alá.

E tekintetben a specifikáció meglehetősen alacsony, 18 dB zajszintet jelez. Meg kell jegyezni, hogy az akasa AK-183-L2B ventilátor két golyóscsapágyon alapul, és erőforrása a gyártó adatai szerint 80 000 óra. A golyóscsapágyak szokásos értéke 60 000 óra, így a kissé megemelt érték okot ad arra, hogy reménykedjünk a gyártásuk jobb megközelítésében, mert mint már megjegyeztük, a golyóscsapágy gyártásának minősége határozza meg annak zajjellemzőit .

A ventilátort egy 3 tűs tápcsatlakozó táplálja, amely nem támogatja a PWM tápegységeket.

Tesztelés

A teszt gyakorlati része két szakaszból áll, amelyekben a ventilátor névleges fordulatszámon generált légáramát teszteli, valamint annak hangerejét fül alapján értékeli.

1. tesztszám

Az első teszt során a ventilátor a Thermalright SI-128 hűtő aktív elemeként fog működni. A tesztelés nyitott tokban történik, és a fő szabályozott paraméter az Intel Core 2 Duo E6300 processzor fűtési hőmérséklete, amely 2,8 GHz -re van túlhajtva, és az alaplap hőmérséklete.

2. tesztszám

A második teszt során a ventilátort rendeltetésszerűen fogják használni, mint a hátsó panelre szerelt és kifújásra szolgáló burkolatventilátort. A teszt során a tok zárva lesz, és nem lesz benne más ventilátor. A fő vezérelhető paraméter az Intel Core 2 Duo E6300 processzor fűtési hőmérséklete is lesz, de most túlhajtás nélkül, amelyre a Thermaltake Sonic Tower (CL-P0071) passzív hűtőrendszer van telepítve és az alaplap hőmérséklete. A teszt eredményét az Everest alkalmazásban a processzor stressztesztjének 10 perces "futtatása" után rögzítik.

Tesztelje a platform konfigurációját Intel processzor a következő összetevőkből áll:

Alaplap

Gigabyte GA-965P-DS4 (Intel P965 Express)

processzor

Intel Core 2 Duo E6300 (LGA775, 1,86 GHz, L2 2 MB) @ 2,8 GHz

RAM

2 x DDR2-800 1024 MB Apacer PC6400

Videokártya

EVGA GeForce 8600GTS 256 MB DDR3 PCI-E

HDD

Samsung HD080HJ 80 GB SATA-300

Optikai meghajtó

ASUS DRW-1814BLT SATA

Tápegység

Chieftec CFT-500-A12S 500W 120 mm-es ventilátor

CODEGEN M603 MidiTower

Az akasa AK-183-L2B ventilátor a többi versenytárshoz hasonlóan jó teljesítményt mutat. A meglehetősen alacsony, 18 dB zajszintet csak szubjektív véleményünkkel tudjuk megerősíteni. A jelzett érték valóban megfelel a valós zajszintnek - maximális sebességnél kis zümmögést bocsát ki.

Következtetések.

Az akasa AK-183-L2B ventilátor nem kizárólagosan gyönyörűen díszítő dekoráció, ahogy a vevő azonnal gondolhatja. Elég nagy légáramot hozhat létre, és ami a legfontosabb, meglehetősen alacsony zajszintet bocsát ki. Ha figyelembe vesszük elfogadható költségét, mint egy golyóscsapágyas ventilátor kiváló minőségű modellje, akkor ebben az árukategóriában az ár / fogyasztói tulajdonságok tekintetében ez lesz az egyik legjobb. Ismételjük meg, hogy tesztlaboratóriumunkban az akasa AK-183-L2B ventilátor több mint egy éve üzemel, és zajminősége gyakorlatilag nem változott ez idő alatt.

Előnyök:

  • nagy légáramot hoz létre;
  • alacsony zajszint;
  • jó ár / fogyasztói minőség arány.

A hátrányok közé tartozik:

  • a PWM támogatás hiánya.

Köszönetünket fejezzük ki a PF Service LLC (Dnyipropetrovszk) vállalatnak a teszteléshez biztosított berendezésekért.

A cikk 4669 alkalommal olvasható

Iratkozzon fel csatornáinkra

A nyílt forráskódú szoftverek a legnagyobb webhelyek alapvető építőkövéivé váltak. Ezeknek a webhelyeknek a növekedésével megjelentek a legjobb gyakorlatok és irányelvek az architektúrájukhoz. Ez a fejezet a nagy weboldalak tervezésekor figyelembe veendő kulcskérdésekre, valamint az e célok eléréséhez használt alapvető összetevőkre kíván kitérni.

Ennek a fejezetnek a középpontjában a webrendszerek elemzése áll, bár az anyagok egy része más elosztott rendszerekre is extrapolálható.

1.1 Az elosztott webes rendszerek építésének elvei

Mit jelent pontosan egy méretezhető webhely vagy alkalmazás létrehozása és kezelése? Primitív szinten egyszerűen a felhasználók távoli erőforrásokhoz való csatlakoztatása az interneten keresztül. És az erőforrások, vagy azokhoz az erőforrásokhoz való hozzáférés, amelyek több szerverre vannak szétszórva, az a link, amely skálázhatóvá teszi a webhelyet.

A legtöbb élethez hasonlóan segíthet, ha időt szán a webszolgáltatás kiépítésére. a nagy weboldalak mögötti megfontolások és kompromisszumok megértése kifizetődhet az okosabb döntések során, amikor kisebb weboldalakat építenek. Az alábbiakban felsorolunk néhány kulcsfontosságú elvet, amelyek befolyásolják a nagyméretű webes rendszerek tervezését:

  • Elérhetőség: A webhelyek rendelkezésre állási ideje kritikus fontosságú sok vállalat jó hírneve és működése szempontjából. A nagyobb online kiskereskedelmi üzletek némelyike, ha néhány percig nem érhető el, több ezer vagy millió dolláros bevételkiesést eredményezhet. Így rendszereik fejlesztése, amelyek mindig rendelkezésre állnak és ellenállnak a kudarcnak, szintén alapvető üzleti és technológiai követelmény. A magas rendelkezésre állás az elosztott rendszerekben megköveteli a kulcsfontosságú komponensek redundanciájának alapos megfontolását, a részleges rendszerhibákból való gyors helyreállítást és a problémamentes lecsökkentést.
  • Teljesítmény: A webhelyek teljesítménye a legtöbb webhely fontos mutatója lett. A webhelyek sebessége befolyásolja a felhasználói élményt és elégedettséget, valamint a keresőmotorok rangsorolását - ez a tényező közvetlenül befolyásolja a közönségmegtartást és a jövedelmet. Ennek eredményeként a legfontosabb egy olyan rendszer létrehozása, amely a gyors válaszokra és az alacsony késleltetésre van optimalizálva.
  • Megbízhatóság: a rendszernek robosztusnak kell lennie, hogy egy adott adatkérés következetesen visszaadjon bizonyos adatokat. Adatváltozás vagy frissítés esetén ugyanazon lekérdezésnek új adatokat kell visszaadnia. A felhasználóknak tudniuk kell, ha valamit beírtak a rendszerbe vagy tároltak benne, akkor biztosak lehetnek abban, hogy a helyükön marad a későbbi adatlehívás lehetősége érdekében.
  • Skálázhatóság: Amikor bármilyen nagy elosztott rendszerről van szó, a méret csak egy a sok figyelembe veendő dolog közül. Ugyanilyen fontosak a nagy mennyiségű munkaterhelés kezeléséhez szükséges áteresztőképesség növelésére irányuló erőfeszítések, amelyeket rendszerint rendszer skálázhatóságnak neveznek. A skálázhatóság a rendszer különböző paramétereire vonatkozhat: szám további forgalom hogy mit tud kezelni, milyen egyszerű a tárkapacitás növelése, vagy hány más tranzakciót lehet feldolgozni.
  • Irányíthatóság: Egy könnyen kezelhető rendszer megtervezése egy másik fontos tényező. A rendszer kezelhetősége megegyezik a „karbantartás” és „frissítés” műveletek skálázhatóságával. A kezelhetőség biztosítása érdekében figyelembe kell venni a diagnosztizálás és a felmerülő problémák megértésének, a frissítés vagy módosítás egyszerűsége, a szeszélyes rendszer kérdéseit. működésben van. (Vagyis a várt módon működik hiba vagy kivétel nélkül?)
  • Ár: A költség fontos tényező. Ez nyilvánvalóan tartalmazhat hardver- és szoftverköltségeket, de fontos figyelembe venni a rendszer telepítéséhez és karbantartásához szükséges egyéb szempontokat is. A rendszer kiépítéséhez szükséges fejlesztői időmennyiséget, a rendszer üzembe helyezéséhez szükséges működési erőfeszítéseket, és még a megfelelő szintű képzést is előre kell látni. A költség a birtoklás teljes költsége.

Ezen elvek mindegyike a döntéshozatal alapja az elosztott webes architektúra kialakításakor. Ugyanakkor konfliktusba is kerülhetnek egymással, mert az egyik céljának elérése a mások elhanyagolásának rovására megy. Egy egyszerű példa: ha úgy dönt, hogy egyszerűen több kiszolgálót ad hozzá teljesítménymegoldásként (skálázhatóság), növelheti a kezelhetőség (további szervert kell üzemeltetnie) és a szervervásárlás költségeit.

Bármilyen webes alkalmazás fejlesztésekor fontos figyelembe venni ezeket a fő elveket, még akkor is, ha meg kell erősíteni, hogy a projekt adományozhat egyet vagy többet ezek közül.

1.2 Alapok

A rendszer felépítésének mérlegelésekor számos problémát kell kiemelni, például azt, hogy mely összetevőket érdemes használni, hogyan illeszkednek egymáshoz, és milyen kompromisszumokat lehet elérni. A pénz befektetése a skálázásba anélkül, hogy nyilvánvalóan szükség lenne rá, nem tekinthető okos üzleti döntésnek. A tervezés némi előrelátása azonban jelentősen időt és erőforrásokat takaríthat meg a jövőben.

Ez a rész néhány alapvető tényezőre összpontosít, amelyek szinte minden nagy webes alkalmazás számára kritikusak: Szolgáltatások,
redundancia, szegmentálás, és visszautasító kezelés... E tényezők mindegyike magában foglal választásokat és kompromisszumokat, különösen az előző részben leírt elvek összefüggésében. Mondjunk példát a tisztázáshoz.

Példa: Image Hosting Application

Valószínűleg korábban is tett közzé képeket az interneten. A nagyméretű, több képet tároló és megjelenítő webhelyek esetében nehézségekbe ütközik egy költséghatékony, rendkívül megbízható architektúra létrehozása, amely alacsony válasz késéssel rendelkezik (gyors visszakeresés).

Képzeljünk el egy olyan rendszert, ahol a felhasználók feltölthetik képeiket egy központi szerverre, és a képeket a Flickrhez vagy a Picasához hasonlóan egy webhelylinken vagy API -n keresztül lehet kérni. A leírás egyszerűsítése érdekében tegyük fel, hogy ennek az alkalmazásnak két fő feladata van: képek feltöltése (írása) a szerverre és képek kérése. Természetesen fontos a hatékony betöltés, de a gyors szállítás elsőbbséget élvez, amikor a felhasználók ezt kérik (például a képek megjelenítését kérhetik egy weboldalon vagy más alkalmazásban). Ez a funkció hasonló ahhoz, amit egy webszerver vagy a tartalomszolgáltató hálózat (CDN) élszervere nyújthat. A CDN -kiszolgáló általában sok helyen tárolja az adatobjektumokat, így azok földrajzi / fizikai elhelyezkedése közelebb van a felhasználókhoz, ami jobb teljesítményhez vezet.

A rendszer egyéb fontos szempontjai:

  • A tárolt képek száma korlátlan lehet, ezért a tárolás skálázhatóságát ebből a szempontból kell figyelembe venni.
  • A képek letöltésének / kérésének alacsony késleltetésűnek kell lennie.
  • Ha egy felhasználó feltölt egy képet a szerverre, akkor az adatainak mindig teljesnek és hozzáférhetőnek kell maradniuk.
  • A rendszernek könnyen karbantarthatónak kell lennie (kezelhetőség).
  • Mivel a képek tárolása nem túl jövedelmező, a rendszernek költséghatékonynak kell lennie.

Egy másik lehetséges probléma ezzel a kialakítással az, hogy egy olyan webszerver, mint az Apache vagy a lighttpd, általában felső határt szab az egyidejű kapcsolatok számának kezelésére (az alapértelmezett érték 500 körül van, de ennél jóval magasabb is lehet). És nagy forgalom mellett, írja gyorsan ki tudja használni ezt a korlátot. Mivel az olvasás lehet aszinkron, vagy kihasználhat más teljesítményoptimalizálási lehetőségeket, például a gzip tömörítést vagy a darabolást, a webszerver gyorsabban kapcsolhatja a hírcsatorna olvasását, és válthat a kliensek között, ami sokkal több kérést szolgál ki, mint a maximális számú kapcsolat (Apache és a maximális az 500 -ra beállított kapcsolatok száma, teljesen lehetséges másodpercenként több ezer olvasási kérés kiszolgálása). A bejegyzések ezzel szemben hajlamosak nyitott kapcsolatot fenntartani a teljes letöltési idő alatt. Például egy 1 MB -os fájl átvitele a szerverre a legtöbb otthoni hálózaton 1 másodpercig is eltarthat, így a webszerver csak 500 ilyen párhuzamos írást képes feldolgozni.


1.2. Ábra: Az írás és az írás elválasztása

Egy ilyen potenciális probléma előrejelzése azt sugallja, hogy el kell különíteni a képek olvasását és írását az itt bemutatott független szolgáltatásokhoz. Ez lehetővé teszi nemcsak az egyes skálák egyéni skálázását (mivel valószínű, hogy mindig többet olvasunk, mint írunk), hanem azt is, hogy lépést tudjunk tartani az egyes szolgáltatásokban zajló eseményekkel. Végül felvázolja a jövőbeli problémákat, megkönnyítve a lassú olvasási problémák diagnosztizálását és értékelését.

Ennek a megközelítésnek az az előnye, hogy képesek vagyunk egymástól függetlenül megoldani a problémákat - anélkül, hogy gondolnunk kellene arra, hogy ugyanabban a kontextusban kell új képeket rögzíteni és beszerezni. Mindkét szolgáltatás továbbra is a globális képállományt használja, de egy adott szolgáltatásnak megfelelő módszerek használatakor képesek saját teljesítményük optimalizálására (például kérések sorba állításával vagy népszerű képek gyorsítótárazásával - erről később). Mind a karbantartást, mind a költségeket tekintve minden szolgáltatás szükség szerint skálázható. Ez pedig pozitív tényező, mivel ezek kombinálása és keverése akaratlanul is befolyásolhatja teljesítményüket, mint a fent leírt forgatókönyvben.

Természetesen a fenti modell akkor működik a legjobban, ha két különböző végpontja van (valójában ez nagyon hasonló a felhőalapú tárolószolgáltatók és a tartalomszállító hálózatok több megvalósításához). Ezeknek a problémáknak számos módja van, és minden esetben kompromisszumot lehet találni.

Például a Flickr megoldja ezt az olvasási-írási problémát azáltal, hogy a felhasználókat különböző modulok között osztja el, így minden modul csak korlátozott számú meghatározott felhasználót tud kiszolgálni, és a felhasználók számának növekedésével újabb modulok kerülnek a fürtbe (lásd a Flickr-skálázást) bemutatás.
http://mysqldba.blogspot.com/2008/04/mysql-uc-2007-presentation-file.html). Az első példában könnyebb a hardvert méretezni a tényleges használati terhelés alapján (az olvasások és írások száma a teljes rendszerben), míg a Flickr -skálázás a felhasználói bázis alapján történik (ez azonban feltételezi a különböző felhasználók közötti egyenlő használatot, így a kapacitás tartalékkal kell tervezni). Régebben az egyik szolgáltatás elérhetetlensége vagy problémája használhatatlanná tette az egész rendszer funkcionalitását (például senki nem írhat fájlokat), akkor az egyik Flickr -modul elérhetetlensége csak a hozzá kapcsolódó felhasználókat érinti. Az első példában könnyebb műveleteket végrehajtani egy teljes adathalmazon - például az írószolgáltatás frissítése új metaadatokkal, vagy az összes kép metaadatának keresése -, míg a Flickr architektúrával minden modult frissíteni vagy keresni kellett (vagy a keresőszolgáltatást létre kellett hozni a ténylegesen erre szánt metaadatok rendezéséhez).

Ami ezeket a rendszereket illeti, nincs csodaszer, de mindig a fejezet elején leírt elvekből kell kiindulni: határozza meg a rendszer szükségleteit (terhelés "olvasási" vagy "írási" műveletekkel vagy egyszerre, a párhuzamosság szintje , adathalmazokra, tartományokra, kísérletekre stb. irányuló lekérdezések), összehasonlító összehasonlító benchmarkingot végezni a különböző alternatívákról, megérteni a lehetséges rendszerhibák feltételeit, és átfogó meghibásodási tervet kidolgozni.

Redundancia

Ahhoz, hogy elegánsan kezelje a kudarcot, a webes architektúrának rendelkeznie kell a szolgáltatások és adatok redundanciájával. Például, ha egyetlen fájl egyetlen példányát tárolja egyetlen szerveren, akkor a szerver elvesztése a fájl elvesztését is jelenti. Ezt a helyzetet aligha lehet pozitívan jellemezni, és általában több másolat vagy biztonsági mentés létrehozásával elkerülhető.

Ugyanez az elv vonatkozik a szolgáltatásokra is. Az egyetlen csomópont meghibásodását úgy lehet megvédeni, hogy az alkalmazás funkcionalitásának szerves részét képezi annak biztosítása érdekében, hogy az alkalmazás több példánya vagy verziója párhuzamosan fusson.

A rendszer redundanciájának létrehozásával kiküszöbölheti a gyengeségeket, és katasztrófa esetén redundáns vagy redundáns funkciókat biztosíthat. Például, ha ugyanazon szolgáltatás két példánya fut a "termelésben", és az egyik részben vagy egészben meghibásodik, a rendszer le tudja győzni a hibát a átvált egy használható másolatra.
A váltás történhet automatikusan, vagy manuális beavatkozást igényel.

A szolgáltatás -redundancia másik kulcsfontosságú szerepe a létrehozás nem megosztott architektúra... Ezzel az architektúrával minden csomópont képes önállóan dolgozni, ráadásul központi "agy" hiányában, amely az állapotokat vezérli vagy más csomópontok műveleteit koordinálja. Elősegíti a skálázhatóságot, mivel új csomópontok hozzáadása nem igényel különleges feltételeket vagy ismereteket. A legfontosabb, hogy ezekben a rendszerekben nincs kritikus kudarcpont, így sokkal ellenállóbbak lesznek a kudarccal szemben.

Például képszerver -alkalmazásunkban minden kép redundáns másolattal rendelkezik valahol a hardverben (ideális esetben más földrajzi hellyel, ha katasztrófa, például földrengés vagy adatközpont -tűz keletkezik), és a képhozzáférési szolgáltatások feleslegesek, mindegyik potenciálisan kiszolgálja a kéréseket. (Cm.)
Előretekintve a terheléselosztók nagyszerű módja ennek a megvalósításának, de erről bővebben alább.


1.3. Ábra: Redundáns képtárhely -alkalmazás

Szegmentáció

Az adatkészletek olyan nagyok lehetnek, hogy nem férnek el egyetlen kiszolgálón. Az is előfordulhat, hogy a számítási műveletek túl sok számítógép -erőforrást emésztenek fel, ami csökkenti a teljesítményt és szükségessé teszi a teljesítmény növelését. Mindenesetre két lehetősége van: függőleges vagy vízszintes méretezés.

A nagyítás azt jelenti, hogy több erőforrást kell hozzáadni egyetlen szerverhez. Tehát egy nagyon nagy adathalmaz esetében ez több (vagy több) merevlemez hozzáadását jelentené, és így a teljes adatkészlet elférne egy szerveren. Számítási műveletek esetén ez azt jelentené, hogy a számítást áthelyezzük egy nagyobb kiszolgálóra, gyorsabb processzorral vagy több memóriával. Mindenesetre függőleges skálázást hajtanak végre annak érdekében, hogy a számítási rendszer külön erőforrása további adatfeldolgozásra alkalmas legyen.

A vízszintes skálázás viszont további csomópontok hozzáadását jelenti. Nagy adathalmaz esetén ez egy második szerver hozzáadását jelentené a teljes adatmennyiség egy részének tárolására, és egy számítási erőforrás esetében ez a munka felosztását vagy néhány további csomóponton keresztül történő betöltést jelentene. A vízszintes skálázás lehetőségeinek teljes kihasználásához ezt úgy kell megvalósítani belső elv rendszer architektúra fejlesztése. Ellenkező esetben a vízszintes méretezéshez szükséges kontextus megváltoztatása és kiemelése problémás lehet.

A méretezés legelterjedtebb módja a szolgáltatások szilánkokra vagy modulokra való felosztása. Eloszthatók oly módon, hogy minden logikai funkcióhalmaz külön -külön működjön. Ez történhet földrajzi határokkal vagy más kritériumokkal, például fizető és nem fizető felhasználókkal. Ezeknek a rendszereknek az az előnye, hogy javított funkcionalitással szolgáltatást vagy adattárat biztosítanak.

Példánkban a képszerver esetében lehetséges, hogy a kép tárolására használt egyetlen fájlszervert le lehet cserélni több fájlszerverre, amelyek mindegyike saját egyedi képkészletet tartalmaz. (Lásd) Ez az architektúra lehetővé teszi a rendszer számára, hogy minden fájlszervert képekkel töltsön fel, és további kiszolgálókat adjon hozzá, amint a lemezterület megtelik. A tervezéshez szükség lesz egy elnevezési sémára, amely a képfájl nevét társítja a tartalmazó szerverhez. A kép neve generálható a kiszolgálókhoz tartozó következetes kivonatolási sémából. Vagy alternatívaként minden képhez tartozhat növekményes azonosító, amely lehetővé teszi, hogy a kézbesítési szolgáltatás csak az egyes kiszolgálókhoz tartozó azonosítók tartományát dolgozza fel (indexként) a kép kérésekor.


1.4. Ábra: Képmegosztó alkalmazás redundanciával és töredezettséggel

Természetesen nehézségek merülnek fel az adatok vagy a funkciók több szerveren történő elosztásakor. Az egyik legfontosabb kérdés - adat helye; elosztott rendszerekben, minél közelebb vannak az adatok a műveletek helyéhez vagy a számítási ponthoz, annál jobb a rendszer teljesítménye. Következésképpen az adatok elosztása több szerver között potenciálisan problémás, mivel bármikor, amikor az adatokra szükség van, fennáll annak a veszélye, hogy esetleg nem állnak rendelkezésre a kereslet helyén, a szervernek költséges mintavételt kell végeznie a szükséges információkról a hálózaton keresztül .

Egy másik lehetséges probléma merül fel a formában
következetlenség (következetlenség). Amikor a különböző szolgáltatások olvasnak és írnak egy megosztott erőforráson, esetleg egy másik szolgáltatásban vagy adattárolóban, fennáll a versenyfeltételek lehetősége - amikor egyes adatok a jelenlegi állapotuknak megfelelően frissülnek, de valójában a frissítés előtt olvassák be őket - ebben az esetben az adatok inkonzisztensek. Például egy képszolgáltatási forgatókönyvben versenyfeltétel fordulhat elő, ha az egyik ügyfél kérést küldött a kutya képének frissítésére, megváltoztatva a "Kutya" címet "Gizmo" -ra, miközben egy másik ügyfél olvasta a képet. Ilyen helyzetben nem világos, hogy melyik címet, "Kutya" vagy "Gizmo" kapta volna meg a második ügyfél.

Természetesen vannak akadályok az adatok megosztásával kapcsolatban, de a sharding lehetővé teszi az egyes problémák megkülönböztetését a többitől: adatok, terhelés, használati minták stb. vezérelt blokkokba. Ez segíthet a méretezhetőségben és a kezelhetőségben, de a kockázat továbbra is fennáll. Számos módja van a kockázat csökkentésére és a zavarok kezelésére; a rövidség érdekében azonban ezekre a fejezetekre nem terjed ki. Ha további információra van szüksége erről a témáról, akkor tekintse meg a hibatűrés és -figyelés blogbejegyzést.

1.3. A gyors és skálázható adathozzáférés szerkezeti elemei

Miután kitértünk néhány alapelvre az elosztott rendszerek fejlesztésében, térjünk át a nehezebb pontra - az adathozzáférés skálázására.

A legegyszerűbb webes alkalmazások, például a LAMP verem alkalmazások hasonlóak a képhez.


1.5. Ábra: Egyszerű webes alkalmazások

Az alkalmazás növekedésével két nagy kihívás merül fel: az alkalmazáskiszolgálóhoz és az adatbázishoz való hozzáférés skálázása. Egy nagymértékben skálázható alkalmazás kialakításnál a webszerver vagy az alkalmazásszerver általában minimálisra csökken, és gyakran olyan architektúrát valósít meg, amely nem oszt meg erőforrásokat. Ez a rendszer kiterjeszti az alkalmazáskiszolgáló réteget. Ennek a kialakításnak köszönhetően a kemény munka lekerül a veremről az adatbázis -kiszolgálóra és a támogató szolgáltatásokra; Itt jönnek szóba a valódi méretezési és teljesítményproblémák.

A fejezet további része néhány leggyakoribb stratégiára és technikára összpontosít, amelyek javítják az ilyen típusú szolgáltatások teljesítményét és méretezhetőségét az adatokhoz való gyors hozzáférés biztosításával.


1.6. Ábra: Egyszerűsített webes alkalmazás

A legtöbb rendszer egyszerűsíthető diagrammá,
ami jó kiindulópont a mérlegelés megkezdéséhez. Ha sok adat áll rendelkezésére, feltételezheti, hogy azt szeretné, hogy olyan könnyen és gyorsan hozzáférhető legyen, mint az édességdoboz az asztal felső fiókjában. Bár ez az összehasonlítás túlságosan leegyszerűsített, két kihívást jelentő problémára mutat rá: az adattárház méretezhetőségére és a gyors adathozzáférésre.

Ebben a szakaszban tegyük fel, hogy sok terabájt (TB) adat áll rendelkezésére, és lehetővé teszi a felhasználók számára, hogy az adatok kis darabjaihoz hozzáférjenek, külön sorrendben. (Cm.)
Hasonló feladat a képfájl megkeresése valahol a fájlkiszolgálón a mintakép -tároló alkalmazásban.


1.7. Ábra: Konkrét adatok elérése

Ez különösen nehéz, mert terabájtnyi adat memóriába töltése nagyon költséges lehet, és közvetlenül befolyásolja a lemez I / O műveleteinek számát. A lemezről történő olvasás sebessége többszörösen alacsonyabb, mint a RAM -ból való olvasás sebessége - mondhatjuk, hogy a memória elérése olyan gyors, mint Chuck Norrisé, míg a lemezhez való hozzáférés lassabb, mint a rendelőben lévő sor. Ez a sebességkülönbség különösen nagy adathalmazok esetében észlelhető; száraz számokban a memóriahozzáférés hatszor gyorsabb, mint a lemezolvasás a szekvenciális olvasásoknál, és 100 000 -szer gyorsabb a véletlenszerű olvasásoknál (lásd Pathologies of Big Data, http://queue.acm.org/detail. cfm? id = 1563874). ). Sőt, még azzal is egyedi azonosítók Egy kis adathalmaz felkutatásának problémája ugyanolyan nehéz lehet, mint az utolsó csokoládéval töltött cukorka kivonása egy dobozból, ahol több száz más cukorka van, anélkül, hogy megnézné.

Szerencsére sokféle megközelítést alkalmazhat a dolgok egyszerűsítésére, amelyek közül a négy legfontosabb a gyorsítótárak, a proxyk, az indexek és a terheléselosztók. Ennek a szakasznak a fennmaradó része azt tárgyalja, hogy ezek a fogalmak hogyan használhatók fel az adatok gyorsabb eléréséhez.

Gyorsítótárak

A gyorsítótárazás előnye az alapelv, hogy a közelmúltban kért adatokra valószínűleg ismét szükség lesz. A gyorsítótárakat a számítástechnika szinte minden rétegében használják: hardverek, operációs rendszerek, webböngészők, webes alkalmazások stb. A gyorsítótár olyan, mint a rövid távú memória: korlátozott méretű, de gyorsabb, mint az eredeti adatforrás, és nemrégiben hozzáférhető elemeket tartalmaz. A gyorsítótárak az architektúra minden szintjén létezhetnek, de gyakran a kezelőfelülethez legközelebb eső szinten vannak, ahol úgy valósítják meg őket, hogy gyorsan visszaadják az adatokat jelentős háttérterhelés nélkül.

Tehát hogyan lehet a gyorsítótárat használni az adathozzáférés felgyorsítására a minta API -ban? Ebben az esetben több megfelelő gyorsítótár -hely létezik. Az egyik lehetséges elhelyezési lehetőségként csomópontokat választhat ki a lekérdezési szinten, ahogy az itt látható
.


1.8. Ábra: Gyorsítótár elhelyezése lekérdezési szintű csomóponton

Ha a gyorsítótárat közvetlenül a kérés szintű csomópontra helyezi, akkor a válaszadatok helyi tárolása lehetséges. Minden alkalommal, amikor szolgáltatáskérés történik, a gazda gyorsan visszaadja a helyi, gyorsítótárazott adatokat, ha vannak ilyenek. Ha nincs a gyorsítótárban, akkor a kérési csomópont adatokat kér a lemezről. A gyorsítótár a lekérdezési szint egyetlen csomópontjában is megtalálható mind a memóriában (ami nagyon gyors), mind a csomópont helyi lemezén (gyorsabb, mint a NAS elérése).


1.9. Ábra: Gyorsítótár -rendszerek

Mi történik, ha a gyorsítótárat több csomópontra terjeszti? Mint látható, ha a lekérdezési réteg sok csomópontot tartalmaz, akkor valószínű, hogy minden csomópont saját gyorsítótárral rendelkezik. Ha azonban a terheléselosztó véletlenszerűen szétosztja a kéréseket a csomópontok között, akkor ugyanaz a kérés különböző csomópontokhoz kerül, ezáltal növelve a gyorsítótár hibáit. A globális és az elosztott gyorsítótárak két módja annak, hogy leküzdjék ezt az akadályt.

Globális gyorsítótár

A globális gyorsítótár jelentése egyértelmű a névből: minden csomópont egyetlen gyorsítótárat használ. Ebben az esetben egy olyan szerver vagy fájltároló kerül hozzáadásra, amely gyorsabb, mint az eredeti tároló, és amely a lekérdezési szint összes csomópontja számára elérhető lesz. Minden kérési csomópont ugyanúgy kéri a gyorsítótárat, mintha helyi lenne. Ez a fajta gyorsítótárazási séma némi zavart okozhat, mivel nagyon könnyű túlterhelni egyetlen gyorsítótárat, ahogy növekszik az ügyfelek és kérések száma. Ugyanakkor egy ilyen séma nagyon hatékony bizonyos architektúrák esetében (különösen, ha olyan speciális hardverekről van szó, amelyek nagyon gyorssá teszik ezt a globális gyorsítótárat, vagy amelyek rögzített adathalmazzal rendelkeznek, amelyet gyorsítótárazni kell).

A globális gyorsítótárak két szabványos formája létezik, amelyeket az ábrák mutatnak. A helyzet akkor jelenik meg, ha a gyorsítótárazott válasz nem található a gyorsítótárban, maga a gyorsítótár lesz a felelős a hiányzó adatok fogadásáért az alatta lévő tárolóból. Ez illusztrálja a kérési csomópontok felelősségét a gyorsítótárban nem található adatok lekéréséért.


1.10. Ábra: A globális gyorsítótár, ahol a gyorsítótár felelős a lekérésért


1.11. Ábra: Globális gyorsítótár, ahol a kérési csomópontok felelősek a lekérésért

A legtöbb globális gyorsítótár -keményítő alkalmazás általában az első típust használja, ahol a gyorsítótár maga kezeli a cserét és az adatok lekérését, hogy megakadályozza, hogy az ügyfelek elárasztják ugyanazon adatok iránti kérelmeket. Vannak azonban olyan esetek, amikor a második megvalósításnak van értelme. Például, ha a gyorsítótárat nagyon nagy fájlokhoz használják, az alacsony gyorsítótár találati arány túlterheli a puffer gyorsítótárat a gyorsítótár hibáival; ebben a helyzetben segít, ha a teljes adatkészlet (vagy forró adathalmaz) nagy százaléka a gyorsítótárban van. Egy másik példa egy olyan architektúra, ahol a gyorsítótárban tárolt fájlok statikusak és nem törölhetők. (Ennek oka lehet a késés mögöttes teljesítményjellemzői - talán bizonyos adatoknak nagyon gyorsaknak kell lenniük nagy adathalmazok esetén -, ha az alkalmazás logikája jobban érti a cserestratégiát vagy a hotspotokat, mint a gyorsítótár.)

Elosztott gyorsítótár

Ezeket az indexeket gyakran tárolják a memóriában, vagy valahol nagyon lokálisan a bejövő ügyfél kérésére. A Berkeley DB (BDB) és a fa adatstruktúrák, amelyeket általában az adatok rendezett listákban való tárolására használnak, ideálisak az indexelt hozzáféréshez.

Gyakran sokféle index létezik, amelyek térképként szolgálnak, és áthelyezik egyik helyről a másikra, és így tovább, amíg meg nem kapja a kívánt adatot. (Cm.)


1.17. Ábra: Többszintű indexek

Az indexek felhasználhatók ugyanazon adatok több más nézetének létrehozására is. Nagy adathalmazok esetén ez nagyszerű módja annak, hogy különböző szűrőket és nézeteket határozzon meg anélkül, hogy sok további példányt kellene létrehoznia az adatokból.

Tegyük fel például, hogy a fent említett képkezelő rendszer valójában a könyvoldalakon található képeket tárolja, és a szolgáltatás lehetővé teszi az ügyfeleknek a képek szövegeinek lekérdezését, és egy adott témában minden szöveges tartalmat keres, ahogy a keresőmotorok is lehetővé teszik a HTML -tartalom keresését. . Ebben az esetben ezek a könyvképek sok szervert használnak a fájlok tárolására, és egy oldal megtalálása a felhasználó számára bemutatáshoz meglehetősen nehéz lehet. Kezdetben a tetszőleges szavak és szókészletek lekérdezéséhez fordított indexeknek könnyen elérhetőnek kell lenniük; akkor az a feladat, hogy a könyv pontos oldalára és helyére navigáljon, és kivonja a megfelelő képet a keresési eredményekhez. Így ebben az esetben az invertált index leképezne egy helyet (például B könyvet), majd B tartalmazhat egy indexet, amelyben minden szó, hely és az egyes részekben előforduló események száma szerepel.

Az Index1 által a fenti diagramon megjeleníthető fordított index így nézne ki: Minden szó vagy szóhalmaz indexként szolgál az azokat tartalmazó könyvekhez.

A köztes index hasonlónak tűnik, de csak a B könyv szavait, helyét és információit tartalmazza. Ez a többrétegű architektúra lehetővé teszi, hogy az indexek mindegyike kevesebb helyet foglaljon el, mintha mindezeket az információkat egyetlen nagy fordított indexben tárolnák .

Ez pedig kulcsfontosságú pont a nagyméretű rendszerekben, mert még tömörítve is ezek az indexek meglehetősen nagyok és drágák lehetnek. Tegyük fel, hogy sok könyvünk van a világ minden tájáról ezen a rendszeren - 100 000 000 (lásd a „Google -könyvek belsejében” című blogbejegyzést) -, és hogy minden könyv mindössze 10 oldal (a számítások egyszerűsítése érdekében), 250 szó oldalanként: Ez egy összesen 250 milliárd szó. Ha egy szó átlagos karakterszámát 5 -nek vesszük, és minden karaktert 8 bitben (vagy 1 bájtban kódolunk, bár egyes karakterek valójában 2 bájtot vesznek igénybe), így szónként 5 bájtot költünk, akkor az egyes szavakat tartalmazó index egyszer több mint 1 terabájt tárhelyet igényel. Látható tehát, hogy az egyéb információkat, például szóhalmazokat, adathelyeket és használati számokat tartalmazó indexek mennyisége nagyon gyorsan növekedhet.

Ezen köztes indexek létrehozása és az adatok kisebb darabokban történő bemutatása megkönnyíti a big data probléma megoldását. Az adatok több szerveren is eloszthatók, ugyanakkor gyorsan elérhetők. Az indexek az információszerzés alapkövei és a mai modern alapjai kereső motorok... Természetesen ez a rész csak általános az indexelés témakörében, és sok kutatást végeztek arról, hogyan lehet az indexeket kisebbre, gyorsabbra, több információt (például relevanciát) és zökkenőmentesen frissíteni. (Vannak problémák a versengő feltételek kezelhetőségével és az új adatok hozzáadásához vagy a meglévő adatok megváltoztatásához szükséges frissítések számával, különösen akkor, ha relevancia vagy pontozásról van szó.)

Alapvető fontosságú az adatok gyors és egyszerű megtalálása, és az indexek a legegyszerűbb és leghatékonyabb eszköz e cél eléréséhez.

Terheléselosztók

Végül minden elosztott rendszer másik kritikus része a terheléselosztó. A terheléselosztók minden architektúra lényeges részét képezik, mivel az a szerepük, hogy a terhelést elosztják a kérések kiszolgálásáért felelős csomópontok között. Ez lehetővé teszi, hogy több csomópont átláthatóan szolgálja ugyanazt a funkciót a rendszerben. (Lásd) Fő céljuk az, hogy sok párhuzamos kapcsolatot kezeljenek, és ezeket a kapcsolatokat a kért csomópontok egyikéhez irányítsák, lehetővé téve a rendszer számára a méretezést azáltal, hogy egyszerűen hozzáadja a csomópontokat a további kérések kiszolgálásához.


1.18. Ábra: Terheléselosztó

Számos különböző algoritmus létezik a kérések kiszolgálására, beleértve a véletlenszerű csomópont -kiválasztást, a körkörös bekapcsolást vagy akár a csomópontok kiválasztását bizonyos kritériumok, például a CPU vagy a RAM használata alapján. A terheléselosztók hardvereszközként vagy szoftverként is megvalósíthatók. A HAProxy a legszélesebb körben használt nyílt forráskódú terheléselosztó.

Egy elosztott rendszerben a terheléselosztók gyakran a rendszer elején vannak, így minden bejövő kérés közvetlenül rajtuk keresztül megy. Nagyon valószínű, hogy egy összetett elosztott rendszerben a kérésnek több terheléselosztón kell keresztülmennie, amint az a
.


1.19. Ábra: Több terheléselosztó

A proxykhoz hasonlóan néhány terheléselosztó is eltérően tudja irányítani a kéréseket, a kérés típusától függően. Fordított proxyként is ismertek.

Az adott felhasználói munkamenetre jellemző adatok kezelése az egyik kihívás a terheléselosztók használatakor. Egy e-kereskedelmi webhelyen, amikor csak egy vásárlója van, a felhasználók nagyon könnyen behelyezhetik a kosárba a dolgokat, és elmenthetik annak tartalmát a látogatások között (ez fontos, mivel a termék eladásának valószínűsége jelentősen megnő, ha a felhasználó visszatér a webhelyre, a termék még mindig a kosarában van). Ha azonban a felhasználót az első munkamenet során egy webhelyre irányítják, majd a következő látogatása során egy másik webhelyre, akkor következetlenségek merülhetnek fel, mivel előfordulhat, hogy az új webhely nem rendelkezik adatokkal a felhasználó bevásárlókosara tartalmával kapcsolatban. (Nem lenne ideges, ha a Mountain Dew csomagot a kosárba tenné, és amikor visszaküldi, nem lesz ott?) Az egyik megoldás az lehet, ha az üléseket „ragacsossá” teszi, hogy a felhasználó mindig a ugyanaz a csomópont. Azonban néhány megbízhatósági szolgáltatás, például az automatikus feladatátvétel kihasználása jelentősen nehéz lesz. Ebben az esetben a felhasználó kosarában mindig lesz tartalom, de ha ragadós csomópontja nem lesz elérhető, akkor speciális megközelítésre lesz szükség, és a kosár tartalmára vonatkozó feltételezés már nem lesz igaz (bár remélhetőleg ez a feltételezés nem lesz igaz. beépítve az alkalmazásba). Természetesen ez a probléma megoldható más, ebben a fejezetben leírt stratégiákkal és eszközökkel, például szolgáltatásokkal és sok mással (például böngésző gyorsítótáraival, cookie -jaival és URL -átírásával).

Ha a rendszernek csak néhány csomópontja van, akkor az olyan technikák, mint a DNS -körhinta valószínűbb, hogy praktikusabbak, mint a terheléselosztók, ami drága lehet, és szükségtelen réteget adhat a rendszer összetettségéhez. Természetesen a nagy rendszerek mindenféle ütemezési és terheléskiegyenlítő algoritmussal rendelkeznek, beleértve az egyszerűket, mint például a véletlenszerű kiválasztás vagy a körhinta algoritmusok, valamint bonyolultabb mechanizmusokat, amelyek figyelembe veszik a rendszer használati mintájának teljesítményjellemzőit. Mindezek az algoritmusok forgalmat és kéréseket osztanak szét, és hasznos megbízhatósági eszközöket nyújthatnak, mint például az automatikus feladatátvétel vagy a sérült csomópont automatikus eltávolítása (például amikor nem reagál). Ezek a fejlett funkciók azonban nehézkessé tehetik a problémák diagnosztizálását. Például nagy terheléses helyzetekben a terheléselosztók eltávolítják azokat a csomópontokat, amelyek lassúak vagy időtúlléphetnek (kérések hullámzása miatt), ami csak súlyosbítja a helyzetet más csomópontok esetében. Ezekben az esetekben fontos a kiterjedt vezérlés, mert még ha úgy tűnik, hogy a teljes rendszerforgalom és terhelés csökken (mivel a csomópontok kevesebb kérést szolgálnak ki), az egyes csomópontok túlterheltek lehetnek.

A terheléselosztók egyszerű módja a rendszer kapacitásának növelésére. A cikkben leírt többi technikához hasonlóan alapvető szerepet játszik az elosztott rendszer felépítésében. A terheléselosztók kritikus funkciót is biztosítanak a csomópontok állapotának ellenőrzéséhez. Ha egy ilyen ellenőrzés eredményei szerint egy csomópont nem válaszol, vagy túlterhelt, akkor eltávolítható a kérésfeldolgozó készletből, és a rendszer redundanciája miatt a terhelés újraelosztásra kerül a többi működő között csomópontok.

Sorok

Eddig számos módot vizsgáltunk az adatok gyors leolvasására. Ugyanakkor a hatékony iratkezelés az adatszint skálázásának másik fontos része. Ha a rendszerek egyszerűek, minimális feldolgozási terheléssel és kis adatbázisokkal, akkor az írás előre láthatóan gyors lehet. Bonyolultabb rendszerekben azonban ez a folyamat végtelen hosszú ideig tarthat. Így például előfordulhat, hogy az adatokat több helyre kell írni különböző szervereken vagy indexeken, vagy a rendszer egyszerűen nagy terhelés alatt áll. Azokban az esetekben, amikor az írások vagy akár bármilyen feladat hosszú időt vesz igénybe, a teljesítmény és a rendelkezésre állás eléréséhez aszinkronit kell beépíteni a rendszerbe. Ennek gyakori módja a kérések sorba állítása.


1.20. Ábra: Szinkron kérés

Képzeljünk el egy rendszert, ahol minden ügyfél távoli szolgáltatási feladatot kér. Ezen ügyfelek mindegyike elküldi kérését a szervernek, amely a lehető leggyorsabban elvégzi a feladatokat, és visszaadja eredményeit a megfelelő ügyfeleknek. Kis rendszerekben, ahol egyetlen kiszolgáló (vagy logikai szolgáltatás) képes kiszolgálni a beérkező ügyfeleket, amint azok megérkeznek, az ilyen helyzetnek jól kell működnie. Ha azonban a szerver több kérést kap, mint amennyit képes kezelni, akkor minden ügyfél kénytelen megvárni, amíg a többi kliens befejezi a feldolgozást, mielőtt válasz érkezik a saját kérésére. Ez egy példa az itt bemutatott szinkron kérésre.

Ez a fajta szinkron viselkedés jelentősen ronthatja az ügyfél teljesítményét; valójában tétlenül az ügyfél kénytelen várni, amíg választ kap a kérésre. További kiszolgálók hozzáadása a rendszer terhelésének kezelésére valójában nem oldja meg a problémát; még hatékony helyszíni terheléskiegyenlítés mellett is rendkívül nehéz biztosítani az egyenletes és méltányos terheléselosztást, amely a vevők termelékenységének maximalizálásához szükséges. Továbbá, ha a szerver nem áll rendelkezésre a kérés feldolgozásához (vagy nem működik), akkor a hozzá csatlakozó ügyfél is leáll. A probléma hatékony megoldásához el kell vonni az ügyfél kérése és a kiszolgálás tényleges munkája közötti különbséget.


1.21. Ábra: Sorok használata a kérések kezelésére

Belépési sorok. A sor mechanizmusa nagyon egyszerű: egy feladat megérkezik, belép a sorba, majd a „dolgozók” elfogadják a következő feladatot, amint lehetőségük nyílik feldolgozni. (Lásd) Ezek a feladatok lehetnek olyan egyszerűek, mint az adatbázisba való írás, vagy olyan bonyolultak, mint egy előnézeti kép létrehozása a dokumentumhoz. Amikor az ügyfél kéréseket küld a sorban álló feladatokhoz, akkor nem kell többé várnia a végrehajtási eredményekre; ehelyett a kéréseket csak megfelelően el kell fogadni. Ez a megerősítés később hivatkozásként szolgálhat a munka eredményeire, amikor az ügyfél kéri őket.

A várólisták lehetővé teszik az ügyfelek számára, hogy aszinkron módon dolgozzanak azáltal, hogy stratégiai absztrakciót biztosítanak az ügyfél kéréseiről és válaszairól. Másrészt egy szinkron rendszerben nincs különbség a kérés és a válasz között, ezért nem vezérelhető külön. Aszinkron rendszerben az ügyfél beállít egy feladatot, a szolgáltatás egy üzenetet válaszol, amely megerősíti, hogy a feladat megérkezett, majd az ügyfél rendszeresen ellenőrizheti a feladat állapotát, és csak akkor kéri az eredményt, amint befejezte. Amíg az ügyfél aszinkron kérést tesz, szabadon végezhet más munkát, sőt aszinkron kéréseket is küldhet más szolgáltatásokhoz. Ez utóbbi példa arra, hogyan működnek a sorok és az üzenetek az elosztott rendszerekben.

A sorok némi védelmet is nyújtanak a szolgáltatás megszakításai és megtagadásai ellen. Például meglehetősen könnyű létrehozni egy nagyon tartós sort, amely meg tudja ismételni azokat a szolgáltatáskéréseket, amelyek átmeneti szerverkimaradások miatt leálltak. Előnyösebb, ha a QoS garanciák érvényesítéséhez sorokat használnak, mint az ügyfeleket ideiglenes szolgáltatáskimaradásoknak kitenni, ami összetett és gyakran következetlen ügyféloldali hibakezelést igényel.

1.4. Következtetés

A nagy mennyiségű adathoz való gyors hozzáférést biztosító hatékony rendszerek tervezése nagyon érdekes téma, és még mindig jelentős számú jó eszköz áll rendelkezésre, amelyek mindenféle új alkalmazást képesek adaptálni. Ez a fejezet csak néhány példát érintett, de a valóságban sokkal több van - és az új innovációk létrehozása ezen a területen csak folytatódni fog.

Ez a mű a változatlan Creative Commons Attribution 3.0 licenc alatt kerül terjesztésre. Részleteket lásd:

  • Fordítás

Átviteli szűk keresztmetszetek mérése csomag dupla átfutási idővel

Mindenesetre a mai internet nem tudja olyan gyorsan mozgatni az adatokat, mint kellene. A legtöbb felhasználó mobil kommunikáció a világ néhány másodperctől több percig késik: a nyilvános WiFi hotspotok a repülőtereken és a konferenciákon még rosszabbak. A fizikusoknak és a klimatológusoknak petabájtnyi adatot kell cserélniük a kollégákkal szerte a világon, de úgy találják, hogy a bonyolult, több gigabites infrastruktúrájuk gyakran csak néhány megabit / másodperc nyomást gyakorol a transzkontinentális kapcsolatokra.

Ezek a problémák abból adódtak, hogy a 80 -as években a TCP torlódásvezérlés megalkotása során választották meg az architektúrát - ekkor a csomagok elvesztését úgy döntötték, hogy "torlódásként" értelmezik. E fogalmak egyenértékűsége akkoriban igaz volt, de csak a technológia korlátai miatt, és nem definíció szerint. Amikor a hálózati kártyákat (hálózati interfészvezérlőket) megabitről gigabitre, a memóriachipeket kilobájtról gigabájtra frissítették, a csomagvesztés és a torlódás közötti kapcsolat kevésbé nyilvánvalóvá vált.

A modern TCP -ben a csomagvesztés torlódásvezérlése - még a maga nemében a legfejlettebb technológiában, a CUBIC -ban is - e problémák kiváltó oka. Ha a szűk keresztmetszetű pufferek túl nagyok, a csomagvesztés torlódásvezérlője tele tartja őket, és szükségtelen hálózati pufferelést okoz. Ha a pufferek túl kicsik, a csomagveszteség torlódásszabályozója rosszul értelmezi a csomagvesztést a torlódás jeleként, ami csökkent átviteli sebességhez vezet. Ezeknek a problémáknak a megoldása alternatívát igényel a csomagvesztés fojtásával. Ennek az alternatívának a megtalálásához meg kell értenie, hogy hol és hogyan jelentkezik a torlódás.

Torlódás és szűk keresztmetszet

Egy (teljes duplex) TCP -kapcsolaton csak egy leglassabb kapcsolat van, vagy palacknyak minden irányban. A szűk keresztmetszet a következő okok miatt fontos:
  • Ez határozza meg a kapcsolat maximális adatátviteli sebességét. Ez a tömörítetlen adatfolyam fő tulajdonsága (például képzeljünk el egy hat sávos autópályát csúcsidőben, ha egy baleset miatt az út egy kis szakasza csak egy sávra korlátozódott. A balesethely előtti forgalom nem halad gyorsabb, mint a forgalom ezen a sávon.
  • Ez az a hely, ahol folyamatosan sorok alakulnak ki. Csak akkor csökkennek, ha a szűk keresztmetszetből kilépő áramlás intenzitása meghaladja a bejövő áramlás intenzitását. A legmagasabb bitsebességgel működő kapcsolatoknál a szűk keresztmetszethez tartozó összes kimenő áramlás mindig magasabb kimenő sebességgel rendelkezik, így a sorok a szűk keresztmetszet felé mozdulnak el.
Függetlenül attól, hogy hány kapcsolat van a kapcsolatban és mekkora az egyes sebességük, a TCP szempontjából az önkényesen összetett útvonalat egyetlen kapcsolatként ábrázolják ugyanazzal az RTT-vel (egy csomag dupla áthaladási ideje, azaz oda-vissza út) és a sávszélesség palacknyak... Két fizikai korlátozás RTprop(oda-vissza terjedési idő) és BtlBw(szűk keresztmetszetű sávszélesség) befolyásolja az átviteli teljesítményt. (Ha a hálózati út anyagcső lenne, az RTprop lenne a cső hossza, és BtlBw az átmérője).

Az 1. ábra az RTT és a bitsebesség különböző kombinációit mutatja az adatmennyiséggel. repülés közben, vagyis inflight (adatok elküldve, de a kézbesítés visszaigazolása nélkül). A kék vonalak az RTprop határértéket, a zöld vonalak a BtlBw határértéket és a piros vonalak a szűk keresztmetszetet mutatják. A szürke területeken végzett műveletek nem lehetségesek, mert ellentmondanak legalább egy korlátozásnak. A korlátozások közötti átmenetek három régió (alkalmazás-korlátozott, sávszélesség-korlátozott és puffer-korlátozott) kialakulásához vezettek, minőségileg eltérő viselkedéssel.

1. kép

Ha repülés közben nincs elegendő adat a cső feltöltéséhez, az RTprop határozza meg a viselkedést; különben a BtlBw dominál. A korlátozó vonalak egy pontban metszik egymást, amely egyben a BDP cső is (sávszélesség-késleltetési termék, a sávszélesség és késleltetés származéka). Mivel a cső megtelt ez után, a felesleg sorban áll a szűk keresztmetszethez, ami lineáris kapcsolatot eredményez az RTT és a repülési adatok között, amint azt a felső grafikon mutatja. A csomagok eldobásra kerülnek, ha a többlet meghaladja a pufferkapacitást. Torlódás csak egy folyamatos hely a BDP vonaltól jobbra, és torlódásszabályozás- valamilyen rendszer, amely korlátozza a BDP -vonaltól jobbra eső átlagos adatátvitelt.

A veszteség torlódásvezérlése a korlátozott sávszélességű terület jobb szélén működik, teljes szűk keresztmetszeti sávszélességet biztosítva a magas késleltetés és a gyakori csomagvesztés rovására. Abban az időben, amikor a memória drága volt, a pufferméretek csak valamivel nagyobbak voltak, mint a BDP, ami minimálisra csökkentette a veszteséges torlódásszabályozás túlzott késését. A későbbi memóriaárcsökkentések a felesleges hálózati pufferelés növekedését és az RTT másodpercekre való növekedését eredményezték ezredmásodpercek helyett.

A csatorna által korlátozott terület bal szélén jobb működési pont található, mint a jobb oldalon. 1979 -ben Leonard Kleinrock kimutatta, hogy ez a működési pont optimális, maximalizálja a tényleges átviteli sebességet, miközben minimalizálja a késleltetést és a veszteséget, mind az egyes kapcsolatok, mind a hálózat egésze esetében. Sajnos, nagyjából ezzel egy időben Jeffrey Yaffe bebizonyította, hogy lehetetlen olyan elosztott algoritmus létrehozása, amely ezen a működési ponton konvergál. Ez a megállapítás megváltoztatta a kutatás irányát. Ahelyett, hogy egy elosztott algoritmust keresnének, amely az optimális Kleinrock működési pontot keresi, a kutatók alternatív módszereket kezdtek feltárni a torlódásszabályozásban.

A Google csoportja minden nap órákat tölt azzal, hogy megvizsgálja a TCP fejléc rögzítési naplóit a világ minden tájáról, megértve az anomáliákat és a viselkedés patológiáit. Általában az első dolog, amit keresünk, az útvonal, az RTprop és a BtlBw legfontosabb jellemzői. Az a tény, hogy ezek a hálózati nyomokból levezethetők, arra utal, hogy Jaffe következtetése talán nem olyan egyértelmű, mint amilyennek látszott. Következtetése alapvető mérési bizonytalanságra támaszkodik (például, hogy az RTT mért növekedése az út hosszának változásából, a szűk keresztmetszet csökkenéséből vagy a sor várakozási idejének növekedéséből származik -e egy másik kapcsolatból származó forgalom miatt). Bár lehetetlen kiküszöbölni az egyes mérések bizonytalanságát, a vegyület időbeli viselkedése tisztább képet ad, ami arra utal, hogy lehetőség van a bizonytalanság kiküszöbölésére szolgáló mérési stratégiák alkalmazására.

Ha ezeket a méréseket egy megbízható nyomkövetési hurokkal kombináljuk, és a vezérlőrendszerek legújabb fejlesztéseit alkalmazzuk, a remény az, hogy olyan elosztott torlódásszabályozó protokollt dolgozunk ki, amely reagál a tényleges torlódásokra, nem pedig a csomagvesztésre vagy a rövid sorbeli késésekre. És nagy valószínűséggel fog konvergálni az optimális Kleinrock működési ponton. Így kezdődött hároméves projektünk, amelynek célja egy olyan torlódáskezelő rendszer kifejlesztése, amely két, az útvonalat jellemző paraméter mérésére épül: a szűk keresztmetszet és a kettős áthaladási idő (BBR).

A szűk keresztmetszet jellemzője

A kapcsolat maximális sávszélességgel és minimális késleltetéssel működik, ha (sebességmérleg) a csomagok szűk keresztmetszetbe való érkezési aránya BtlBw, és (teljes csatorna) a repülés közbeni összes adatmennyiség megegyezik BDP -vel ().

Az első feltétel biztosítja a szűk keresztmetszet 100% -os kihasználtságát. A második biztosítja, hogy elegendő adat álljon rendelkezésünkre, hogy megakadályozzuk az egyszerű szűk keresztmetszetet, de ne töltsük túl a csatornát. Maga a sebességkiegyenlítési feltétel nem garantálja, hogy nincs sor, csak a változatlan mérete (például ha a kapcsolat 10 csomag kezdeti ablakának elküldésével kezdődik egy ötcsomagos BDP-hez, akkor pontosan ugyanazzal a szűk keresztmetszeti sebességgel működik, majd tízből öt kezdeti csomag betölti a csatornát, és a többlet keskeny helyen álló sort képez, amely nem tud feloldódni). Hasonlóképpen, a teljes csatornafeltétel nem garantálja, hogy nincs sor (például egy kapcsolat BDP sorozatban küldi a BDP -t a BDP / 2 felett, és teljes mértékben kihasználja a szűk keresztmetszetet, de az átlagos sor BDP / 4). Az egyetlen módja annak, hogy minimálisra csökkentse a várakozási sort a szűk keresztmetszetben és az egész csatornán, ha mindkét feltételt egyszerre teljesíti.

A BtlBw és az RTprop értékek a kapcsolat élettartama alatt változnak, ezért ezeket folyamatosan értékelni kell. Jelenleg a TCP figyeli az RTT -t (az adatcsomag elküldése és az átadott üzenet közötti időintervallum), mert ez szükséges a veszteség megállapításához. Bármikor,


hol van az útvonal menti sorokból származó "zaj", a fogadó fél nyugtázási stratégiája, az elismerések halmozása stb. Az RTprop a link fizikai jellemzője, és csak akkor változik, ha maga a csatorna változik. Mivel a csatornaváltások időskálán történnek RTprop, akkor az idő pártatlan és hatékony értékelése lesz
vagyis indítsa el egy időablakban (ami általában több tíz másodperc és perc között van).

Az RTT -vel ellentétben a TCP -specifikációkban semmi nem követeli meg a megvalósítást a szűk keresztmetszet nyomon követéséhez, de erre jó becslést lehet kapni a szállítási arány követésével. Amikor a csomag kézbesítésének visszaigazolását visszaküldi a feladónak, akkor megjelenik a csomag RTT -je, és a csomag távozásakor bejelenti az adatok szállítását repülés közben. A csomagküldés és a nyugtázás fogadása közötti átlagos kézbesítési sebesség a szállított adatok és az eltelt idő aránya :. Ennek a sebességnek kisebbnek vagy egyenlőnek kell lennie a szűk keresztmetszettel (a mennyiség pontosan megérkezéskor ismert, tehát a teljes bizonytalanság abban rejlik, hogy nagyobbnak vagy egyenlőnek kell lennie a jelenlegi érkezési intervallummal; ezért az aránynak kisebbnek kell lennie vagy egyenlő a valós szállítási sebességgel, amelyet sorában felülről a szűk keresztmetszet korlátozza). Ezért a maximális szállítási arány ablak a BtlBw hatékony, nem részleges becslése:


ahol az időablak általában hat -tíz RTT.

A TCP -nek rögzítenie kell az egyes csomagok küldésének idejét az RTT kiszámításához. A BBR kiegészíti ezeket a rekordokat a teljes szállított adatmennyiséggel, így az egyes nyugták érkezése jelenti mind az RTT -t, mind a szállítási arány mérését, amelyet a szűrők RTprop és BtlBw becslésekké alakítanak át.

Ne feledje, hogy ezek az értékek teljesen függetlenek: az RTprop változhat (például az útvonal megváltoztatásakor), de ugyanazzal a szűk keresztmetszettel rendelkezik, vagy a BtlBw változhat (például amikor megváltozik a vezeték nélküli sávszélesség) az útvonal megváltoztatása nélkül. (Mindkét kényszer függetlensége az oka annak, hogy ezeket ismerni kell ahhoz, hogy a szállítási magatartást a szállítási útvonalhoz társítsák). Mivel az RTprop csak a BDP bal oldalán, a BtlBw pedig csak a jobb oldalon látható az 1. ábrán, engedelmeskednek a bizonytalanság elvének: amikor a kettő közül az egyik mérhető, a másik nem mérhető. Intuitív módon ezt a következőképpen lehet megérteni: a csatornakapacitás meghatározásához túl kell tölteni, ami egy sort hoz létre, amely nem teszi lehetővé a csatorna hosszának mérését. Például egy kérelem / válasz protokollal rendelkező alkalmazás soha nem küldhet elegendő adatot a csatorna kitöltéséhez és a BtlBw megfigyeléséhez. Sok óra nagy mennyiségű adat átvitelével minden idejét korlátozott sávszélességű területen töltheti, és csak egyetlen RTprop mintát fogadhat az RTT -től az első csomagtól. Az eredendő bizonytalanság elve azt jelenti, hogy a két útvonalparaméter rekonstruálására vonatkozó becsléseken kívül olyan állapotoknak is kell lenniük, amelyeket egyidejűleg nyomon követnek, és mit lehet megtanulni az aktuális működési ponton, és mivel az információ elveszíti frissességét, hogyan kell továbblépni pont, ahol meg lehet szerezni.utóbbi adatok.

Csomagáram egyeztetése a szállítási útvonallal

A fő BBR algoritmus két részből áll:

Amikor megerősítést kapunk (ack)

Minden megerősítés új RTT -t és átlagos szállítási sebességmérést biztosít, amely frissíti az RTprop és BtlBw becsléseket:

Funkció onAck (csomag) rtt = most - packet.sendtime update_min_filter (RTpropFilter, rtt) szállított + = packet.size delivery_time = most deliveryRate = (szállított - packet.delivered) / (delivery_time - packet.delivered_time) if (deliveryRate> BtlBwFilter. currentMax ||! packet.app_limited) update_max_filter (BtlBwFilter, deliveryRate) if (app_limited_until> 0) app_limited_until = app_limited_until - packet.size
Az if ellenőrzésre az utolsó bekezdésben tárgyalt kétértelműségi probléma miatt van szükség: a feladókat korlátozhatja az alkalmazás, vagyis az alkalmazásból elfogyhatnak az adatok a hálózat feltöltéséhez. Ez elég gyakori helyzet a kérés / válasz forgalom miatt. Ha van lehetőség küldésre, de nincs adatküldés, a BBR a megfelelő sávszélesség mintákat "alkalmazáskorlátozottnak", azaz app_limited -nek jelöli (lásd a send () pszeudokódot). Ez a kód határozza meg, hogy mely mintákat kell belefoglalni a sávszélesség -modellbe, tehát a hálózati korlátokat tükrözi, nem pedig az alkalmazási korlátokat. A BtlBw a szállítási ráta határozott felső határa, így a jelenlegi BtlBw becslésnél nagyobb mért szállítási sebességnek a BtlBw alulbecslését kell jelentenie, függetlenül attól, hogy a minta alkalmazásra korlátozódott-e vagy sem. Ellenkező esetben az alkalmazás által korlátozott mintákat elvetik. (Az 1. ábra azt mutatja, hogy a deliveryRate alkalmazáskorlátozással rendelkező régióban a BtlBw paraméter alulbecsült.) Ezek az ellenőrzések megakadályozzák, hogy a BtlBw szűrő megteljen alulbecsült értékekkel, ami lelassíthatja az adatok küldését.

Amikor adatokat küld

Ahhoz, hogy a csomagok érkezési arányát a szűk keresztmetszetből való kilépési sebességgel korrelálni lehessen, a BBR figyeli az egyes adatcsomagokat. (A BBR -nek meg kell egyeznie mérték szűk keresztmetszet: Ez azt jelenti, hogy a követés az építészet szerves része és a munka alapvető része - ezért pacing_rate a fő vezérlőparaméter. Segédparaméter cwnd_gainösszeköt inflight egy kis BDP -készlettel a tipikus hálózati és fogadó patológiák kezelésére (lásd az alábbi fejezetet a késleltetett és kiterjesztett megerősítésekről). Koncepcionálisan a TCP küldési eljárás a következő kódra hasonlít. (Linuxon az adatok küldése hatékony FQ / pacing sorba állítást tesz lehetővé, ami a BBR-nek egyetlen kapcsolat lineáris teljesítményét biztosítja a több gigabites linkeken, és több ezer lassabb kapcsolatot kezel elhanyagolható CPU-költséggel.)

Funkció send (csomag) bdp = BtlBwFilter.currentMax × RTpropFilter.currentMin if (inflight> = cwnd_gain × bdp) // várjon ack vagy retransmission timeout return if (most> = nextSendTime) packet = nextPacketToSend () if_! Packet = inflight return packet. nextSendTime)
Állandó állapotú viselkedés

A BBR -en keresztül küldött adatok sebessége és mennyisége csak a BtlBw -től és az RTprop -tól függ, így a szűrők nemcsak a szűk keresztmetszet -becsléseket vezérlik, hanem azok alkalmazását is. Ez létrehozza a 2. ábrán látható egyéni vezérlőhurkot, amely 10Mbit 40 ms adatfolyam esetén RTT (kék), inflight (zöld) és 700 ms feletti szállítási sebességet (piros) mutat. A szállítási arány feletti vastag, szürke vonal a BtlBw max szűrő állapota. Háromszög alakzatokat kapunk, ha ciklikusan alkalmazzuk a pacing_gain együtthatót a BBR -ben, hogy meghatározzuk a BtlBw növekedését. A nyereség a ciklus minden részében az időhöz igazítva jelenik meg az általa befolyásolt adatokkal. Ez a tényező már korábban is működött az RTT -n, amikor adatokat küldtek. Ezt mutatják a bal oldali eseménysor leírásának vízszintes szabálytalanságai.


2. ábra

A BBR minimálisra csökkenti a késleltetést, mivel az idő nagy része ugyanazzal a BDP -vel működik. Emiatt a szűk keresztmetszet a feladó felé mozog, így a BtlBw növekedése láthatatlanná válik. Ezért a BBR rendszeresen az RTprop intervallumot tölti pacing_gain> 1 -nél, ami növeli a küldési sebességet és a szállítás megerősítése (inflight) nélkül küldött adatmennyiséget. Ha a BtlBw nem változik, akkor a sor a szűk keresztmetszet előtt jön létre, növelve az RTT -t, ami állandóan tartja a deliveryRate értéket. (A sor kiküszöbölhető az adatok eltolásos pacing_gain értékkel történő elküldésével< 1 для следующего RTprop). Если BtlBw увеличивается, то скорость deliveryRate тоже увеличивается, а новое максимальное значение фильтра немедленно увеличивает базовую скорость отслеживания (pacing_rate). Ezért a BBR exponenciálisan gyorsan alkalmazkodik az új szűk keresztmetszethez. A 3. ábra ezt a hatást mutatja egy 10 Mbps 40 ms -os adatfolyamon, amelyet a BtlBw hirtelen 20 Mbps -ra emel fel 20 másodperc folyamatos működés után (a grafikon bal oldalán), majd további 20 másodperc folyamatos működés után 10 Mbps -ra csökken 20 Mbps (a grafikon jobb oldala).


3. ábra

(Alapvetően a BBR a "max-plus" vezérlőrendszer egyszerű példája, egy új megközelítés a nem szabványos max-plus algebrán alapuló vezérlőrendszerekhez. Ez a megközelítés lehetővé teszi a sebesség kiigazítását [a sebességváltó vezérli max] függetlenül a sor növekedésétől [az átviteli arány vezérli átlagos]. A mi problémánkra alkalmazva ez egy egyszerű, feltétel nélküli vezérlőhurokhoz vezet, ahol a fizikai korlátok változásaihoz való alkalmazkodás automatikusan történik az ezeket a korlátozásokat kifejező szűrők megváltoztatásával. A hagyományos rendszer megköveteli, hogy sok vezérlőhurkot hozzanak létre egy összetett állapotgépbe, hogy ezt az eredményt elérjék.)

Viselkedés egyetlen BBR szál indításakor

A modern megvalósítások sok eseménysorral rendelkező eseményes algoritmusokkal kezelik az olyan eseményeket, mint az indítás, leállítás és veszteség helyreállítás. A BBR mindenben a fenti kódot használja (az előző fejezetben "Csomagáram egyeztetése a szállítási útvonallal"). Az eseményeket az "állapotok" sorozatának áthaladásával kezelik. Magukat az "állapotokat" egy táblázat határozza meg, amely egy vagy több fix együttható- és kilépési feltételt tartalmaz. A legtöbb időt a ProbeBW állapotban töltik, amelyet az Egyensúlyi állapot viselkedése című fejezet ismertet. Az indítás és leeresztés állapotokat használja a kapcsolat indításakor (4. ábra). Annak a kapcsolatnak a kezelésére, ahol az áteresztőképesség 12 nagyságrenddel növekszik, az indítási állapot egy bináris keresési algoritmust valósít meg a BtlBw számára, amely átviteli tényezővel megkétszerezi az átviteli sebességet, amikor a szállítási sebesség nő. Ez határozza meg a BtlBw -t az RTT -ben, ugyanakkor szükségtelen sorokat hoz létre azelőtt. Amint a Startup megtalálja a BtlBw -t, a BBR rendszer Drain állapotba kerül, amely a Startup fordított áttételi arányait használja a túlzott sorban állás megszüntetésére, majd a ProbeBW állapotba, amint az infláció lemegy a BDP vonalra.


4. ábra

A 4. ábra egy 10Mbit 40ms BBR adatfolyam első másodpercét mutatja. A felső grafikon mutatja az események idejét és sorrendjét, valamint a feladó (zöld) és a címzett (kék) előrehaladását: az elküldött és fogadott adatok mennyiségét. A piros vonal a feladó teljesítményét mutatja a CUBIC technológia használatával azonos feltételek mellett. A függőleges szürke vonalak a BBR állapotok közötti átmeneti időket jelzik. Az alsó grafikon mindkét kapcsolat oda -vissza útjának (RTT) változását mutatja. Felhívjuk figyelmét, hogy ennek az ütemtervnek az ütemterve megegyezik az érkezési visszaigazolás kézhezvételének idejével (ack). Ezért úgy tűnhet, hogy a grafikonok időben eltolódni látszanak, de valójában az alábbi események megfelelnek azoknak a pillanatoknak, amikor a BBR rendszer értesül ezekről az eseményekről és reagál.

A 4. ábra alsó grafikonja összehasonlítja a BBR -t és a CUBIC -t. Eleinte a viselkedésük szinte ugyanaz, de a BBR teljesen kiüríti a kapcsolat elején kialakult sort, és a CUBIC ezt nem tudja megtenni. Nem rendelkezik nyomkövetési modellel, amely megmondja, hogy az elküldött adatok mennyi felesleges. Ezért a CUBIC kevésbé agresszíven növeli az adatátvitelt a kézbesítés visszaigazolása nélkül, de ez a növekedés addig tart, amíg a szűk keresztmetszeti puffer túlcsordul, és elkezdi dobni a csomagokat, vagy amíg a vevő el nem éri az elküldött adatok korlátját megerősítés nélkül (TCP fogadási ablak).

Az 5. ábra az RTT viselkedését mutatja az előző 4. ábrán látható kapcsolat első nyolc másodpercében. A CUBIC technológia (pirossal) kitölti a teljes rendelkezésre álló puffert, majd néhány másodpercenként 70% és 100% között forog. A kapcsolat elindítása után a BBR (zöld) szinte sor létrehozása nélkül működik.


5. ábra

Viselkedés, ha szűk keresztmetszetben több BBR -áram találkozik

A 6. ábra azt mutatja, hogyan konvergál több BBR adatfolyam átviteli sebessége egy 100 megabites / 10 milliszekundumos szűk keresztmetszet becsületes szakaszán. A lefelé néző háromszög szerkezetek a ProbeRTT kapcsolatok olyan állapotai, amelyekben az önszinkronizálás felgyorsítja a végső konvergenciát.


6. ábra

A ProbeBW erősítési ciklusok (2. ábra) arra ösztönzik a nagyobb adatfolyamokat, hogy sávszélességet biztosítsanak a kisebb folyamoknak, aminek eredményeként minden egyes stream megérti a becsületes állapotát. Ez meglehetősen gyorsan megtörténik (több ProbeBW ciklus), bár az igazságtalanság fennmaradhat, ha az újraelosztás elején késő szálak túlértékelik az RTprop -ot, mivel a korábban (ideiglenesen) megkezdett szálak sorokat hoznak létre.

Az igazi RTProp kiderítéséhez a folyam a BDP vonaltól balra mozog a ProbeRTT állapot használatával: ha az RTProp becslést nem frissítik (azaz egy kisebb RTT mérésével) sok másodpercig, akkor a BBR belép a ProbeRTT állapotba , csökkenti az elküldött adatmennyiséget (inflight) négy csomagra legalább egy kettős áthaladáshoz, majd visszatér az előző állapotba. Amikor nagy adatfolyamok lépnek a ProbeRTT állapotba, sok csomag eltávolításra kerül a sorból, így több adatfolyam egyszerre látja az új RTprop értéket (új minimális RTT). Emiatt az RTprop becsléseiket egyszerre nullára állítják, így mind együtt lépnek a ProbeRTT állapotba - és a sor még tovább csökken, aminek következtében még több szál látja az új RTprop értéket stb. . Ez az elosztott koordináció kulcsfontosságú tényező a sávszélesség igazságosságában és stabilitásában.

A BBR szinkronizálja a szálakat a kívánt esemény körül, amely egy üres sor a szűk keresztmetszetben. Ezzel a megközelítéssel ellentétben a csomagveszteség torlódásának csökkentése szinkronizálja a nem kívánt események, például az időszakos sorok növekedése és a puffer túlcsordulások körüli áramlásokat, ami növeli a késést és a csomagvesztést.

B4 WAN implementáció tapasztalata a Google -ban

A Google B4 egy nagysebességű WAN (széles körű hálózat), amely hagyományos, olcsó kapcsolókra épül. Ezeknek a sekély pufferkapcsolóknak a veszteségei főként annak köszönhetők, hogy a kis forgalomban esetenként megugrik. 2015 -ben a Google megkezdte a munkahelyi forgalom áthelyezését a CUBIC -ról a BBR -re. Nem jelentettek problémát vagy regressziót, és 2016 óta minden B4 TCP forgalom BBR -t használ. A 7. ábra ennek egyik okát szemlélteti: a BBR áteresztőképessége következetesen 2-25-szöröse a CUBIC-nak. Még nagyobb javulást láttunk, de megállapítottuk, hogy a BBR kapcsolatok 75% -át korlátozza a kernelben lévő TCP fogadási puffer, amelyet a hálózati műveletek személyzete szándékosan alacsony értékre (8 MB) állított be, hogy megakadályozza, hogy a CUBIC megabájtos túlzott forgalommal árasztja el a hálózatot a szállítás visszaigazolása nélkül (ha elosztja a 8 MB -ot 200 ms interkontinentális RTT -vel, akkor 335 Mbps maximális értéket kap). A fogadási puffer kézi növelése egy USA-Európa útvonalon azonnal növelte a BBR adatátviteli sebességet 2 Gbps-ra, míg a CUBIC 15 Mbps-on maradt-ez 133-szoros relatív áteresztés-növekedés, amelyet Matis és munkatársai a Science work 1997-ben jósoltak.


7. ábra

A 7. ábra a BBR relatív javulását mutatja a CUBIC -hoz képest; beágyazott - kumulatív elosztási függvények (CDF) az átviteli sebességhez. A méréseket az aktív érzékelő szolgáltatás segítségével végezték, amely állandó BBR és CUBIC kapcsolatokat nyit meg a távoli adatközpontokhoz, majd percenként 8 MB adatot továbbít. A szondák számos B4 útvonalat fedeznek fel Észak -Amerika, Európa és Ázsia között.

A hatalmas javulás a BBR közvetlen következménye nem csomagvesztést használ torlódásjelzőként. A teljes sávszélesség eléréséhez meglévő módszerek A csomagveszteség torlódásvezérlésének a veszteségi ráta kisebbnek kell lennie, mint a BDP fordított négyzete (például kevesebb, mint egy veszteség 30 millió csomag esetén 10 Gbps / 100 ms kapcsolat esetén). A 8. ábra összehasonlítja a mért használható teljesítményt különböző csomagveszteségi szinteken. A CUBIC -ban a csomagveszteség tűrése az algoritmus szerkezeti tulajdonsága, a BBR -ben pedig konfigurációs paraméter. Ahogy a BBR veszteség szintje megközelíti a ProbeBW maximális nyereségét, a valós BtlBw szállítási sebesség mérésének valószínűsége meredeken csökken, ami a max szűrő alulbecsléséhez vezet.


8. ábra

A 8. ábra összehasonlítja a BBR és a CUBIC használható átviteli sebességét 60 másodperces adatfolyamban 100 Mbps kapcsolaton és 100 ms-on, véletlen veszteséggel 0,001% és 50% között. A CUBIC áteresztőképessége 10 -szeresére csökken 0,1% -os veszteség mellett, és teljesen leáll több mint 1% -kal. A maximális sávszélesség a sávszélesség töredéke, mínusz a csomagveszteség (). A BBR ezen a szinten tartja az 5% -os veszteség szintjét, és közel ahhoz, akár 15% -ot is.

A YouTube Edge megvalósításában szerzett tapasztalat

A BBR a YouTube és a Google.com videókiszolgálókon van telepítve. A Google kis kísérletet végez, amelyben a felhasználók kis százaléka véletlenül átkerül a BBR vagy a CUBIC rendszerbe. A BBR videólejátszás jelentős javulást mutat minden felhasználói minősítésben a szolgáltatás minősége tekintetében. Talán azért, mert BBR viselkedése következetesebb és kiszámíthatóbb. A BBR csak kismértékben javítja a kapcsolat sávszélességét, mert a YouTube már a BtlBw alá igazítja a streaming sebességet, hogy minimálisra csökkentse a szükségtelen hálózati pufferelést és újrapufferelést. De a BBR még itt is világszerte 53% -kal, a fejlődő országokban pedig több mint 80% -kal csökkenti a medián RTT -mediánt.

A 9. ábra az RTT és a BBR és a CUBIC közötti medián javulást mutatja, több mint 200 millió YouTube -videomegtekintésben, öt kontinensen mérve egy hét alatt. A világ 7 milliárd mobilkapcsolatának több mint a fele 2,5 G sebességű, 8 Kb / s és 114 Kb / s sebességű, jól dokumentált problémák vannak a csomagvesztés torlódásszabályozási technikáival, amelyek hajlamosak túlcsordulni a puffereket. Ezekben a rendszerekben a szűk keresztmetszet általában az SGSN (Serving GPRS Support Node) és a mobil eszköz között van. Az SGSN szoftver szabványos PC -platformon fut, bőséges RAM -mal, gyakran megabájt pufferrel az internet és a mobil eszköz között. A 10. ábra összehasonlítja az (emulált) SGSN késést az internet és a mobil között a BBR és a CUBIC esetében. A vízszintes vonalak az egyik legsúlyosabb következményt jelzik: a TCP alkalmazkodik a hosszú RTT késésekhez, kivéve a kapcsolatot kezdeményező SYN csomagokat, amelyeknek az operációs rendszertől függően rögzített időtúllépése van. Ha egy mobileszköz nagy mennyiségű adatot fogad (például automatikus szoftverfrissítésekből) egy nagy puffer SGSN -en keresztül, az eszköz nem tud kapcsolatot létesíteni az interneten, amíg a sor nem szabad (a SYN ACK tovább késik, mint a rögzített SYN időtúllépés) ...


9. ábra

A 10. ábra a kapcsolat stabil állapotában mért RTT medián változásokat és a pufferméret függését jelenti egy 128 Kbps -os linktől és 40 ms -tól nyolc BBR (zöld) vagy CUBIC (piros) adatfolyammal. A BBR minimális értéken tartja a sort, függetlenül a szűk keresztmetszet pufferének méretétől és az aktív szálak számától. A CUBIC folyamok mindig kitöltik a puffert, így a késleltetés lineárisan növekszik a puffer méretével.


10. ábra

Adaptív sáv a mobil cellákban

A cellás rendszerek részben a felhasználók sávszélességét részben a keresleti előrejelzés alapján alakítják ki, amely figyelembe veszi az adott felhasználónak szánt csomagsorat. Korai változatok A BBR -eket nagyon kis sorok létrehozására hangolták, ami miatt a kapcsolatok alacsony sebességnél elakadtak. A ProbeBW csúcsteljesítményének növelése és a sorok növekedése kevesebb elakadt kapcsolatot eredményezett. Ez nagyfokú alkalmazkodóképességet mutat egyes hálózatok esetében. A jelenlegi csúcserősítési érték mellett egyetlen hálózatban sincs romlás a CUBIC -hez képest.

Késleltetett és kifeszített ack csomagok

A mobil-, WiFi- és szélessávú hálózatok gyakran késleltetik és felhalmozzák a csomagokat. Ha az inflight egyetlen BDP -re korlátozódik, elakadásokat okoz, csökkentve a sávszélességet. A ProbeBW cwnd_gain tényezőjének kettőre növelése lehetővé tette a zökkenőmentes átvitel folytatását az előre jelzett szállítási sebességgel, még akkor is, ha az ack csomagokat egy RTT késleltette. Ez nagymértékben megakadályozza a meghibásodásokat.

Aktuális vödörkorlátozók

A BBR kezdeti bevezetése a YouTube -ra azt mutatta, hogy a világ legtöbb internetszolgáltatója torzítja a forgalmat a jelenlegi vödörsebesség -korlátozókkal. A vödör általában tele van a kapcsolat kezdetekor, így a BBR felismeri a mögöttes hálózat BtlBw paraméterét. De amint a vödör üres, a (BtlBw -nél jóval alacsonyabb) vödörkitöltési sebességnél gyorsabban küldött összes csomag elvetésre kerül. A BBR végül megtanulja ezt az új szállítási sebességet, de a ProbeBW nyereség ciklusa állandó mérsékelt veszteségeket eredményez. Annak érdekében, hogy minimálisra csökkentsük az upstream sávszélesség csökkenését és az alkalmazás késleltetésének növekedését, hozzáadtunk egy dedikált vágószer -érzékelőt és egy kifejezett vágómodellt a BBR -ben. Aktívan vizsgáljuk a sebességkorlátozók okozta károk kiküszöbölésének legjobb módjait is.

Versenyképesség a csomagvesztés torlódás -szabályozási módszereivel

A BBR a sávszélesség szűk keresztmetszetének igazságos megosztásában rejlik, akár más BBR -adatfolyamokkal, akár csomagvesztés torlódás -ellenőrzési technikák által vezérelt adatfolyamokkal versenyez. Még akkor is, ha az utóbbiak kitöltik a rendelkezésre álló puffert, a ProbeBW továbbra is megbízhatóan torzítja a BtlBw becslést a tisztességes felosztás felé, és a ProbeRTT úgy ítéli meg, hogy az RTProp becslés elég magas ahhoz, hogy a tatot a tisztességes felosztáshoz közelítse. Azonban a nem kezelt útválasztó -pufferek, amelyek meghaladják néhány BDP -t, arra kényszerítik a régi torlódásszabályozó versenytársakat, hogy felfújják a várólistát, és megragadják a méltányos részüket. Ennek kiküszöbölése az aktív kutatás másik területe.

Következtetés

A torlódáskezelés újragondolása hatalmas előny. Ahelyett, hogy olyan eseményeket használna, mint a pufferveszteség vagy a puffer lefoglalások, amelyek csak gyengén korrelálnak a torlódásokkal, a BBR a Kleinrock formális torlódási modelljével és a hozzá tartozó optimális működési ponttal kezdődik. A bosszantó következtetést, miszerint „lehetetlen” egyidejűleg meghatározni a kritikus késleltetést és sávszélességet, megkerüljük, ha megfigyeljük, hogy egyidejűleg megjósolhatók. Ezután a vezérlőrendszerek és a becslési elmélet legújabb fejleményeit alkalmazzák egy egyszerű, elosztott vezérlőhurok létrehozásához, amely megközelíti az optimumot, teljes mértékben kihasználva a hálózatot, miközben egy kis sorban marad. A Google BBR implementációja elérhető a nyílt forráskódú Linux kernelben, és részletesen a cikk mellékletében található.

A BBR technológiát a Google B4 gerincén használják, jelentősen javítva a CUBIC -on keresztüli teljesítményt. A Google és a YouTube webszerverein is telepítve van, jelentősen csökkentve a késleltetést mind az öt eddig tesztelt kontinensen, és különösen erős a fejlődő országokban. A BBR technológia kizárólag a feladó oldalon működik, és nem igényel változtatásokat a protokollon, a címzetten vagy a hálózaton, ami lehetővé teszi annak fokozatos bevezetését. Ez csak az RTT -től és a csomagküldési értesítésektől függ, így a legtöbb internetes szállítási protokollban használható.

Köszönetnyilvánítás

A szerzők hálásak Len Kleinrocknak ​​a torlódások megfelelő kezelésével kapcsolatos útmutatásért. Köszönettel tartozunk Larry Brakmo -nak a Vegas és New Vegas torlódáskezelő rendszerekkel kapcsolatos úttörő munkáért, amelyek előre jelezték a BBR számos elemét, valamint tanácsaiért és útmutatásáért a BBR fejlesztésének első napjaiban. Ezúton is szeretnénk megköszönni Eric Dumazet, Nandita Dukkipati, Jana Iyengar, Ian Swett, M. Fitz Nowlan, David Wetherall, Leonid Leonidas Kontothanassis, Amin Vahdat, valamint a Google BwE és a YouTube Infrastructure csapatának felbecsülhetetlen segítséget és támogatást.

Függelék - részletes leírás

Állapotgép szekvenciális szondázáshoz

A pacing_gain szabályozza, hogy milyen gyorsan küldjenek csomagokat a BtlBw -hez képest, és ez az intelligens BBR szolgáltatás kulcsa. Ha a pacing_gain nagyobb, mint egy, az inflight növekszik, és a csomagok közötti rés csökken, ami a linket az 1. ábra jobb oldalára mozgatja.

A BBR a pacing_gain segítségével egy egyszerű szekvenciális állapotérzékelő gépet valósít meg, amely felváltva teszteli a nagyobb sávszélességet és a tesztelést a kevesebb dupla áthaladási idő érdekében. (Nem szükséges kisebb sávszélesség tesztelése, mert azt a BtlBw msx szűrő automatikusan kezeli: az új mérések tükrözik a csökkenést, így a BtlBw korrigálja magát, amint az utolsó régi módosításokat eltávolítja a szűrőből az időtúllépés. Az RTprop min szűrő ugyanúgy kezeli a szállítási útvonal növekedését) ...

Ha a szűk keresztmetszet sávszélessége nő, a BBR -nek gyorsabban kell adatokat küldenie, hogy észlelje azokat. Hasonlóképpen, ha a csomag tényleges kettős átfutási ideje megváltozik, ez megváltoztatja a BDP -t, és ezért a BDP -nek lassabban kell adatokat küldenie, hogy az infláció a BDP alatt maradjon az új RTprop méréséhez. Ezért ezeknek a változásoknak az egyetlen módja a kísérletezés, gyorsabb küldés a BtlBw növekedésének ellenőrzésére, vagy lassabb küldés az RTprop csökkenésének ellenőrzésére. Ezeknek a kísérleteknek a gyakorisága, terjedelme, időtartama és felépítése a már ismert dolgoktól (kapcsolat kezdete vagy stabil állapot) és az adatokat küldő alkalmazás viselkedésétől (szakaszos vagy állandó) függően eltérő.

Állandó állapot

A BBR -folyamok idejük nagy részét a ProbeBW állapotban töltik, az úgynevezett módszerrel vizsgálják a sorozatot nyerjen kerékpározást, amely elősegíti a BBR adatfolyamok nagy áteresztőképességének, alacsony várakozási sorának késleltetésének és méltányos részesedési konvergenciájának elérését. Használata nyerjen kerékpározást A BBR ciklikusan megpróbál egy sor értéket a nyereség érdekében pacing_gain... Nyolc ciklusfázist használunk a következő értékekkel: 5/4, 3/4, 1, 1, 1, 1, 1, 1. Minden fázis általában az előre jelzett RTprop -ig tart. Ez a kialakítás lehetővé teszi, hogy az együttható hurok először a csatornát érzékelje a nagyobb sávszélesség érdekében, értékkel pacing_gain nagyobb, mint 1,0, majd szétterítheti a kapott sort a gombbal pacing_gain ugyanannyival kevesebb, mint 1,0, majd haladjon sebességgel, pontosan 1,0 -es együtthatókkal. Az összes fázis átlagos nyeresége 1,0, mivel a ProbeBW általában átlagban kiegyenlíti a rendelkezésre álló sávszélességet, és ezáltal fenntartja a magas sávszélesség -kihasználtságot a sor növelése nélkül. Vegye figyelembe, hogy bár az arány ciklusai változnak pacing_gain hanem az érték cwnd_gain mindig kettővel egyenlő marad, mivel a késleltetett és kiterjesztett ack csomagok bármikor megjelenhetnek (lásd a késleltetett és kiterjesztett ack csomagok fejezetet).

Sőt, az áramláskeverés és a tisztességes sávszélesség -felosztás javítása, valamint a sorban állás csökkentése érdekében, ha több BBR szűk keresztmetszetben oszlik meg, a BBR véletlenszerűen megváltoztatja a ProbeBW ciklus fázisait azáltal, hogy véletlenszerűen választja ki az első fázist a 3/4 kivételével. Miért nem kezdődik a ciklus 3/4 -től? Az arány ezen értékének fő célja az 5/4 arány alkalmazása során kialakuló sorok feloszlatása, amikor a csatorna már megtelt. Amikor egy folyamat elhagyja a Drain vagy ProbeRTT állapotot, és belép a ProbeBW -be, nincs sor, így a 3/4 tényező nem teszi a dolgát. A 3/4 használata ilyen kontextusban csak negatív hatással jár: a csatorna feltöltése ebben a fázisban 3/4 lesz, és nem 1. Így a ciklus kezdete 3/4 -ről csak negatív hatással bír , de nincs pozitív hatása, és mivel a ProbeBW állapotba való belépés sok időt vesz igénybe minden kapcsolat elején, a BBR ezt a kis optimalizálást használja.

A BBR szálak együttesen rendszeresen ürítik a sort a szűk keresztmetszetből a ProbeRTT nevű állapot használatával. A ProbeRTT -n kívül bármely más állapotban, ha az RTProp becslést 10 másodpercnél hosszabb ideig nem frissítették (például alacsonyabb RTT mérésével), akkor a BBR belép a ProbeRTT állapotba, és a cwnd értéket nagyon kis értékre csökkenti (négy csomag) ). Azáltal, hogy ilyen minimális számú, legalább 200 ms-os repülés közbeni csomagokat tart, és egy burst dupla átfutási időre, a BBR kilép a ProbeRTT állapotból, és belép az Indításba vagy a ProbeBW-be, attól függően, hogy a csatorna már tele van-e vagy sem.

A BBR -t úgy tervezték, hogy az idő nagy részében (kb. 98%-ban) a ProbeBW állapotban, a fennmaradó időben pedig a ProbeRTT -ben működjön, kompromisszumok alapján. A ProbeRTT állapot elég hosszú ideig tart (legalább 200 ms) ahhoz, hogy a különböző RTT -vel rendelkező szálak párhuzamos ProbeRTT állapotokkal rendelkezzenek, de ugyanakkor elég rövid ideig tart, hogy a teljesítmény romlását körülbelül két százalékra korlátozza (200 ms / 10 másodperc). Az RTprop szűrőablak (10 másodperc) elég kicsi ahhoz, hogy gyorsan alkalmazkodjon a forgalom szintjének változásához vagy az átirányításhoz, de elég nagy az interaktív alkalmazásokhoz. Az ilyen alkalmazások (például weboldalak, távoli eljáráshívások, videoklipek) gyakran természetes csendes időszakokat vagy alacsony aktivitást mutatnak ezen ablak ablakaiban, ahol az áramlási sebesség elég lassú vagy elég hosszú ahhoz, hogy szűkre szabja a sort. Az RTprop szűrő opcionálisan beállítja ezeket az RTprop méréseket, és az RTProp frissül anélkül, hogy a ProbeRTT -t használni kellene. Így a folyamoknak általában csak a sávszélesség 2% -át kell feláldozniuk, ha több adatfolyam bőségesen kitölti a csatornát egy teljes RTProp ablakban.

Indítási viselkedés

Amikor egy BBR szál elindul, végrehajtja az első (és leggyorsabb) szekvenciális soros szondázási / ürítési folyamatot. A hálózati sávszélesség 10 12 tartományban változik - néhány bittől 100 gigabitig másodpercenként. Ahhoz, hogy megtudja a BtlBw értékét egy ilyen óriási tartományváltozáshoz, a BBR bináris keresést végez a sebességtérben. Nagyon gyorsan megtalálja a BtlBw -t (csomagok dupla áthaladása), de a keresés utolsó szakaszában a 2BDP -s sor létrehozásának rovására. A keresés a BBR indítási állapotában, a létrehozott sor ürítése pedig a Drain állapotban történik.

Először is, az Indítás exponenciálisan megnöveli az adatok küldésének sebességét, minden körben megduplázva azt. Annak érdekében, hogy ilyen gyors érzékelést érjen el a legnyugodtabb módon, a nyereségértékek indításakor pacing_gainés cwnd_gain minimális értékre van állítva, amely lehetővé teszi a feltöltési sebesség megduplázását minden körben. Amint a csatorna megtelik, az együttható cwnd_gainértékre korlátozza a sor méretét.

A kapcsolat kezdeti állapotában a BBR a BtlBw becslésben fennsík keresésével megítéli, hogy megtelt -e a csatorna. Ha kiderül, hogy több (három) forduló telt el, ahol a kézbesítési sebesség megduplázására tett kísérletek valóban nem adnak nagy sebességnövekedést (kevesebb, mint 25%), akkor úgy véli, hogy elérte a BtlBw -t, ezért kilép az Indításból állapotba lép, és belép a Drain állapotba. A BBR három fordulót vár, hogy meggyőző bizonyítékot szerezzen arról, hogy a küldő által észlelt kézbesítési arány fennsík nem átmeneti hatás a fogadási ablak miatt. A három körre való várakozás elegendő időt biztosít automatikus hangolás a címzett oldalán a fogadási ablak megnyitásához és ahhoz, hogy a feladó érzékelje a BtlBw növelésének szükségességét a BBR -n keresztül: első körben a fogadási ablak automatikus beállítására szolgáló algoritmus növeli a fogadási ablakot; a második körben a feladó kitölti a felnagyított vételi ablakot; a harmadik körben a feladó megnövelt szállítási sebességgel kap mintákat. Ez a háromfordulós korlát bevált a YouTube megvalósításában.

Drain állapotban a BBR algoritmus arra törekszik, hogy gyorsan kiürítse a kapcsolat indítási állapotában kialakult várólistát a pacing_gain ellentétes értékekkel, mint az indítási állapotban használt értékek. Ha a repülés közbeni csomagok száma megegyezik a BDP becslésével, az azt jelenti, hogy a BBR a sort teljesen üresnek tekinti, de a csatorna még mindig tele van. Ezután a BBR kilép a Drain állapotból és belép a ProbeBW -be.

Ne feledje, hogy a BBR kapcsolat és a lassú CUBIC indítása egyaránt exponenciálisan tanulja meg a szűk keresztmetszetet, megduplázva a küldési sebességet minden körben. Ezek azonban alapvetően különböznek egymástól. Először is, a BBR megbízhatóbb a rendelkezésre álló sávszélesség meghatározásában, mivel nem áll le a kereséssel csomagvesztés vagy (mint a CUBIC Hystart) késleltetése esetén. Másodszor, a BBR fokozatosan növeli a küldési sebességet, míg a CUBIC csomagokban minden körben (akár ingerléssel is) csomagok vannak, majd néma periódus. A 4. ábra a csomagok számát mutatja repülés közben, és figyeli az RTT -t minden BBR és CUBIC nyugtázó üzenethez.

Válasz az átmeneti helyzetekre

A hálózati útvonal és a rajta keresztülhaladó forgalom hirtelen drámai változásokat tapasztalhat. A zökkenőmentes és megbízható alkalmazkodáshoz, valamint a csomagveszteség csökkentéséhez ezekben a helyzetekben a BBR számos stratégiát alkalmaz az alapmodell megvalósításához. Először is, a BBR azt a célt tekinti, amely felé a jelenlegi cwndóvatosan közelít alulról, növekszik cwnd minden alkalommal legfeljebb annyi adatmennyiség, amelyre a szállítási visszaigazolás érkezett. Másodszor, az újraküldési időtúllépéssel, ami azt jelenti, hogy a feladó a repülés közbeni összes csomagot elveszettnek tekinti, a BBR konzervatív módon csökkenti cwnd legfeljebb egy csomagot, és egyetlen csomagot küld (csakúgy, mint a csomagvesztés torlódásszabályozó algoritmusai, például a CUBIC). Végül is, amikor a feladó észreveszi, hogy egy csomag elveszett, de még mindig vannak csomagok, a veszteség helyreállítási folyamat első lépésében a BBR ideiglenesen csökkenti a küldési arányt az aktuális kézbesítési arány szintjére; a veszteségvisszaszerelés második és következő fordulóján ellenőrzi, hogy a küldési arány soha nem haladja meg a jelenlegi szállítási arányt több mint kétszeresére. Ez nagymértékben csökkenti az átmeneti veszteséget, amikor a BBR ütközéskorlátozókkal találkozik, vagy más áramlatokkal verseng a BDP méretű pufferben.

Linkek

1. Abrahamsson, M. 2015. TCP ACK elnyomása. IETF AQM levelezőlista;

Kérjük, engedélyezze a Javascript használatát az egységátalakító használatához

›› További információ az egységátalakítótól

Hány cfm 1 köbméter / percben? A válasz: 35.314666212661.
Feltételezzük, hogy között konvertál köbméter / percés köbméter / perc.
Az egyes mértékegységekről további részleteket tekinthet meg:
cfm vagy köbméter / perc
Az SI származtatott mértékegysége térfogatáram köbméter / másodperc.
1 köbméter / másodperc 2118,8799727597 cfm, vagy 60 köbméter / perc.
Vegye figyelembe, hogy kerekítési hibák fordulhatnak elő, ezért mindig ellenőrizze az eredményeket.
Ezen az oldalon megtudhatja, hogyan lehet konvertálni köbméter / perc és köbméter / perc között.
Írja be saját számát az űrlapba az egységek konvertálásához!

›› Gyors átváltási táblázat cfm -ből köbméter / percre

1 cfm - köbméter / perc = 0,02832 köbméter / perc

10 cfm - köbméter / perc = 0,28317 köbméter / perc

20 cfm - köbméter / perc = 0,56634 köbméter / perc

30 cfm - köbméter / perc = 0,84951 köbméter / perc

40 cfm - köbméter / perc = 1,13267 köbméter / perc

50 cfm - köbméter / perc = 1,41584 köbméter / perc

100 cfm - köbméter / perc = 2,83168 köbméter / perc

200 cfm - köbméter / perc = 5.66337 köbméter / perc

›› Más egységeket szeretne?

›› Meghatározás: köbméter / perc

A köbláb / perc (CFM) az ipari higiénia és szellőzéstechnika mérőszáma. Leírja a gáz- vagy levegőmennyiség térbe vagy onnan való áramlásának sebességét.

A légáram szabványos mérése, amely azt jelzi, hogy hány köbméter levegő halad el egy álló ponton egy perc alatt. Minél magasabb ez a szám, annál több levegőt kényszerítenek át a rendszeren. A folyadék vagy gáz térfogatáramlási sebessége köbméterben percenként. 1 CFM körülbelül 0,47 liter másodpercenként.

›› Metrikus konverziók és így tovább

webhely online konverziós számológépet biztosít minden típusú mértékegységhez. Megtalálhatja az SI egységek metrikus konverziós tábláit, valamint az angol egységeket, a pénznemeket és egyéb adatokat. Gépelje be az egységszimbólumokat, rövidítéseket vagy teljes neveket a hosszúság, terület, tömeg, nyomás és egyéb típusokhoz. Ilyen például a mm, hüvelyk, 100 kg, amerikai folyadékuncia, 6 "3", 10 kő 4, köbcentiméter, négyzetméter, gramm, anyajegy, láb másodpercenként és még sok más!