Meny
Är gratis
checka in
den huvudsakliga  /  Problem / Kate Matsera: Skalbar webbarkitektur och distribuerade system. BBR-system: Reglering av trängsel direkt av Refoils of Hopeless Detalj CFM

Kate Matsera: Skalbar webbarkitektur och distribuerade system. BBR-system: Reglering av trängsel direkt av Refoils of Hopeless Detalj CFM

I den här artikeln presenterar vi några koncept som behöver användas vid val av fallfläkt och berätta om karakteristiska egenskaper för olika typer av fläktar. Dessutom testar vi 120 mm Akasa Akasa AK-183-L2B-fläkt, som har använts i mer än ett år som ett aktivt element i processorns kylsystem Thermaltake Sonic Tower som används vid provning av processorer och videokort. Och det bör noteras att han helt förtjänade rätten att bli den första hjälten i en serie recensioner dedikerade till fans på vår resurs.

Frågor som vi kommer att försöka svara kommer ...

Vilka krav kan skickas till höljesfläkten?

  1. Prestationsnivå.
  2. Ljudnivå.
  3. Utseende (tillgänglighet och syn på bakgrundsbelysningen).
  4. Ytterligare funktioner (PWM Nutrition Support, närvaron av en hastighetsregulator, konfiguration av anti-vibrationsfäste).

Vilka är de viktigaste skillnaderna i Corpus-fansen?

1. Hårda dimensioner - Pumphjulets storlek.

För att skapa interna ventilation i huset, i de flesta fall används fläktar med en standardstorlek som är lika med 80 mm, 92 mm eller 120 mm, eftersom för deras installation i huset, är monteringshålen initialt anordnade. Det är helt klart att ju större pumphjulets storlek vid fläkten desto högre är hans förmåga att pumpa luftflödet. Därför måste fläkten med en mindre storlek för att uppnå prestandaindikatorerna för stora modeller att rotera med högre hastighet och, följaktligen är det mycket mer brus. Faktum är att exakt 120 mm fans används av denna anledning.

För tydligheten av dessa egenskaper kan du jämföra egenskaperna hos modeller av fansen i företaget Xinruilian Science & Technology Co. har olika storlekar:

Storlek, mm.

Speed \u200b\u200bRPM

Luftflöde, CFM

Ljudnivå, db

Tryck, mm H2 0

Att döma av ovanstående egenskaper hos modeller, kan man dra slutsatsen att med samma rotationshastighet kommer 92 mm fläkten att vara 1,65 gånger mer produktiv än 80 mm, och 120 mm fläkt kommer att vara dubbelt så effektivt 92 mm, med hänsyn till faktumet att alla fans har en typ av pumphjul.

Förutom olika impellerdiametrar är storleken på profilen eller djupet på fläkten lika viktigt. "Classic" för vanliga byggnader är 25 mm profil. Med en mindre profil kallas fläktar lågprofil, och med stor hög profil. Från storleken på profilen beror direkt kraften i luftflödet, som kännetecknas av specifikationen av värdet av maximalt tryck.

Till exempel jämför vi egenskaperna hos två 120 mm modeller - med en konventionell profil och en hög profil som arbetar med en rotationshastighet.

Storlek, mm.

Speed \u200b\u200bRPM

Luftflöde, CFM

Ljudnivå, db

Tryck, mm H20

Från bordet är det klart att den högprofilerade fläkten endast är den bästa indikatorn på det maximala luftflödestrycket. I konventionella datorsystem är det inte nödvändigt att skapa övertryck, så dessa fans hittar inte applikationer i dem. I de flesta fall används högprofilerade fläktar i servrar, dessutom har de ökad rotationshastighet och som ett resultat ett ganska stort fungerande ljud.

2. Lager.

I fansen används tre huvudtyper av lager: glidande, kombinerat glid och rullande alternativ och bestående av två rullande lager. Förutom dessa typer av lager är det märkbart mindre vanligt, det finns hydrodynamiska arter som specifikt utvecklas separat av vissa tillverkare.

Oftast är det möjligt att bestämma vilken typ av lager som finns i titeln på fläktmodellen för följande index, även om det alltid är önskvärt att kontrollera med den officiella specifikationen:

S. (Ärm.) - glidlager, som i huvudsak är en hylsa;
FRÅN (combo.) - ett kullager och kortärmad;
B (boll) eller 2b (2 boll) - Två kullager.

Det enklaste och billiga, men tyvärr är inte särskilt hållbar är glidlagret. Detta lager har utseendet på en liten kopparhylsa, inuti vilken roterande, glider axelns (stång) hos pumphjulet. Den nya fläkten med ett smörjt glidlager kan vara helt tyst, men efter tiden kan den här egenskapen gå vilse. I avsaknad av en korrekt smörjnivå är "produktionen" av ärmen ganska snabbt snabbt, på grund av vilken fläkten börjar göra ljud. Dessutom, i avsaknad av smörjmedel, som arbetar i en zon med en förhöjd temperatur, kan fläkten helt skölja. Speciellt tydligt visar detta faktum fall med billiga kinesiska kraftenheter, där det inte fanns några fall av att stoppa fläkten på glidlageret, vilket gav kylkrafts halvledarelement. Som ett resultat misslyckades strömförsörjningen.

Det kombinerade lageralternativet har en relativt större resurs i lageret.

Bearing, bestående av två kullager, är den dyraste, men samtidigt ett mer hållbart alternativ. Denna typ av lager kan fritt arbeta i en zon med en förhöjd temperatur. Men samtidigt, ofta bland sådana fans kan du träffa exemplar, avge ett ganska högt och obehagligt ljud. En sådan bild är speciellt karakteristisk för billiga fans, eftersom bulleregenskaperna hos hela konstruktionen är direkt beroende av kvaliteten på tillverkningen av ett miniatyrlager. Därför, om du väljer en produkt på kullager, jagas därför inte för sin låga kostnader, eftersom ännu dyrare modeller sällan är tysta.

3. Motorklass.

Alla kabinettfans fungerar på fyra-poliga DC-motorer. I hastighet klassificeras de alla i tre kategorier: upp till 2000 rpm låghastighet, från 2000 till 3000rd / min. Mitten och över 3000 rpm höghastighet. Du kan ofta ta reda på fläktmotorklassen med index i sitt namn, vilket ofta anges på klistermärken:

L (låg.) - ekorre ( fram till 2000. rpm);
M. (mitten) - mitten ( från 2000 till 3000 rpm);
H. (hög) - hastighet ( Över 3000.rpm).

Vad anges uppgifterna i tillverkarens specifikation?

Fläktrotationshastighet Den mäts i antalet varv i en minut (RPM - rotationer per minut). Eftersom själva fläkthastigheten kan variera nästan direkt proportionell mot strömspänningen, motsvarar det värde som anges i specifikationen den nominella matningsspänningen. Ju högre rotationshastighet, desto effektivare fläkten, men också, är vanligtvis bullriga.

Luftflöde Det kan anges i CFM (kubikfot per minut, CFM) - kubikfot per minut eller kubikmeter per timme (m 3 / h). Dessutom 1 cfm ≈ 1,7 m 3 / h. Denna storlek visar antalet "inriktad" luft under en viss tidsperiod, förutsatt att det finns en fullständig frånvaro av resistens mot luftflöde, det vill säga med ett lufttryck på båda sidor av fläkten. Naturligtvis ju mer detta värde desto bättre.

Statiskt luftflödestryck Fläkten drivs vanligtvis i mm vattenkolonn och kännetecknar kraften i luftflödet, vilket kan skapa en fläkt.

Minns att trycket beräknas med formeln P \u003d f / s. Det vill säga trycket är förhållandet mellan luftflödet till det fyrkant som det fungerar. Specifikationen indikerar det maximala luftflödesvärdet som fläkten skapar när det inte kan skapa ett luftflöde på grund av motstånd.

Hela egenskapen hos fläkten kan ses på diagrammet "Curve Performance".

Prestationskurvan representerar beroendet av luftflödet från tryck. Den översta punkten på kurvan, som ligger på axeln, är bara inget mer än det maximala trycket, som är anordnat i specifikationen. Den nedre punkten på kurvan som ligger på en annan axel motsvarar det maximala luftflödet på fläkten när han inte behöver skapa tryck. I reella förhållanden, i fallet måste luftflödet övervinna något motstånd. Varje ärende har individuellt sin egen grad av motstånd. Systemets motstånd kommer att uttryckas av lutande på diagrammet, och skärningspunkten för en direkt och kurva är inget annat som en operativ punkt i vårt villkorliga system.

Fläktresursden mäts med antalet tusen timmar under vilka fläkten måste fungera och ge angivna egenskaper. Författaren till artikeln är inte fullt känd, i vilka driftsförhållanden som värdena uppnås, eftersom livslängden direkt beror på arbetsförhållandena. Det är underförstått att fläkten är kapabel utan att förlora sina bullerkvaliteter för att utarbeta det angivna antalet timmar. Resursen beror i stor utsträckning på lagens typ och kvalitet. För glidlager är det vanligtvis indikerat med 30 000 timmar, för en kombinerad - 45 000 timmar, och för en dubbla kullager är värdena 60 000 timmar och högre.

I de flesta fall kan fläkten på glidlagret vara ganska tyst i ungefär ett år, även om tillverkarna förklarar ett antal 30 tusen. Därför bör det inte behandlas med dessa nummer. Och om du gräver visar det att tillverkaren också innebar ett periodiskt underhåll av fans, dvs. Smörjning som vanliga användare sällan producerar.

Nu tillbaka till hjälten i vår recension fan akasa AK-183-L2B och titta på specifikationen:

akasa. AK-183-L2B

Storlek, mm.

Rotationshastighet, varvtal

Luftflöde, CFM

Tryck, mm H20

Resurs, ch

Typ av lager

två turer

3-polig

Ljudnivå, db

Matningsspänning, i

Products webbsida

genomsnittspris

Akasa AK-183-L2B-fläkten är förpackad i transparent plastförpackning. I paketet från baksidan finns ett kartongplåt av blått och betonar det genomskinliga fallet och en genomskinlig bärngul pumphjul av fläkten. I allmänhet är allt dekorerat i den vanliga företagsblågula färgen i Akasa-gruppen.

På baksidan av kartongfliken på fem olika språk ges en specifikation.

Förutom fläkten i botten av förpackningen är en liten kartonglåda med svart med en inskription i översättningen som "3-4 PIN-adapter" inbäddad.

Därför är det inte alls överraskande att en adapter har varit i lådan som låter dig ansluta fläkten från anslutningarna av periferiska enheter och dessutom, ytterligare med en 3-polig kontakt för att styra fläktrotationshastigheten. Också i en liten svart låda fanns det fyra skruvar för att installera fläkten i fallet.

Akasa AK-183-L2B-fläkthuset är tillverkat av vit transparent plast, och dess pumphjul är från gultvul genomskinlig plast. Egentligen, om vi överväger hela sortimentet av Akasa, så kommer det sällan över några enkla och standardlösningar, eftersom företaget distribueras till distributionen av varor för det mesta beräknat exakt för modding. Men det betyder inte att om du inte anser dig själv med blygor och är vana vid att bara utvärdera varorna från praktiska överväganden, så passar den här fanen och resten av liknande varor. I själva verket, vid produktion av produkter för de så kallade icke-lätta användarna, mods eller utsikt över, är det alltid en ökning av uppmärksamheten främst till tillverkningens kvalitet och något högre dess egenskaper. Därför är det inte alls överraskande att nästan alltid konsumtionsegenskaper hos sådana produkter är högre än det för enkla varor.

Externt är fläkten definitivt allokerad, främst en vacker kombination av gul och vit färg, och det verkar som att en liknande fläkt helt enkelt är skyldig att ha en bakgrundsbelysning, men det är faktiskt inte. Ur aerodynamikens synvinkel är ingen innovation eller know-how i fläkten inte implementerad - en enkel seminal pumphjul.

Akasa AK-183-L2B-fläkten hänvisar till låghastighetsmodeller, dess nominella rotationshastighet är 1 400 rpm. Samtidigt kan det maximala luftflödet nå värdet 44,8 cfm och det statiska trycket på 1,1 mm vattenkolonn . Egenskaper är varken ultrahigh och ganska vanligt, men det är inte förvånande, eftersom det för skrovfläkten i hemmet, är det främst ökade krav på buller.

Och i detta avseende indikerar specifikationen ett ganska lågt ljud som är lika med 18 dB. Det bör noteras att Akasa AK-183-L2B-fläkten är baserad på två kullager, och dess resurs enligt tillverkaren är 80 000 timmar. Det vanliga värdet för kullager är värden på 60 000 timmar, så ett något förstorat värde ger anledning att hoppas på ett bättre tillvägagångssätt för deras tillverkning, eftersom vi redan har noterat, det är kvaliteten på tillverkningen av ett kullager bestämmer det bulleregenskaper.

Fläkten drivs av en 3-stifts strömkontakt som inte stöder latitudinella strömförsörjning.

Testning

Den praktiska delen av testet består av två steg av testning av det skapade luftflödet på fläkten på den nominella omsättningen, liksom bedömningen av dess volym på rykten.

Test №1

I det första testet kommer fläkten att utföra rollen som det aktiva elementet i Thermalright Si-128 kylare. Testning utförs i ett öppet hus, och den huvudstyrda parametern är uppvärmningstemperaturen överklockad till frekvensen av 2,8 GHz-processor Intel Core 2 Duo E6300 och systemkortets temperatur.

Test nummer 2.

I det andra testet kommer fläkten att appliceras direkt som en kroppsfläkt installerad på bakpanelen och körs på blåsning. Under provet stängs huset och det kommer inte att finnas några andra fans. Den huvudsakliga kontrollerade parametern kommer också att vara uppvärmningstemperaturen för Intel Core 2 Duo E6300-processorn, men nu utan acceleration, till vilket det passiva kylsystemet Thermaltake Sonic Tower (CL-P0071) och systemkortstemperaturen är installerad. Testresultatet är fixat efter en 10-minuters "körning" av processorns stresstest i Everest-applikationen.

Testkonfigurationen av plattformen med Intel-processorn består av följande komponenter:

Moderkort

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

Cpu

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

Bagge

2 x DDR2-800 1024 MB APACER PC6400

Grafikkort

EVGA GeForce 8600GTS 256 MB DDR3 PCI-E

Hdd

Samsung HD080HJ, 80 GB, SATA-300

Optisk enhet

Asus DRW-1814BLT SATA

Strömförsörjning

Chieftec CFT-500-A12S 500W, 120 mm fläkt

CodeGen M603 Miditower

Akasa AK-183-L2B-fläkten visar bra prestanda på lika med resten av konkurrenterna. En ganska låg deklarerad ljudnivå på 18 dB kan endast bekräftas med deras subjektiva åsikt. Det angivna värdet motsvarar verkligen den reala ljudnivån - det gör en liten rumpa vid maximala varv.

Slutsatser.

Akasa AK-183-L2B-fläkten är inte en exklusivt modding vacker dekoration, som kan omedelbart tyckas för köparen. Det kan skapa ett ganska stort luftflöde, och, viktigast av allt, det gör en ganska låg ljudnivå. Om vi \u200b\u200btar hänsyn till dess acceptabla kostnad som en högkvalitativ modell av en kullager, då i denna produktkategori i förhållandet mellan pris / konsumentkvaliteter blir det en av de bästa. Upprepa det i vårt testlaboratorium lyckades Akasa AK-183-L2B-fläkten arbeta i mer än ett år, och dess bullerkvaliteter under denna tid har inte förändrats.

Fördelar:

  • skapar ett stort luftflöde;
  • lågt ljud;
  • bra pris / konsumentkvalitetsförhållande.

Vi kommer att dra till nackdelarna:

  • inget PWM-stöd.

Vi uttrycker min tacksamhet till företagets PF-tjänst (Dnepropetrovsk) för testutrustning som tillhandahålls för testning.

Artikeln läser 4669 gånger

Prenumerera på våra kanaler

Offentlig programvara har blivit det viktigaste strukturella elementet när du skapar några av de största webbplatserna. Med tillväxten av dessa webbplatser uppstod avancerade praktiska metoder och riktlinjerna för deras arkitektur. Detta kapitel syftar till att täcka några viktiga frågor som bör beaktas vid utformningen av stora webbplatser, liksom några grundläggande komponenter som används för att uppnå dessa mål.

Fokus i detta kapitel ges till analysen av webbsystem, även om en del av materialet kan extrapoleras till andra distribuerade system.

1.1 Principer för att bygga distribuerade webbsystem

Vad exakt gör skapandet och hanteringen av en skalbar webbplats eller en ansökan? På primitiv nivå är detta helt enkelt en anslutning av användare med avlägsna resurser via Internet. Och resurser eller tillgång till dessa resurser, som är dispergerade på flera servrar och är en länk som ger hemligheten på webbplatsen.

Liksom de flesta saker i livet kan den tid som spenderas i förväg om planeringen av webbtjänsten hjälpa till i framtiden. Att förstå vissa överväganden och kompromisser som står bakom de stora webbplatserna kan ge frukt i form av smartare lösningar när de skapar mindre webbplatser. Nedanför några viktiga principer som påverkar designen av storskaliga webbsystem:

  • Tillgänglighet: Varaktigheten av det fungerande tillståndet på webbplatsen är avgörande i förhållande till många företags rykte och funktionalitet. För vissa större online-butiker kan otillgänglighet även i några minuter leda till tusentals eller miljontals dollar av förlorad inkomst. Således är utvecklingen av deras ständigt prisvärda och elastik för systemets misslyckande både ett grundläggande affärs- och tekniskt krav. Hög tillgänglighet i distribuerade system kräver noggrann övervägning av redundans för nyckelkomponenter, snabb återhämtning efter partiell systemfel och utjämnade förkortningar när problem uppstår.
  • Prestanda: Webbplatsens prestanda har blivit en viktig indikator för de flesta webbplatser. Webbplatshastighet påverkar arbetet och användarnas tillfredsställelse, liksom sökmotor ranking - en faktor som direkt påverkar publikens och inkomstens innehav. Som ett resultat är nyckeln skapandet av ett system som är optimerat för snabba svar och låga förseningar.
  • Pålitlighet: Systemet måste vara tillförlitligt, så att en viss begäran om dataförvärv enhetligt returnerade vissa data. Vid dataändring eller uppdatering måste samma fråga returnera nya data. Användare bör veta om något spelas in i systemet eller lagras i det, då kan du vara säker på att det kommer att förbli i sin plats att eventuellt extrahera data därefter.
  • Skalbarhet: När det gäller något stort distribuerat system visar storleken bara vara en punkt från hela listan som måste övervägas. Inga mindre viktiga ansträngningar att öka bandbredden för att bearbeta stora belastningsvolymer, som vanligtvis kallas skalbarheten hos systemet. Skalbarhet kan relatera till olika systemparametrar: Antalet ytterligare trafik med vilken den kan klara hur lätt det är att öka lagringsenhetens kapacitet eller hur mer än andra transaktioner kan behandlas.
  • Kontrollerbarhet: Att utforma ett system som är lätt att använda en annan viktig faktor. Systemets reglerbarhet är lika med skalbarheten av "underhåll" och "uppdateringar" -operationer. För att säkerställa hanterbarhet är det nödvändigt att överväga frågor om enkelhet av diagnos och förståelse för framväxande problem, lättnad av uppdateringar eller modifiering, nyckfull i systemet i drift. (Det vill säga om det fungerar utan misslyckanden eller undantag?)
  • Kosta: Kostnaden är en viktig faktor. Det kan uppenbarligen inkludera kostnaden för hårdvara och programvara, men det är också viktigt att överväga andra aspekter som är nödvändiga för att distribuera och behålla systemet. Mängden utvecklare som krävs för att bygga ett system, omfattningen av operativa insatser som är nödvändiga för att starta systemet, och till och med en tillräcklig utbildning - allt måste tillhandahållas. Kostnaden är den totala ägandekostnaden.

Var och en av dessa principer är grunden för att fatta beslut i utformningen av en distribuerad webbarkitektur. Ändå kan de också stå i motsats till varandra, eftersom uppnåendet av målen för man uppstår på grund av andra. Ett enkelt exempel: att välja ett enkelt tillägg av flera servrar som en prestationslösning (skalbarhet) kan öka kontrollkostnaderna (du måste använda en extra server) och inköp av servrar.

När man utvecklar någon typ av webbapplikation är det viktigt att överväga dessa viktiga principer, även om det måste bekräfta att projektet kan donera en eller flera av dem.

1.2 Grunderna

När man överväger systemarkitekturen finns det flera frågor som måste lyser, till exempel: vilka komponenter som ska användas, eftersom de kombinerar med varandra, och vilka kompromisser du kan gå. Att investera pengar i skalning utan det uppenbara behovet av det kan inte betraktas som ett rimligt affärsbeslut. En viss försiktighet i planeringen kan dock avsevärt spara tid och resurser i framtiden.

Det här avsnittet är dedikerat till några grundläggande faktorer som är nödvändiga för nästan alla stora webbapplikationer: tjänster,
redundans, segmentering, I. bearbetningsfel. Var och en av dessa faktorer involverar valet och kompromisserna, särskilt i samband med de principer som beskrivs i föregående avsnitt. För förklaring ger vi ett exempel.

Exempel: bildhanteringsprogram

Du har förmodligen redan lagt bilder på nätverket. För stora webbplatser som tillhandahåller lagring och leverans av flera bilder finns det problem med att skapa en kostnadseffektiv, mycket pålitlig arkitektur, som kännetecknas av låga svarförseningar (snabb extraktion).

Föreställ dig det system där användarna har möjlighet att ladda upp sina bilder till den centrala servern, och samtidigt kan bilder begäras via en länk till webbplatsen eller API, som liknar Flickr eller Picasa. För att förenkla beskrivningen, låt oss anta att den här applikationen har två huvuduppgifter: förmågan att ladda upp (skriv) bilder till servern och begära bilder. Naturligtvis är effektiv nedladdning ett viktigt kriterium, men prioriteringen kommer att vara snabb leverans på begäran av användare (till exempel kan bilder begäras på en webbsida eller en annan applikation). Denna funktionalitet liknar den som en webbserver kan tillhandahålla en webbserver eller en gränsuppleveransnätverksserver (Content Delivery Network, CDN). CDN-servern lagrar vanligtvis dataobjekt på många ställen, därför är deras geografiska / fysiska placering närmare användarna, vilket leder till en ökning av prestanda.

Andra viktiga aspekter av systemet:

  • Antalet lagrade bilder kan vara obegränsade, sålunda måste skalans skalbarhet övervägas ur denna synvinkel.
  • Det måste finnas en låg fördröjning för nedladdning / bildförfrågningar.
  • Om användaren laddar bilden till servern, ska dess data alltid vara holistiska och överkomliga.
  • Systemet ska vara lätt att upprätthålla (hantering).
  • Eftersom bildhosting inte medför stora vinster, bör systemet vara kostnadseffektivt.

Ett annat potentiellt problem med denna design är att webbservern, som Apache eller Lightpd, vanligtvis finns en toppgräns för antalet samtidiga anslutningar, som den är i tjänstgöringstaten (standardvärde - ca 500, men det kan vara mycket högre), och med hög trafik kan inspelningen snabbt spendera den här gränsen. Eftersom avläsningar kan vara asynkrona eller använda en annan prestationsoptimering som gzipkomprimering eller överföring med division på en del, kan en webbserver byta till matläsaren snabbare och växla mellan klienter, vilket tjänar mycket mer förfrågningar än det maximala antalet anslutningar (med Apache och Det maximala antalet anslutningar som är installerade i 500, det är ganska realistiskt att tjäna flera tusen läsförfrågningar per sekund). Inlägg, å andra sidan, tenderar att behålla en öppen anslutning under hela hämtningstiden. Så överföringen av en fil med en storlek på 1 MB till servern kan ta mer än 1 sekund i de flesta hemnätverk, som ett resultat, kommer webbservern att kunna behandla endast 500 sådana samtidiga poster.


Figur 1.2: Uppdelning av läsning och skrivning

Framsynet för ett sådant potentiellt problem indikerar behovet av att dela upp och skriva bilder till oberoende tjänster som visas av. Detta kommer inte bara att skala var och en av dem individuellt (eftersom det är troligt att vi alltid kommer att göra mer läsningar än poster), men också vara medveten om vad som händer i varje tjänst. Slutligen kommer det att skilja de problem som kan komma fram i framtiden, vilket kommer att förenkla diagnosen och utvärderingen av problemet med långsam läsning.

Fördelen med detta tillvägagångssätt är att vi kan lösa problem oberoende av varandra - medan vi inte behöver tänka på behovet av att spela in och få nya bilder i ett sammanhang. Båda dessa tjänster använder fortfarande det globala bildfallet, men när de använder metoderna för motsvarande specifika tjänst kan de optimera sin egen prestanda (till exempel placera förfrågningar till kö, eller caching populära bilder - mer om detta kommer att diskuteras ytterligare). Både från siktens synvinkel och kostnaden kan varje tjänst skalas oberoende efter behov. Och det här är en positiv faktor, eftersom deras förening och blandning kan oavsiktligt påverkas av deras prestanda, som i det ovan beskrivna skriptet.

Naturligtvis kommer arbetet med den ovannämnda modellen att vara optimala, i fallet med närvaron av två olika slutpunkter (i själva verket är det mycket lik inte flera implementeringar av leverantörer av "Cloud" -förvarings- och innehållsleveransnät). Det finns många sätt att lösa sådana problem, och i varje fall kan du hitta en kompromiss.

Till exempel löser Flickr detta läs-skrivproblem, distribuerar användarna mellan olika moduler, så att varje modul endast kan betjäna ett begränsat antal vissa användare, och när numret användare ökar, läggs fler moduler till klustret (se Flickr-skalning presentation,
http://mysqldba.blogspot.com/2008/04/mysql-uc-2007-presentation-file.html). I det första exemplet är det lättare att skala hårdvara baserat på den faktiska användningen av användningen (antalet läser och poster i hela systemet), medan flickrskalningen är baserad på användarbasen (dock används den här för att enhetlig Användning från olika användare, så kraft måste planeras från reserven). Tidigare, otillgänglighet eller ett problem med en av tjänsterna, var funktionaliteten hos ett helsystem oanvändbart (till exempel, ingen kan skriva filer), då är det otillgängligheten hos en av Flickr-modulerna endast att påverka användarna som rör den. I det första exemplet är det lättare att utföra operationer med en hel datasats - till exempel uppdatering av inspelningstjänsten för att aktivera ny metadata, eller utföra en sökning på alla metadamentbilder - medan med Flickr-arkitekturen var varje modul att uppdateras eller Sökning (eller söktjänsten ska skapas för att sortera de metadata som faktiskt är avsedda för detta).

När det gäller dessa system finns det ingen Panacea, men det bör alltid gå från de principer som beskrivs i början av detta kapitel: för att identifiera systembehov (läsning av läsning eller "skriv" eller alla omedelbart, parallellismens nivå, Begäran om dataset, intervall, sorter, etc.), utföra jämförande referensprovning av olika alternativ, förstå villkoren för det potentiella systemfel och utveckla en integrerad plan för förekomsten av misslyckande.

Redundans

För att elegant klara av vägran bör webbarkitekturen ha uppsägning av sina tjänster och data. Till exempel, i fallet med endast en kopia av filen som är lagrad på en enda server, kommer förlusten av den här servern att innebära förlust och fil. Det är osannolikt att en sådan situation kan karakteriseras positivt, och vanligtvis kan den undvikas genom att skapa flera eller säkerhetskopior.

Samma princip är tillämplig på tjänster. Från det enda nodens misslyckande kan du skydda om det är möjligt att ge en integrerad del av funktionaliteten för den ansökan som garanterar samtidig drift av sina flera kopior eller versioner.

Att skapa redundans i systemet gör att du kan bli av med svaga punkter och ge säkerhetskopiering eller överflödig funktionalitet i händelse av en onormal situation. Till exempel, i fallet med närvaron av två kopior av samma tjänst som arbetar i "produktionen", och en av dem misslyckas i ett helt eller delvis, kan systemet övervinna vägran på grund av Växla till en användbar förekomst.
Växling kan ske automatiskt eller kräver manuell ingrepp ..

En annan nyckelroll av tjänster Redundans - Skapande arkitektur tillhandahåller inte resurseparation. Med denna arkitektur kan varje nod arbeta självständigt och dessutom i avsaknad av en central "hjärna", förvaltande stater eller samordning av andra noder. Det bidrar till skalbarhet, eftersom tillägget av nya noder inte kräver särskilda villkor eller kunskaper. Och viktigast av allt, i dessa system finns det ingen kritisk sårbar vägledning, vilket gör dem mycket mer elastiska för misslyckande.

Till exempel, i vår applikationsserverapplikation, skulle alla bilder ha överflödiga kopior någonstans i en annan del av hårdvaran (idealisk - med en annan geografisk plats vid en sådan katastrof, såsom en jordbävning eller brand i datacenteret) och Bildåtkomsttjänster De kommer att vara överflödiga, trots att de alla kommer att tjäna förfrågningar. (Centimeter. .)
Ser fram emot, lastbalansering är ett bra sätt att göra det möjligt, men mer om det nedanför.


Figur 1.3: En applikationshärdningsapplikation med redundans

Segmentering

Datasatser kan vara så stora att de inte kan placeras på en server. Det kan också hända att beräkningsoperationer kräver för stora datorresurser, vilket minskar produktiviteten och gör det nödvändigt att öka kraften. I vilket fall som helst har du två alternativ: vertikal eller horisontell skalning.

Vertikal skalning innebär tillägg av mer resurser till en separat server. Så, för en mycket stor uppsättning data, skulle det innebära att man lägger till fler (eller flera) hårddiskar, och därmed kan hela dataseten placeras på samma server. När det gäller beräkningsoperationer skulle detta innebära rörelse av beräkningar till en större server med en snabbare CPU eller en stor mängd minne. I vilket fall som helst utförs den vertikala skalningen för att göra en separat resurs hos det beräkningssystem som kan användas av ytterligare databehandling.

Horisontell skalning, å andra sidan, levererar tillägget av ett större antal noder. I fallet med en stor dataset skulle detta innebära att en andra server lagrar en del av hela mängden data, och för en datorresurs skulle det innebära separation av arbete eller nedladdning genom några ytterligare noder. För att dra full nytta av den horisontella skalans potential måste den genomföras som en intern princip för utvecklingen av systemarkitekturen. Annars kan förändringen och fördelningen av det sammanhang som är nödvändigt för horisontell skalning vara problematisk.

Den vanligaste metoden för horisontell skalning är separation av tjänster för segment eller moduler. De kan distribueras på ett sådant sätt att varje logisk uppsättning funktionalitet kommer att fungera separat. Detta kan göras av geografiska gränser eller andra kriterier som betalande och inte betalande användare. Fördelen med dessa system är att de tillhandahåller ett service- eller datalager med utökad funktionalitet.

I vårt bildsexempel är det möjligt att den enda filservern som används för att lagra bilden kan ersättas med en mängd filservrar, och var och en kommer att innehålla sin egen unika uppsättning bilder. (Se.) En sådan arkitektur tillåter systemet att fylla varje filserver med bilder genom att lägga till ytterligare servrar eftersom diskutrymmet fyller. Designen kräver ett namngivningsschema som kommer att ansluta namnet på bildfilen med servern. Namnet på bilden kan bildas av en konsistenskrets av hjulet bundet till servrar. Eller alternativt kan varje bild ha en inkrementell identifierare, som tillåter leveransservice när den uppmanas att bilden endast behandlar det område som är anslutna till varje server (som ett index).


Figur 1.4: Hosting-applikation med redundans och segmentering

Naturligtvis finns det svårigheter att distribuera data eller funktionalitet till många servrar. En av de viktigaste frågorna - plats för data; I distribuerade system desto närmare data till driftsplatsen eller beräkningspunkten desto bättre är systemets prestanda. Följaktligen är fördelningen av data i flera servrar potentiellt problematisk, eftersom det när som helst när dessa data kan behövas, måste risken för att de inte kan vara på anspråk, måste servern utföra det kostsamma urvalet av nödvändig information på nätverket.

Ett annat potentiellt problem uppstår i formuläret
inkonsekvenser (icke-bestraffning). När de olika tjänsterna läser och skriver på den delade resursen, potentiellt en annan tjänst eller datalager, finns möjligheten att "tävling" -förhållandena - där vissa data anses uppdaterade till den nuvarande staten, men i verkligheten uppstår deras läsning fram till Moment av aktualisering - och i så fall är data inte unconistent. Till exempel, i bildhostingsscenariot, kan tävlingens status uppstå om en klient skickade en begäran om att uppdatera bilden av en hund med en förändring i "hund" -rubriken på "Gizmo", för tillfället när en annan klient läser bilden. I en sådan situation är det oklart vilken typ av titel, "hund" eller "gizmo" skulle tas emot av den andra klienten ..

Det finns naturligtvis några hinder som är förknippade med segmentering av data, men segmentering gör att du kan allokera var och en av problemen från andra: enligt data, på lasten, enligt proverna av användning etc. I hanterade block. Det kan hjälpa till med skalbarhet och hantering, men risken är fortfarande närvarande. Det finns många sätt att minska risken och bearbetningen av misslyckanden. Men i korthetens intresse omfattas de inte i det här kapitlet. Om du vill ha mer information om detta ämne ska du titta på bloggposten på feltolerans och övervakning.

1,3. Strukturella komponenter i snabb och skalbar dataåtkomst

Efter att ha behandlat några grundläggande principer i utvecklingen av distribuerade system, låt oss nu gå vidare till ett mer komplext moment - skalningsåtkomst till data.

De enklaste webbapplikationerna, som lampstackapplikationerna, liknar bilden på.


Figur 1.5: Enkla webbapplikationer

Med ökande applikation finns två huvudsvårigheter: skalning till applikationsservern och till databasen. I en välskalbar utformning av applikationer minimeras en webbserver eller applikationsserver vanligtvis och ofta förkroppsligar en arkitektur som inte ger en gemensam resurseparation. Detta gör nivån på systemansökningsservern horisontellt skalbar. Som ett resultat av att använda sådan design kommer hårt arbete att växla ner stacken till databasservern och dotterstjänster. Det är på detta lager att de verkliga problemen med skalning och produktivitet kommer till spel.

Resten av detta kapitel ägnas åt några av de vanligaste strategierna och metoderna för att förbättra produktiviteten och säkerställa skalbarhet av sådana typer av tjänster genom att ge snabb tillgång till data.


Figur 1.6: Förenklad webbapplikation

De flesta system kan förenklas före systemet,
Vilket är en bra utgångspunkt för att börja överväga. Om du har många data kan det antas att du vill ha samma enkel åtkomst och snabb åtkomst, som en låda med lollipops i topplådan i ditt skrivbord. Även om denna jämförelse är överdrivet förenklad, indikerar den två komplexa problem: skalbarheten hos datalager och snabb åtkomst till data.

För att överväga det här avsnittet, låt oss anta att du har en hel del Terabytes (TB) data, och du tillåter användare att få tillgång till små delar av dessa data i vilken ordning som helst. (Centimeter. .)
En liknande uppgift är att bestämma platsen för bildfilen någonstans på filservern i exemplet på bildhanteringsprogrammet.


Figur 1.7: Tillgång till specifika data

Detta är särskilt svårt eftersom laddning av terabyte av data i minnet kan vara mycket ogiltigt och direkt påverkar antalet I / O-skivoperationer. Hastigheten för läsning från skivan är flera gånger lägre än hastigheten på avläsningen från RAM - det kan sägas att tillgång till minne med samma som snabbt som Chuck Norris, medan du åtkomst till skivan är långsammare än kön i kliniken. Denna skillnad i hastighet är särskilt konkret för stora dataset; I torra siffror är åtkomst till minnet 6 gånger snabbare än att läsa från en disk för successiva läsoperationer och 100 000 gånger - för avläsningar i slumpmässig ordning (se "Patologi av stora data", http://queue.acm.org/detail . CFM? ID \u003d 1563874).). Dessutom, även med unika identifierare, löser problemet med att hitta platsen för en liten del av data, vara samma svåra uppgift som ett försök utan att se ut att dra ut det sista godiset med en chokladfyllning från lådan med hundra andra godis .

Lyckligtvis finns det många tillvägagångssätt som kan tillämpas för att förenkla, varav de fyra viktigaste metoderna är användningen av cacher, proxy, index och lastbalanser. Resten av detta avsnitt diskuterar hur vart och ett av dessa begrepp kan användas för att få tillgång till data mycket snabbare.

Kachar

Caching ger fördelar på grund av den karakteristiska egenskapen hos den grundläggande principen: Nyligen begärda uppgifter är ganska sannolikt att krävas igen. Kassor används nästan vid varje databehandling: hårdvara, operativsystem, webbläsare, webbapplikationer och inte bara. Cache är som ett kortvarigt minne: Begränsad av volym, men snabbare än källdatakällan och innehåller element som är mottagna som nyligen mottagits. Kashi kan existera på alla nivåer i arkitektur, men är ofta på närmaste nivå till framsidan, där de implementeras för att snabbt återföra data utan en betydande belastning.

Vilken väg kan cacheminnet användas för att påskynda dataåtkomst inom vårt exempel API? I det här fallet finns det flera ställen lämplig cacheplacering. Som ett av de möjliga placeringsalternativen kan du välja noder på begäranivå, som visas på
.


Figur 1.8: Placera cacheminnet på söknivån

Placeringen av cacheminnet direkt på söknivånoden möjliggör lokal lagring av svardata. Varje gång en serviceförfrågan kommer att utföras, kommer noden snabbt att returnera de lokala, cachade data, om någon existerar. Om det inte är i cacheminnet, kommer begäran noden att begära data från disken. Cachen på en förfrågan nivån kan också placeras både i minnet (vilket är mycket snabbt) och på den lokala skivan på noden (snabbare än att försöka vädja till nätverkslagringen).


Figur 1.9: System av cacher

Vad händer när du distribuerar caching på en mängd olika noder? Som du ser, om fråganivån kommer att innehålla ett flertal noder, är det troligt att varje nod också kommer att vara sin egen cache. Om din belastningsbalanter i slumpmässig ordning distribuerar förfrågningar mellan noder, kommer samma fråga att byta till olika noder, vilket ökar misslyckade överklaganden till cacheminnet. På två sätt att övervinna detta hinder är globala och distribuerade cacher.

Global Cash

Betydelsen av den globala cachen är tydlig från titeln: Alla noder använder ett enda cachesutrymme. I det här fallet tillsätts en server eller förråd av filer av något slag, vilket är snabbare än din ursprungliga lagring och, som kommer att finnas tillgänglig för alla begäran nivån. Var och en av förfrågningsnoderna begär cacheminnet på samma sätt som om det var lokalt. Denna typ av caching schema kan orsaka vissa svårigheter, eftersom den enda cachen är väldigt lätt att överbelasta om antalet kunder och önskemål kommer att öka. Samtidigt är ett sådant schema mycket effektivt vid en viss arkitektur (speciellt relaterad till specialiserad hårdvara, vilket gör det globala cacheminnet väldigt snabbt, eller som har en fast dataset, som ska cachas).

Det finns två standardformer av globala cacher som avbildas i systemen. Situationen är avbildad när det cachade svaret inte finns i cacheminnet, är cachen själv ansvarig för att erhålla den saknade delen av data från grundlagringen. Ansvaret för förfrågningsnoderna illustreras för att erhålla data som inte finns i cacheminnet.


Figur 1.10: Global cache, där cacheminnet är ansvarig för att extrahera


Figur 1.11: Global cache, där begäran noder är ansvariga för att extrahera

De flesta applikationer som förbättrar globala cacher tenderar att använda den första typen där cacheminnet själv hanterar substitutions- och provtagningsdata för att förhindra att lavin av ansökningar om samma data från kunderna. Det finns dock vissa fall där det andra genomförandet har mer mening. Till exempel, om cacheminnet används för mycket stora filer, kommer en låg andel framgångsrik omvandling till cachen att leda till en överbelastning av buffertcachen som misslyckas med cacheminnet. I den här situationen bidrar det till att ha en stor andel av en gemensam dataset (eller varm datasats) i cacheminnet. Ett annat exempel är en arkitektur där filerna som är lagrade i cacheminnet är statiska och bör inte raderas. (Detta kan uppstå på grund av de viktigaste operativa egenskaperna avseende sådan datafördröjning - kanske vissa delar av data ska vara mycket snabba för stora dataset - när applikationslogiken förstår substitutionsstrategin eller heta fläckar är bättre än cacheminnet.)

Distribuerad kontant

Dessa index lagras ofta i minnet eller någonstans mycket lokalt med hänsyn till kundens inkommande begäran. Berkeley DB (BDB) och träddatastrukturer som vanligen används för att lagra data i beställda listor är idealiska för åtkomst med ett index.

Ofta finns det många nivåer av index som fungerar som en karta genom att flytta dig från en plats till en annan, etc., tills du får den delen av de data du behöver. (Centimeter. )


Figur 1.17: Multi-Level Indexes

Index kan också användas för att skapa flera andra presentationer av samma data. För stora dataset är det här ett utmärkt sätt att identifiera olika filter och arter utan att tillgripa att skapa många ytterligare kopior av data.

Antag att det ovan angivna bildhostingssystemet faktiskt placerar bilder av boksidor, och tjänsten ger kundförfrågningar om text i dessa bilder, letar efter all textinnehåll på ett visst ämne samt sökmotorer tillåter dig att söka efter HTML Innehåll. I det här fallet använder alla dessa bokbilder många servrar för att lagra filer, och hitta en sida för att representera användaren kan vara ganska komplicerat. Ursprungligen omvända index för begäran av godtyckliga ord och uppsättningar av ord bör vara lättillgängliga. Då är det en uppgift att flytta till den exakta sidan och placera i den här boken och hämta rätt bild för sökresultat. Således skulle i detta fall det inverterade indexet visas på platsen (t.ex. B-boken), och sedan kan B innehålla ett index med alla ord, platser och antal förekomster i varje del.

Inverterat index, som kan visa index1 i kretsen ovan, kommer att se ut så här: varje ord eller uppsättning ord fungerar som ett index för de böcker som innehåller dem.

Intermediate Index kommer att se ut, men kommer bara att innehålla ord, plats och information för bok B. Detta med flera nivåer arkitektur tillåter var och en av indexen att uppta mindre utrymme än om all denna information lagrades i ett stort inverterat index.

Och det här är nyckeln i storskaliga system, eftersom även komprimeras kan dessa index vara ganska stora och kostsamma för lagring. Antag att vi har många böcker från hela världen i det här systemet - 100.000.000 (se inspelning av en blogg "inuti Google Böcker") - och att varje bok består endast på 10 sidor (för att förenkla beräkningar) med 250 ord på en sida : Denna summa ger oss 250 miljarder ord. Om vi \u200b\u200baccepterar det genomsnittliga antalet tecken i ordet för 5, och varje symbol kodar 8 bitar (eller 1 byte, trots att vissa tecken faktiskt upptar 2 byte), samtidigt som de spenderar 5 byte till ordet, då indexet som innehåller varje ord Endast en gång kommer att kräva en lagringskapacitet på mer än 1 terabyte. Således ser du att index där annan information, som orduppsättningar, platsen för data och mängden användning, kan växa i volymer mycket snabbt.

Att skapa sådana mellanliggande index och presentation av data med mindre portioner gör problemet med "Big Data" enklare i lösningen. Data kan distribueras på flera servrar och samtidigt vara snabb tillgänglig. Index är hörnstenen i informationssökningen och basen för dagens moderna sökmotorer. Naturligtvis hänför sig det här avsnittet endast ämnet för indexering, och många studier har genomförts om hur man gör index mindre, snabbare som innehåller mer information (till exempel relevans) och ohindert uppdaterat. (Det finns några problem med hanterbarhet av konkurrerande villkor, såväl som med antalet uppdateringar som krävs för att lägga till nya data eller ändringar i befintliga data, särskilt när relevans eller utvärdering) är inblandade.

Det är mycket viktigt att snabbt och enkelt hitta dina data, och index är det enklaste och mest effektiva verktyget för att uppnå detta mål.

BALANCERS LOAD

Slutligen är en annan kritisk del av ett distribuerat system en belastningsbalansering. Lastbalansering är huvuddelen av någon arkitektur, eftersom deras roll är att distribuera belastningen mellan noderna som ansvarar för serviceförfrågningar. Detta gör det möjligt för flera noder att transparent tjäna samma funktion i systemet. (Se.) Deras huvudmål är att hantera många samtidiga anslutningar och styra dessa anslutningar till en av de begärda noderna, så att systemet kan skala, helt enkelt lägga till noder för att betjäna fler frågor.


Figur 1.18: Ladda Balanger

Det finns många olika algoritmer för serviceförfrågningar, inklusive valet av en slumpmässig nod, en cyklisk algoritm eller till och med valet av en nod baserat på vissa kriterier, såsom användningen av en central processor eller RAM. Lastbalansering kan implementeras som hårdvara eller programvara. Bland lastbalanseringen på öppen källkod, fick Haproxy den mest utbredda.

I det distribuerade systemet ligger belastningsbalanser ofta på systemets "framkant", så att alla inkommande förfrågningar passerar direkt genom dem. Det är mycket troligt att i ett komplext distribuerat system måste begäran gå igenom flera balanser, som visas på
.


Figur 1.19: Flera belastningsbalansering

Som en proxy kan vissa belastningsbalansering också skicka förfrågningar på olika sätt, beroende på vilken typ av förfrågan. De är också kända som reversibla (omvända) proxies.

Datahanteringsspecifik för en specifik användarsession är ett av problemen vid användning av lastbalanser. På e-handelswebbplatsen, när du bara har en klient, är det väldigt lätt att tillåta användare att sätta saker i sin korg och upprätthålla innehållet mellan besök (det är viktigt, eftersom sannolikheten för att sälja varor ökar avsevärt om användarens Återgå till webbplatsen är produkten fortfarande placerad i korg). Om användaren är riktad till en nod för den första sessionen, och sedan till en annan nod under nästa besök, kan det finnas inkonsekvenser, eftersom den nya noden kanske inte har data om innehållet i den här användaren. (Är du inte upprörd om du placerar Mountain Dew-dryckpaketet i din vagn, och när du returnerar det, kommer det inte att vara där?) En av lösningarna kan vara att göra "klibbiga" sessioner så att användaren alltid är riktad till samma nod. Användningen av vissa tillförlitlighetsfunktioner, såsom automatisk failover, kommer emellertid att vara betydligt svårt. I det här fallet kommer användarens korg alltid att ha innehåll, men om deras klibbiga nod blir otillgänglig, kommer det att vara nödvändigt att vara ett speciellt tillvägagångssätt, och antagandet om korgens innehåll kommer inte att vara mer korrekt (men det är värt värt Hoppas att detta antagande inte kommer att byggas in i bilagan). Naturligtvis kan detta problem lösas med andra strategier och verktyg enligt beskrivningen i det här kapitlet, till exempel tjänster och många andra (som webbläsare caches, cookies and rewrite webbadresser).

Om systemet bara har några noder, är sådana tekniker som DNS-karusell sannolikt mer praktiska än att ladda balansering som kan vara dyrt och öka systemets komplexitet genom att lägga till en onödig nivå. Naturligtvis finns det i stora system alla typer av olika algoritmer för att planera och nivellera belastningen, inklusive både enkla, såsom ett slumpmässigt val eller en karusellalgoritm, och mer komplexa mekanismer som tar hänsyn till prestanda för systemets användningsmodell. Alla dessa algoritmer tillåter distribution av trafik och önskemål, och kan ge användbara tillförlitlighetsverktyg, såsom automatisk failover eller automatisk borttagning av en skadad nod (till exempel när den slutar svara på förfrågningar). Men dessa utökade funktioner kan göra diagnos av problem med skrymmande. Till exempel, i högbelastningssituationer, kommer belastningsbalanseringen att ta bort noder som kan fungera långsamt eller överträffa väntetiden (på grund av knäcktfrågor), som bara förvärrar situationen för andra noder. I dessa fall är omfattande kontroll viktig eftersom även om det verkar som om fullständig systemtrafik och belastning reduceras (som noder tjänar färre frågor) - enskilda noder kan laddas till gränsen.

Load Balancing är ett enkelt sätt att öka systemets kraft. Liksom de andra metoder som beskrivs i den här artikeln spelar den en viktig roll i det distribuerade systemets arkitektur. Lastbalansering säkerställer också den kritiska funktionen att kontrollera nodernas prestanda. Om, enligt resultaten av detta test, inte svarar eller överbelastas, den kan avlägsnas från begäran om bearbetningsbassäng och på grund av uppsägningen av ditt system kommer belastningen att omfördelas mellan de återstående arbetsnoderna.

Hittills har vi ansett många sätt att snabbt läsa data. Samtidigt är en annan viktig del av datanivåskalningen att effektivt hantera poster. När system är enkla och kännetecknas av minimala bearbetningsbelastningar och små databaser, kan inspelningen förutsägas snabbt. Men i mer komplexa system kan denna process dock upptas på obestämd tid. Så, till exempel kan data behöva spelas in på flera ställen på olika servrar eller index, eller systemet kan helt enkelt vara under hög belastning. I de fall där inspelning eller till och med bara någon uppgift upptar lång tid, kräver att produktiviteten och tillgängligheten är inbäddad av asynkronism i systemet. Ett vanligt sätt att göra detta är att organisera Query Queue.


Figur 1.20: Synkron begäran

Föreställ dig ett system där varje klient begär en fjärruppgift. Var och en av dessa kunder skickar sin begäran till servern som utför uppgifter så snabbt som möjligt och returnerar sina resultat till relevanta kunder. I små system, där en server (eller logisk tjänst) kan betjäna de inkommande kunderna så snabbt som de anländer, bör sådana situationer fungera normalt. Men när servern får mer förfrågningar än det kan bearbeta, tvingas varje klient att förvänta sig att bearbetningen av förfrågningar från andra klienter slutförts innan svaret på egen förfrågan kommer att genereras. Detta är ett exempel på en synkron begäran som visas på.

Denna typ av synkron beteende kan avsevärt förvärra klientens kapacitet. Faktum är att ståndpunkten är tvungen att förvänta sig tills han får ett svar på begäran. Att lägga till ytterligare servrar för att klara av systemets belastning, löser inte problemet. Även med effektiv belastningsnivellering är det extremt svårt att säkerställa en enhetlig och rättvis lastfördelning som krävs för att maximera produktiviteten hos klienten. Dessutom, om servern för behandling av denna begäran inte är tillgänglig (eller det har misslyckats), kommer den klient som är ansluten till den också att sluta fungera. En effektiv lösning på detta problem kräver abstraktion mellan kundens begäran och det faktiska arbetet som utförts för sin tjänst.


Figur 1.21: Använda köer för att hantera förfrågningar

Ingångsköer. Könets operationsmekanism är väldigt enkel: Uppgiften kommer, är i köen, och sedan "Arbetarna" tar följande uppgift så snart de verkar bearbeta den. (Se.) Dessa uppgifter kan vara enkla poster till databasen eller något som komplicerat som förhandsgranskningsbildgenerering för dokumentet. När kunden skickar begäran om mål i en kö, är det inte längre nödvändigt att förvänta sig resultaten av genomförandet. I stället behöver endast förfrågningar bara för att bekräfta att deras kvitto är korrekt. Denna bekräftelse kan senare tjäna som en hänvisning till resultaten när klienten hävdar dem.

Köer tillåter kunder att arbeta asynkrona sätt, vilket ger en kunds strategiska abstraktion och ett svar på det. Å andra sidan, i det synkrona systemet, finns det ingen differentiering mellan frågan och svaret, och kan därför inte hanteras separat. I det asynkroniska systemet sätter klienten uppgiften, tjänsten motsvarar meddelandet, vilket bekräftar att uppgiften erhölls, och klienten kan regelbundet kontrollera statusen för uppgiften, bara fråga resultatet så snart det slutade. Medan kunden utför en asynkronförfrågan är det fri att engagera sig i annat arbete och till och med utföra asynkrona förfrågningar om andra tjänster. Den senare är ett exempel på hur köer och meddelanden fungerar i distribuerade system.

Köer ger också ett visst skydd mot servicesuspensioner och misslyckanden. Det är till exempel ganska enkelt att skapa en mycket stabil kö som kan upprepa de serviceförfrågningar som har upphört att arbeta på grund av kortsiktiga serverfel. Det är mer föredraget att använda kön för att genomföra kvalitetssäkringsgarantierna än att visa kunderna tillfälliga avbrott i tjänsten, vilket kräver komplex och ofta motsägelsefulla felhantering på klientsidan.

1,4. Slutsats

Utvecklingen av effektiva system med snabb tillgång till en stor mängd data är ett mycket intressant ämne, och det finns fortfarande ett betydande antal bra verktyg som gör att du kan anpassa alla typer av nya applikationer. Det här kapitlet berörde bara några exempel, men i verkligheten finns det mycket mer av dem - och skapandet av nya innovationer på detta område kommer bara att fortsätta.

Detta arbete sträcker sig under det oförändrade Creative Commons Attribution 3.0-licensen. Se detaljer i

  • Överföra

Mätning av bandbredd av flaskhalsar för dubbelt passage tidspaket

I alla parametrar kan dagens internet inte flytta data så snabbt som det borde. De flesta användare av mobilkommunikation i världen har förseningar från några sekunder till några minuter: Offentliga WiFi-poäng på flygplatser och konferenser är ännu värre. Fysiker och klimatologer behöver bytas ut av petabytes data med kollegor runt om i världen, men de står inför att deras noggrant genomtänkt multi-hygrateinfrastruktur ofta utfärdar några megabit per sekund på transcontinental linjer.

Dessa problem uppstod på grund av valet av arkitektur, som gjordes när man skapade ett TCP-överbelastningsstyrsystem på 80-talet - bestämde förlusten av paket för att tolka som en "sylt". Ekvivalenden av dessa begrepp var rättvist för den tiden, men bara på grund av teknikens begränsningar och inte per definition. När NIC (nätverksgränssnittskontroller) uppgraderades från megabiterade till gigabithastigheter, och minneskretsar - med kilobyte till en gigabyte, blev förhållandet mellan förlust av paket och slag mindre uppenbara.

I modern TCP, reglering av trängsel för förlust av förpackningar - även i den mest avancerade tekniken på denna kubik - den främsta orsaken till dessa problem. Om buffertarna för flaskhalsar är för stora, håller styrsystemet för förlust av paket dem fullständiga, vilket orsakar överdriven nätverksbuffring. Om buffertarna är för små, tolkar styrsystemet för förlust av paket felaktigt förlusten av förpackningen som en signal av trängseln, vilket leder till en minskning av bandbredd. Lösningen på dessa problem kräver ett alternativ till att reglera trängsel för paket. För att hitta det här alternativet ska det sorteras om och hur trängsel inträffar.

Tryck och smal plats

När som helst i (full duplex) TCP-anslutning finns det bara en långsammare eller flaskhals I varje riktning. En flaskhals är viktig av följande skäl:
  • Den definierar den maximala dataöverföringshastigheten per anslutning. Detta är den främsta egenskapen hos en okomprimerad dataström (till exempel, föreställ dig en sexbandshastighet per timmes topp, om, på grund av en olycka, en liten del av vägen är begränsad till bara en remsa. Trafiken före trafiken Olycka kommer inte att röra sig snabbare än trafiken genom denna remsa.
  • Detta är den plats där köerna ständigt bildas. De minskar endast om intensiteten av det utgående flödet från "flaskhalsen" kommer att överstiga intensiteten hos den inkommande strömmen. För föreningar som arbetar med den maximala överföringshastigheten har alla utgående strömmar till en smal plats alltid en högre intensitet av den utgående strömmen, så att köerna rör sig till "flaskhalsen".
Oavsett hur många länkar i anslutningen och vilka hastigheter är separat, från TCP-synvinkel, finns det en komplex rutt när det gäller TCP som en enda anslutning med samma RTT (dubbelpassage av paketet, det vill säga passage tid i båda ändarna) och flaskhalsens bandbredd. Två fysiska begränsningar Rtprop (Propagationstid, dubbelgångstid) och Btlbw. (Flaskhals bandbredd, flaskhalskapacitet) påverkar överföringen. (Om nätverksvägen var ett materialrör skulle RTProp vara ett långt rör, och BTLBW är dess diameter).

I illustration 1 visar en mängd olika kombinationer av RTT och överföringshastigheter med datamängden. i flyg, Det vill säga inflight (data skickad, men utan leverans av leverans). Blå linjer visar gränsen för RTPROP, gröna linjer - Begränsa BTLBW och röda linjer - en flaskbuffert. Verksamheten i gråa områden är omöjliga eftersom de motsäger minst en begränsning. Övergångarna mellan begränsningarna ledde till bildandet av tre områden (App-Limited, Bandwidth-Limited och Buffer-Limited) med högkvalitativt beteende.

Bild 1

När i flygning inte är tillräckligt med data för att fylla röret, bestämmer RTPROP beteendet; Annars dominerar BTLBW. Begränsningslinjer skärs vid punkten, det är ett BDP-rör (bandbredd-fördröjningsprodukt, derivatbandbredd och fördröjning). Eftersom röret är fullständigt efter denna punkt skapar överskottet en kö till en smal plats, vilket leder till det linjära beroendet av RTT från inflight-data som visas på toppdiagrammet. Paket kasseras när överskott överstiger buffertens kapacitet. Trängsel - Det är bara kontinuerligt att hitta till höger om BDP-linjen, och reglering av trängsel - Ett visst system för att upprätta en gräns hur långt till höger om BDP-linjen i genomsnitt överförs data.

Reglering av trängsel av förlustverk på rätt gräns för det område som begränsas av kanalens bandbredd (Bandwidth-Limited), vilket ger den fulla bandbredden av en flaskhals på grund av stora förseningar och frekvent förlust av paket. Under dessa dagar, när minnet var vägen, var storleken på bufferten endast något överskridande BDP, som minimerade den redundanta fördröjningen i reglerna av förluster. Efterföljande minskning av minnespriserna ledde till en ökning av överdriven nätverksbuffring och RTT-tillväxt upp till sekunder istället för millisekunder.

På den vänstra kanten av området som är avgränsad av kanalbandbredden finns det en arbetsplats med de bästa förutsättningarna än höger. År 1979 visade Leonard Kleinock att denna driftspunkt är optimal, maximerar den den faktiska bandbredden med att minimera förseningar och förluster, både för enskilda föreningar och för nätverket som helhet. Tyvärr, på ungefär samma tid, visade Jeffrey Jaffa att det är omöjligt att skapa en distribuerad algoritm som konvergeras i denna driftspunkt. Denna slutsats har ändrat forskningsriktningen. I stället för att söka efter en distribuerad algoritm, som syftar till den optimala arbetsplatsen för kycklingen och forskarna började studera alternativa tillvägagångssätt för att reglera trängsel.

Vår grupp i Google spenderar timmar om lärande loggar med avlyssning av TCP-paketrubriker från hela världen, som förstår anomalier och beteendepatologi. Vanligtvis hittar vi först de viktigaste egenskaperna hos rutten, RTPROP och BTLBW. Vad som kan härledas från nätverksbrickor föreslår att slutsatsen av Jaffe inte kunde vara så otvetydig som det verkade. Dess slutsats är beroende av den grundläggande mätosäkerheten (till exempel om en uppmätt ökning av RTT orsakas av en förändring i längden på banan, en minskning av bandbredden hos en flaskhals eller en ökning av fördröjningen i köen på grund av trafik från en annan anslutning). Även om det är omöjligt att eliminera osäkerheten för varje specifik mätning, men uppförandet av anslutningen i tiden ger en tydligare bild, vilket tyder på möjligheten att tillämpa mätstrategier som skapats för att eliminera osäkerhet.

Genom att kombinera dessa mätningar med en pålitlig spårningskontur genom att tillämpa de senaste prestationerna i ledningssystemen kan du hoppas på utvecklingen av ett distribuerat protokoll för att reglera trängsel, vilket svarar på en giltig tomt och inte för att förlänga paket eller kortvarig fördröjning i kön. Och han kommer att vara högst sannolikt att konvergera i den optimala arbetsplatsen för chicken. Så, vårt treåriga projekt på utvecklingen av styrsystemet kommer att baseras på mätningen av två parametrar, som karakteriserar rutten: flaskhalsens bandbredd och tidpunkt för förpackningens dubbelpassage eller BBR.

Karakteristisk för en smal plats

Anslutningen fungerar med maximal bandbredd och minsta fördröjning när (hastighetsbalans) Ankomsthastigheten för paket till en smal plats är BTLBW och (full kanal) Den totala mängden data i flygningen är BDP ().

Det första villkoret säkerställer att en smal plats används 100%. Den andra garantierna att vi har tillräckligt med data för att förhindra en enkel flaskhals, men överflöde inte kanalen. Hastighetsbalansförhållande i sig inte Garantier Brist på kö, bara dess konstanta storlek (till exempel om anslutningen börjar med att skicka ett 10-batchinitialt fönster till en fem-park BDP, fungerar exakt med samma hastighet av en flaskhals, sedan fem av tio initiala paket kommer att fylla kanalen, och överskottet kommer att bilda en stående kö på en smal plats som inte kommer att kunna snabbt). På samma sätt garanterar hela kanalvillkoren inte bristen på en kö (till exempel, skickar anslutningen BDP-brister till BDP / 2 och använder helt en smal plats, men men den genomsnittliga köen är BDP / 4). Det enda sättet att minimera kön i en flaskhals och i hela kanalen är att uppfylla båda förhållandena samtidigt.

BTLBW- och RTPROP-värdena ändras under anslutningslivet, så de bör ständigt utvärderas. För närvarande spårar TCP RTT (tidsintervallet mellan att skicka ett datapaket till ett meddelande om dess leverans), eftersom det är nödvändigt att bestämma förlusten. Närsomhelst


Var representerar "buller" från köerna längs vägen, mottagarens strategi med förseningen i bekräftelse, ackumulering av bekräftelser etc. RTPROP är de fysiska egenskaperna hos anslutningen, och det ändras endast när man ändrar själva kanalen. Eftersom kanaländringar uppstår under en tidsskala Rtpropdå kommer en opartisk och effektiv tidsberäkning att vara
Det vill säga lanseringen i tidsfönstret (som vanligtvis är från tiotals sekunder till minuter).

Till skillnad från RTT, kräver inget i TCP-specifikationer inte implementering för att spåra bandbredd för en flaskhals, men en bra bedömning av detta kan erhållas från att spåra leveranshastigheten. När tjänsten bekräftelse på ett paket returneras till avsändaren visar den RTT-paketet och meddelar leverans av data i flygningen när paketet avgår. Den genomsnittliga fraktkostnaden mellan att skicka ett paket och mottagande bekräftelse är attityden av de data som levereras senast :. Denna hastighet bör vara mindre eller lika med bandbredd för en smal plats (mängden vid ankomst är exakt känt, så att all osäkerhet ligger i, vilket borde vara större än eller lika med det nuvarande ankomstintervallet. Därför måste inställningen vara Mindre än eller lika med den nuvarande leveranshastigheten, som i sin egen kö är begränsad ovanpå en flaskhalskapacitet). Följaktligen är det maximala leveranshastighetsfönstret en effektiv, BTLBW Ouppofficerad uppskattning:


där tidsfönstret vanligtvis är från sex till tio RTT.

TCP måste spela in sändningstiden för varje förpackning för att beräkna RTT. BBR kompletterar dessa poster med totalt levererade data, så ankomsten av varje bekräftelse rapporterar samtidigt och RTT, och resultatet av mätning av leveranshastigheten, som filtren transformeras till RTPROP och BTLBW-uppskattningar.

Observera att dessa värden är helt oberoende: RTPROP kan ändras (till exempel när du ändrar rutten), men har samma flaskhals eller BTLBW kan variera (till exempel när den trådlösa kanalbandbredden ändras) utan att ändra rutten. (Oberoende av båda fasthållningsfaktorerna är anledningen till att de borde vara kända för att associera beteendet när de skickas med leveransvägen). Eftersom RTPROP är synlig på den vänstra sidan av BDP, och BTLBW är endast på höger sida i figur 1, så följer de osäkerhetsprincipen: när en av två kan mätas är det omöjligt att andra. Det är intuitivt att detta kan förstås enligt följande: För att bestämma kapacitansen hos kanalen, måste den vara överväldigad, vilket skapar en kö som inte tillåter kanallängden. Till exempel kan en applikation med Query / Response Protocol aldrig skicka tillräckligt med data för att fylla kanalen och observationen av BTLBW. En stor dataöverföring av en stor mängd data kan spendera hela sin tid i ett område med begränsad bandbredd och får endast det enda RTPROP-provet från RTT vid det första paketet. Den inneboende principen om osäkerhet innebär att förutom uppskattningarna för återställandet av de två parametrarna på rutten måste det finnas sådana stater som övervakas samtidigt och vad som kan hittas under den nuvarande verksamhetspunkten och, som informationen Förlorar friskhet, hur man går till driftpunkten där du kan få senaste data.

Paketflödesmappning med leverans

Den huvudsakliga BBR-algoritmen består av två delar:

När vi får bekräftelse (ACK)

Varje bekräftelse ger en ny RTT och mäter den genomsnittliga leveranshastigheten, som uppdaterar RTPROP och BTLBW-värden:

FUNKTION ONACK (PACKET) RTT \u003d NU - Packet.SendTime Update_Min_Filter (RTPropFilter, RTT) Levereras + \u003d Packet.size Levered_Time \u003d Nu LEVERANSATERATE \u003d (Leverans - Packet.Delivered) / (Leverans_Time - Packet.Delivered_Time) IF (LEVERANYRATE\u003e BTLBWFILTER. Aktuellt Max ||! Packet.App_Limited) update_max_filter (btlbwfilter, lämnad) om (app_limited_until\u003e 0) app_limited_until \u003d app_limited_until - Packet.size
Om om det behövs på grund av problemet med osäkerhet, som sagt i det sista stycket: avsändare kan begränsas till ansökan, det vill säga applikationer kan sluta data för att fylla nätverket. Detta är en ganska typisk situation på grund av trafikförfrågan / svar. När det är möjligt att skicka, men ingen data skickas markerar BBR lämpliga bandbreddsprover som "begränsad av programmet", det vill säga app_limited (se pseudokodsskicka ()). Denna kod bestämmer vilka prover som inkluderar i bandbreddsmodellen, så att det speglar det är nätverksbegränsningarna, och inte gränserna för applikationen. BTLBW är en fasta övre leveranshastighetsgräns, så leveranshastigheten erhållen genom mätresultaten är stor än den nuvarande uppskattningen av BTLBW, bör innebära en påverkad BTLBW-rating, oavsett om provet var begränsat till applikationen eller ej. I annat fall kasseras proverna med begränsningen av programmet. (Figur 1 visar att i regionen med administreringsprogrammets begränsning, underskattas BTLBW-parametern). Sådana kontroller hindrar BTLBW-filter som fyller värdena på grund av vilken data sändning kan sakta ner.

När data skickas

För att relatera ankomsthastigheten för paket med avgångshastighet från en flaskhals av BBR, spårar varje datapaket. (BBR måste matcha betygsätta. Flaskhals: Det betyder att spårningen är en integrerad del av arkitekturen och den grundläggande delen av arbetet - därför pacing_rate. Det är huvudkontrollparametern. AUXILIARY-parameter cwnd_gain. Slott inflight Med en liten mängd BDP för bearbetning av typiska nätverkspatologier och mottagaren (se nedan kapitlet om fångar och utsträckt bekräftelse). Konceptuellt ser proceduren i TCP ut som följande kod. (I Linux använder sändningsdata ett effektivt massunderhållsförfarande FQ / pacing, som ger en BBR-linjär prestanda av en enda anslutning på multi-hygabit-kanaler och bearbetar tusentals anslutningar med en lägre hastighet med en liten Wericial CPU).

Funktionsskicka (paket) BDP \u003d btlbwfilter.currentmax × rtpropfilter.currentmin om (Inflight\u003e \u003d CWND_GAIN × BDP) // vänta på ACK eller retransmission Timeout Return (nu\u003e \u003d NextSendTime) Packet \u003d NextPackettosEnd () \u003d Inflight Returpaket.app_limited \u003d (app_limited_until\u003e 0) Packet.SendTime \u003d nu packet.delivered \u003d Levererat Packet.Delivered_Time \u003d Levererad_Time Ship (Packet) NEXTSEndTime \u003d nu + paket.size / (pacing_gain × btlbwfilter.currentmax) Timercallbackat (Skicka, NextSendTime)
Hållbart beteende

Hastigheten och mängden data som skickas av BBR beror bara på BTLBW och RTPROP, så att filtren kontrollerar inte bara uppskattningarna av begränsningarna på en smal plats utan också deras användning. Detta skapar en icke-standard kontrollslinga avbildad i figur 2, som visar RTT (blå), inflight (grön) och leveranshastighet (röd) för 700 millisekunder för en 10 megabit 40-millisekund. Fettgrå linje över leveranshastighet är status för BTLBW MAX-filtret. Triangulära former erhålles från den cykliska användningen av pacing_gain-koefficienten i BBR för att bestämma ökningen i BTLBW. Transmissionskoefficienten i varje del av cykeln visas i linje med de data som den påverkades. Denna koefficient fungerade på RTT tidigare när data skickades. Detta visas med horisontella oegentligheter i beskrivningen av händelsens sekvens på vänster sida.


Figur 2.

BBR minimerar förseningen, eftersom huvuddelen av tiden passerar med samma BDP i aktion. På grund av detta flyttar en flaskhals till avsändaren, så att en ökning av BTLBW blir osynlig. Följaktligen spenderar BBR periodiskt RTPROP-intervallet vid värdet av Pacing_Gain\u003e 1, vilket ökar hastigheten att skicka och volymen av de data som skickas utan att bekräfta leveransen (Inflight). Om BTLBW inte ändras, skapas kön före en smal plats, vilket ökar RTT, vilket sparar den konstanta leveransrutan. (Kö kan elimineras genom att skicka data med ett kompensationsvärdet av pacing_gain< 1 для следующего RTprop). Если BtlBw увеличивается, то скорость deliveryRate тоже увеличивается, а новое максимальное значение фильтра немедленно увеличивает базовую скорость отслеживания (pacing_rate.). Av den anledningen anpassar BRR till den nya storleken på en smal plats exponentiellt snabbt. Figur 3 visar denna effekt på en 10-megabit-40-millisekundström, vilken BTLBW plötsligt ökar till 20 Mbps efter 20 sekunder av stabil drift (i den vänstra sidan av grafen), sedan urtag upp till 10 Mbps efter ytterligare 20 sekunder av Stabil drift vid 20 Mbit / s (höger del av grafen).


Figur 3.

(I huvudsak är BBR ett enkelt exempel på MAX-PLUS-styrsystemet, ett nytt tillvägagångssätt för styrsystem baserat på icke-standard Max-PLUS-algebra. Detta tillvägagångssätt gör det möjligt att anpassa hastigheten [styrd av överföringskoefficienten max] Oavsett tillväxten av kön [kontrollerad av överföringskoefficienten genomsnitt.]. I tillämpad på vår uppgift kommer det till en enkel, ovillkorlig styrslinga, där anpassning till förändringar i fysiska begränsningar automatiskt utförs av att ändra filter som uttrycker dessa begränsningar. Det traditionella systemet skulle kräva skapandet av ett flertal styrkretsar kombinerade i en komplex finittmaskin för att uppnå ett sådant resultat).

Beteende när man startar en enda BBR-ström

Moderna implementeringar hanterar händelser som start (start), stängning (avstängning) och förlustkompensation (förluståtervinning) med hjälp av algoritmer som svarar på "händelser" med ett stort antal kodlinjer. BBR använder koden ovan (i föregående kapitel "Kartläggning av ett paketflöde med leverans"), för allting. Händelsebehandling sker genom passage genom "States" -sekvensen. "Staterna" själva definieras av ett bord med ett eller flera fasta värden för koefficienterna och exitkriterierna. Huvudtiden spenderas i Probebw-staten, som beskrivs i kapitlet "Beteende i ett stadigt tillstånd". Start och avloppsstatus används när anslutningen startas (Figur 4). För att behandla en anslutning där bandbredd ökar med 12 order, implementeras i den binära sökalgoritmen för BTLBW, där överföringskoefficienten används för en två-tidsökning i överföringshastigheten när leveranshastigheten ökar. Så här bestäms BTLBW i RTT, men skapar samtidigt en överdriven kö före. Så snart starten hittar en BTLBW, byter BBR-systemet till avloppsläget som använder de omvända startkoefficienterna för att bli av med en överdriven kö, och sedan till Probebw-tillståndet så snart inflight sänks till BDP-linjen.


Figur 4.

Figur 4 visar den första andra av 10-megabit 40-millisekundsströmmen av BBR. Vid översta diagrammet är tid och sekvens av händelser skjutna, liksom framstegen i avsändaren (grön) och mottagare (blå): volymen av överförd och mottagna data. Den röda linjen visar avsändarens indikatorer med kubikteknik under samma förhållanden. Vertikala grå linjer betyder stunder av övergång mellan BBR-stater. I det nedre diagrammet - Ändra tiden för dubbla passage av paket (RTT) av båda anslutningarna. Observera att tidsskalan för detta schema matchar ankomstbekräftelsetiden (ACK). Därför kan det tyckas att grafer verkar vara förskjutna i tid, men i själva verket motsvarar händelserna i botten de ögonblick då BBR-systemet lär sig om dessa händelser och reagerar.

Det nedre diagrammet i Figur 4 jämför BBR och CUBIC. För det första är deras beteende nästan detsamma, men BBR tömmer helt kön som bildas när anslutningen är igång, och Cubic kan inte göra det här. Hon har ingen vägmodell som skulle rapportera hur många skickade data som är överdrivna. Därför är Cubic mindre aggressivt ökande dataöverföring utan leverans av leverans, men denna tillväxt fortsätter tills flaskbufferten inte är överfix och börjar inte släppa paket, eller innan gränsen till mottagaren till den skickade data når (TCP-mottagningsfönster) ).

Figur 5 visar beteendet hos RTT i de första åtta sekunderna av anslutningen som visas i den tidigare figuren 4. CUBIC (Red) -tekniken fyller hela den överkomliga bufferten, vilket spinner mellan 70% och 100% fyll i några sekunder. Efter att ha startat BBR-anslutningen fungerar det nästan utan att skapa en kö.


Figur 5.

Beteende när flera BBR-strömmar finns på en smal plats

Figur 6 visar hur bandbredden hos flera BBR-strömmar konvergeras i en ärlig del av kanalen med en flaskhals per 100 megabit / 10 millisekunder. Titta på triangulära strukturer - statusen för Probertt-föreningar där självsynkronisering hastar den slutliga konvergensen.


Figur 6.

Cockly Changing Probebw Förstärkning (Figur 2) stimulerar större strömmar för att ge upp remsan till mindre strömmar, vilket resulterar i vilket varje flöde förstår sin ärliga tillstånd. Detta händer ganska snabbt (flera Probebw-cykler), även om orättvisor kan bibehållas om de flöden som var sent för början av strömmarna omvärderar RTPROP på grund av det faktum att strömmarna startade tidigare (tillfälligt) skapar en kö.

För att ta reda på den riktiga RTPROP, flyttas tråden från BDP-linjen med ProbertT-tillståndet: Om RTPROP-värdet inte är uppdaterat (dvs. genom att mäta den mindre RTT) i många sekunder, kommer BBR in i probert-tillståndet, vilket minskar mängden av data som skickas (inflight) till fyra paket åtminstone för ett dubbelpass och återgår sedan till föregående tillstånd. När stora strömmar ingår i Probertt-staten, täcks många paket ut ur kön, så omedelbart flera trådar ser det nya RTPROP-värdet (nytt minsta RTT). Tack vare detta återställs deras uppskattningar av RTPROP samtidigt, så att de tillsammans kommer in i Probertt-staten - och köen minskar ännu mer, vilket resulterar i ännu fler strömmar, se det nya RTPROP-värdet, och så vidare. En sådan distribuerad samordning är en nyckelfaktor samtidigt för den ärliga fördelningen av remsa och stabilitet.

BBR synkroniserar flödena runt den önskade händelsen, vilket är en tom linje på en smal plats. I motsats till ett sådant tillvägagångssätt synkroniserar regleringen av passager för förlust av paket som strömmar kring oönskade händelser, såsom periodisk tillväxt av kön och buffertöverflöde, vilket ökar fördröjningen och förlusten av paket.

Implementeringsupplevelse B4 WAN i Google

B4-nätverket i Google är ett WAN-höghastighetsnätverk (brett nätverk), byggt på vanliga billiga switchar. Förluster på dessa omkopplare med små buffertar uppstår främst på grund av oavsiktlig tillströmning av småstänk av trafik. År 2015 började Google översätta arbetstrafiken med kubik på BBR. Inga problem eller regressioner registrerades, och sedan 2016 använder alla B4 TCP-trafik BBR. Figur 7 illustrerar en orsak till vilken den gjordes: BBR-bandbredd är konsekvent 2-25 gånger högre än den för kubik. Vi har sett ännu mer förbättring, men fann att 75% av BBR-anslutningarna är begränsade till TCP-mottagningsbuffert i kärnan, vilka anställda i nätverksoperationsavdelningen medvetet installerad till ett lågt värde (8 MB) för att inte ge kubik till filen Ett nätverk av överflödig trafik utan att bekräfta leveransen (om du delar upp 8 MB per 200 ms InterContinental RTT, visar det 335 Mbps med maximalt). Manuell ökning av att ta emot buffert på en gång från USA-Europa ökade omedelbart dataöverföringshastigheten för BBR till 2 Gbps, medan Cubic var 15 Mbps - det här är en 133-faldig relativ ökning av bandbredd förutses MATIS med kollegor i vetenskaplig 1997-arbete .


Figur 7.

Figur 7 visar den relativa förbättringen i BBR jämfört med kubik; På infognings-integrerade distributionsfunktioner (kumulativa distributionsfunktioner, CDF) för bandbredd. Mätningar görs med hjälp av den aktiva avkänningsservicen, som öppnar de konstanta BBR- och kubiska anslutningarna till de fjärrdatacentraler, sänder sedan 8 MB varje minut. Probes Utforska många B4-rutter mellan Nordamerika, Europa och Asien.

Stor förbättring är en direkt följd av det faktum att BBR inte Använder paketförlust som en blockindikator. För att uppnå full bandbredd behövs befintliga metoder för reglering av paketförlusten av paket som förlustnivån är mindre än BDP-omvänd kvadrat (till exempel mindre än en förlust av 30 miljoner förpackningar för att kompensera 10 GB / s och 100 ms). Figur 8 jämför den uppmätta användbara bandbredden vid olika nivåer av paketförlust. I den kubiska algoritmen är paketförluststoleransen är den strukturella egenskapen hos algoritmen, och i BBR är det en konfigurationsparameter. Eftersom BBR-förlustnivån närmar sig den maximala Gainback-förstärkningen faller sannolikheten för att mäta leveranshastigheten hos den reala BTLBW skarpt, vilket leder till underskattning från MAX-filtret.


Figur 8.

Figur 8 jämför den användbara bandbredd BBR och kubikan i en 60-sekunders ström på en förening 100 Mbps och 100 ms med slumpmässiga förluster från 0,001% till 50%. Kubikbandbredd minskar 10 gånger med förluster på 0,1% och helt stall på mer än 1%. Den maximala bandbredden är andelen av remsan minus paketförlust (). BBR rymmer på denna nivå till en förlustnivå på 5% och nära det upp till 15%.

YouTube Edge Implementation Experience

BBR är lockad på YouTube och Google.com-videoservrar. Google leder ett litet experiment, där den lilla andelen användare av misstag överförs till BBR eller Cubic. BRB Video Playback visar en signifikant förbättring av alla uppskattningar av användarkvalitetsanvändare. Kanske eftersom BBR-beteende är mer konsekvent och förutsägbart. BBR förbättrar bara batteriets bandbredd, eftersom YouTube och så anpassar flödeshastigheten till nivån är mycket lägre än BTLBW för att minimera överdriven nätverksbuffring och återbuffring. Men även här minskar BBR den genomsnittliga Median RTT med 53% i världen och mer än 80% i utvecklingsländerna.

Figur 9 visar medianförbättringen i RTT i jämförelse med BBR och Cubic enligt statistik Mer än 200 miljoner Visa synpunkter YouTube-videor på YouTube, mätt på fem kontinenter under veckan. Mer än hälften av alla 7 miljarder mobila anslutningar i världen är anslutna till 2,5 g med en hastighet av 8 till 114 kbps, vilket upplever väl dokumenterade problem på grund av att metoderna för att reglera tacklingsförlusten av paket är lutande för överfyllningsbuffertar . En flaskhals i dessa system är vanligtvis mellan SGSN (som serverar GPRS-supportnod) och en mobilenhet. SGSN-programvaran fungerar och en vanlig PC-plattform med en riklig mängd RAM, där det ofta finns buffert megabyte mellan Internet och en mobilenhet. Figur 10 jämför den (emulerade) SGSN-fördröjningen mellan Internet och en mobilenhet för BBR och Cubic. Horisontella linjer markerar några av de allvarligaste konsekvenserna: TCP anpassar sig till långvariga RTT-förseningar med undantag för SYN-paketet, som initierar anslutningen som har en fast timeout, beroende på operativsystemet. När mobilenheten tar emot en stor datalag (till exempel från automatisk programuppdatering) via SGSN med en stor buffert, kan enheten inte installera någon anslutning på Internet, tills köen är gratis (bekräftar att SYN ACK-paketet är försenat för mer tid än fasta syntidout).


Figur 9.

Figur 10 visar medianförändringar till RTT i ett stabilt föreningsläge och beroende av buffertens storlek på en anslutning 128 Kbps och 40 ms med åtta BBR (gröna) eller kubiska (röda) strömmar. BBR håller kön i minimivärden, oavsett storleken på bufferten av flaskhalsen och antalet aktiva strömmar. Kubikströmmar fyller alltid bufferten, så förseningen ökar linjärt med en buffertstorlek.


Figur 10.

Adaptiv remsa i mobil cellulär kommunikation

Cellulära system anpassar bandbredden för varje användare delvis beroende på den sökprognos där paketkön beaktas för den här användaren. Tidiga versioner av BBR var konfigurerade på ett sådant sätt att de skulle skapa mycket små köer, varav föreningarna stannade vid låga hastigheter. Öka toppvärdet av pacing_gain för Probebw och ökande köer ledde till en minskning av de fyllda föreningarna. Detta visar möjligheten till utmärkt anpassning för vissa nätverk. Med det aktuella värdet av toppförstärkningsfaktorn är ingen nedbrytning inte manifesterad i vilket nätverk som helst, jämfört med kubik.

Kvarhållna och sträckta ACK-paket

Mobilnätverk, WiFi och bredbandsnät är ofta fördröjda och ackumulerade ACK-paket. När inflight är begränsat till en BDP leder det till störningar som minskar bandbredd. Att öka CWND_GAIN PROBEBW-koefficienten till två tillåtna att fortsätta att smidigt överföras på den förutspådda leveranshastigheten, även när ACK-paket försenades till ett värde i en RTT. Det förhindrar ganska mycket störningar.

Begränsare av den aktuella hinken

Den första utplaceringen av BBR på YouTube visade att de flesta internetleverantörer i världen snedvrider trafik med hjälp av hastighetsbegränsare på den aktuella hinkalgoritmen. Skopan är vanligtvis helt i början av anslutningen, så BBR lär BTLBW-parametern för det underliggande nätverket. Men så snart hinken töms, skickas alla paket snabbare än (mycket mindre än BTLBW) hinkfyllningshastighet. BRR kommer så småningom att känna igen den nya leveransräntan, men den cykliska förändringen i förstärkningen av Probebw leder till konstanta måttliga förluster. För att minimera förlusten av uppströmsbandet och öka applikationsfördröjningarna från dessa förluster har vi lagt till en specialbegränsare-detektor och en tydlig modell av begränsare i BBR. Vi studerar också aktivt de bästa sätten att eliminera nackdel för hastighetsbegränsare.

Konkurrens med metoder för att reglera trängsel på paketförlust

BBR kommer ner till den ärliga uppdelningen av bandbredd för en flaskhals, oavsett om det är konkurrens med andra BBR-strömmar eller med flöden som driver metoderna för att reglera trängsel genom paketförlust. Även när den sista fyller en prisvärd buffert, förskjuter Probebw fortfarande tillförlitligt uppskattningen av BTLBW till sidan av det ärliga flödet av strömmar, och Probertt anser RTPROP-värdet ganska högt för konvergensen av "OCO EU" till rättvis separation. Men omanställda routerbuffertar som överstiger vissa BDP tvingas föråldrade konkurrenter med förordning om trängsel om förlusten av förpackningar för att blåsa upp köen och fånga mer än dem är ärlig. Eliminering av detta är ett annat område av aktiv forskning.

Slutsats

Att ompröva metoderna för att reglera trängsel ger stora fördelar. I stället för att använda händelser, såsom förluster eller buffertjup, som endast svagt korrelerar med motsatsen, börjar BBR med en formell kylmodell och den tillhörande optimala driftspunkten. En irriterande slutsats om "oförmågan" att samtidigt bestämma de kritiska viktiga parametrarna för fördröjningen och bandbredden är med hjälp av observation att de kan förutsägas samtidigt. De senaste prestationerna i ledningen och teorin om uppskattningssystem tillämpas sedan för att skapa en enkel distribuerad styrkrets, som närmar sig det optimala, helt med hjälp av nätverket samtidigt som en liten kö. Googles BBR-implementering finns i Open Source Linux-kärnan och beskrivs i detalj i bilagan till den här artikeln.

BBR-teknik används på google B4-bemarker, förbättrad bandbredd jämfört med kubik. Det utvecklas också på webbservrar på Google och YouTube, vilket avsevärt minskar förseningen på alla fem kontinenter som testats hittills, och särskilt i utvecklingsländer. BBR-tekniken fungerar uteslutande på avsändarens sida och kräver inte ändringar i protokollet, på mottagaren eller på nätverket, vilket gör det möjligt att använda det gradvis. Det beror bara på RTT- och paketleveransmeddelanden, så det kan tillämpas i de flesta Internet-transportprotokoll.

Uppskattning av uppskattning

Författarna är tacksamma för Lena Kleinoku för riktning mot hur man anpassar överbelastningen ordentligt. Vi är skuldsatta till Larry-äktenskapet (Larry Brakmo) för innovativt arbete med regulatoriska system för Vegas och New Vegas, som förväntade många BBR-element, liksom för dess råd och guide till det första skedet av BBR-utvecklingen. Vi skulle också vilja tacka Eric Dukkipati, Nandita Dukkipati, Jana Ayengar (Ian Swett), Yana Svetta (Ian Swett), Noulan Fitza (M. Fitz Nowlan), David WetherAlla, Leonidas Contothanassis (Leonidas Kontotanassis), Amin Vakhdata (Amin Vahdat ) och Google BWE-utvecklingsgrupper och YouTube-infrastruktur för deras ovärderliga hjälp och support.

Bilaga - Detaljerad beskrivning

Statusmaskin för seriell avkänning

Pacing_Gain Gain Factor kontrollerar hur paketet i förhållande till BTLBW snabbt skickas, och det här är nyckeln till BBR Intelligent-funktionen. När pacing_gain, mer än enheten ökar inflight och minskar gapet mellan paketets kvitton, som flyttar anslutningen till höger i figur 1. När pacing_gain är mindre än en enhet uppstår anslutningen, anslutningen flyttas till vänster.

BBR använder pacing_gain för att implementera en enkel konsekvent avkänningsmaskin, som växlar mellan testning på en större remsa och testning för en mindre tid av paketet dual pass. (Det är inte nödvändigt att testa till en mindre remsa, eftersom den bearbetas automatiskt med BTLBW MSX-filtret: Nya dimensioner återspeglar hösten, så BTLBW kommer att justera sig så snart de sista gamla ändringarna kommer att tas bort från TIMAOUT-filtret. RTPROP MIN-filter är på samma sätt som hanterar leveransvägen).

Om flaskhalsens bandbredd ökar måste BBR skicka data snabbare för att upptäcka den. På samma sätt, om den reala tiden för paketets dubbelpassage ändras, ändras BDP, och därför måste BDP skicka data långsammare för att hålla inflight under BDP för att mäta den nya RTPROP. Därför är det enda sättet att upptäcka dessa förändringar att genomföra experiment, skicka snabbare för att kontrollera ökningen i BTLBW eller sändning långsammare för att kontrollera reduktionen av RTPROP. Frekvens, skala, varaktighet och struktur av dessa experiment varierar beroende på vad som redan är känt (lansera en anslutning eller stabilt tillstånd) och från ansökningsbeteendet som skickar data (intermittent eller permanent).

Stabilt läge

BBR-strömmar spenderar mest av sin tid i Probebw-tillståndet, probing the remsa med hjälp av metoden som heter få cyklingDet hjälper BBR-strömmar för att uppnå hög bandbredd, låg fördröjning i kön och konvergens i mässan av remsan. Använder sig av få cykling, Försöker BBR cykliskt en serie värden för vinsten. pacing_gain.. De åtta faserna av cykeln används med följande värden: 5/4, 3/4, 1, 1, 1, 1, 1, 1, 1. Varje fas går vanligtvis under den projicerade RTPROP. En sådan konstruktion medger att koefficientcykeln först undersökt kanalen till den större bandbredden med värdet pacing_gain. mer än 1,0 och dispergerades sedan någon kö formad med pacing_gain. På samma värde mindre än 1,0, och sedan flytta på kryssningshastighet med en kort kö av Rivne 1.0-koefficienter. Den genomsnittliga förstärkningsförbundet för alla faser är 1,0, eftersom Probebw tenderar att utjämna den tillgängliga bandbredden och därför att upprätthålla en hög grad av bandbredd utan att öka kön. Observera att även om cyklerna av förändringarna av koefficienten ändras pacing_gain.Men cwnd_gain. Det förblir alltid två, eftersom de fångar och utsträckta bekräftelsespaketen kan visas när som helst (se kapitlet på fångarna och utsträckta ACK-paket).

Dessutom, för att förbättra blandningen av trådar och den mässa separationen av remsan och för att minska köer, när många brbströmmar delar en flaskhals, ändrar BBR slumpmässigt faserna i Probebw-cykeln, oavsiktligt väljer den första fasen bland alla värden utom 3/4. Varför börjar inte cykeln med 3/4? Huvuduppgiften för detta koefficientvärde är att dispergera vilken kö som kan bildas under appliceringen av 5/4 koefficienten när kanalen redan är klar. När processen lämnar avlopps- eller propertstaten och går in i Probebw, saknas kön, så 3/4-koefficienten utför inte sin uppgift. Ansökan 3/4 I detta sammanhang kommer endast en negativ effekt: att fylla kanalen i denna fas vara 3/4, och inte 1. Således har början på cykeln från 3/4 endast en negativ effekt, men har inte En positiv, och eftersom ingången till statens probw inträffar i början av någon anslutning tillräckligt, använder BBR denna lilla optimering.

BBR-strömmar agerar tillsammans för att regelbundet tömma kön på en smal plats med ett tillstånd som heter Propertt. I något annat tillstånd än sannolikheten, om RTPROP-förhållandet inte är uppdaterat (till exempel, genom att mäta mindre RTT) mer än 10 sekunder, kommer BBR in i probert-tillståndet och reducerar CWND till ett mycket litet värde (fyra paket). Att spara ett så lägsta antal paket "Under flygning" minst 200 ms och för en gång av dubbelpassagen, kommer BBR ut ur ProbertT-staten och går in eller i uppstart eller i Probebw beroende på bedömningen, om kanalen har redan fyllts.

BBR är skapad för att arbeta som en majoritet (cirka 98%) i Probebw-staten, och resten av tiden - i Protert, baserat på uppsättningen kompromisser. Probertt Status fortsätter tillräckligt länge (minst 200 ms) för att tillåta strömmar med olika RTT för att ha parallella tillståndsprovert, men samtidigt fortsätter den en ganska kort tid för att begränsa prestationsminskningen på cirka två procent (200 ms / 10 sekunder). RTPROP-filterfönstret (10 sekunder) är tillräckligt liten för att snabbt justera trafiknivån eller ändra rutten, men det är ganska stort för interaktiva applikationer. Ansökningar Sådana (till exempel webbsidor, kräver fjärrprocedurer, videofragment) visar ofta de naturliga perioderna av tystnad eller liten aktivitet i cancer i det här fönstret, där flödeshastigheten är ganska låg eller ganska lång nog för att sprida kön i en smal plats. RTPROP-filtret väljer sedan selektivt dessa mätningar av RTPROP, och RTPROP uppdateras utan att behöva använda Probertt. Sålunda krävs trådar endast för att offra 2% av bandet om många strömmar fylls i markant i kanalen över hela RTPROP-fönstret.

Beteende vid uppstart

När BBR-strömmen startar, utför den sin första (och den snabbaste) sekventiella processen för avkänning / tömning av kön. Nätverksbandbredd varierar i intervallet 10 12 - från flera bitar till 100 gigabit per sekund. För att ta reda på värdet av BTLBW med en sådan gigantisk sortiment, ger BBR en binär sökning i hastighetsutrymme. Det hittar snabbt BTLBW (dubbla paketpassager), men genom att skapa en kö i 2bdp i sista etappen av sökningen. Sökningen utförs i uppstartsstaten i BBR, och tömningen av den skapade kön är i avloppsstaten.

Först ökar starten exponentiellt hastigheten för att skicka data genom att fördubbla den på varje runda. För att uppnå en sådan snabb avkänning i den mest lugna, när du börjar värdet av vinstkoefficienterna pacing_gain. och cwnd_gain. Installerad på, i ett minimivärde som låter dig dubbla hastigheten för att skicka data på varje runda. När kanalen är fylld, koefficient cwnd_gain. Begränsar storleken på kövärdet.

I början av BBR-anslutningen beräknas om kanalen är fylld med en platåsökning i BTLBW-utvärderingen. Om det konstateras att flera (tre) rundor har gått, där försök att dubbla leveranshastigheten verkligen inte ger en stor hastighetsvinst (mindre än 25%), menar det att det nådde BTLBW, så det kommer ut ur starten stat och går in i avloppsstaten. BBR väntar på tre rundor för att få övertygande bevis för att leveranshastighetsändaren inte är tillfällig effekt under påverkan av mottagningsfönstret. Att vänta på tre rundor ger tillräckligt med tid att automatiskt ställa in mottagarens sida för att öppna mottagarfönstret och att avsändaren för BBR har upptäckt behovet av att öka BTLBW: I den första omgången ökar den automatiska inställningsalgoritmen i mottagningsfönstret mottagningen fönster; I andra omgången fyller avsändaren det ökade fönstret i mottagningen; I den tredje omgången mottar avsändaren prover med en förstorad leveranshastighet. En sådan gräns på tre omgångar visade sig enligt resultaten av introduktionen på YouTube.

I avloppsstaten försöker BBR-algoritmen snabbt tömma kön som bildades i anslutningstillståndet genom att vända sig till läge pacing_gain. Med konfigurationer än de som används i uppstartsstaten. När antalet paket i flygningen motsvarar BDP-poängen betyder det att BBR uppskattar kön så helt tom, men kanalen är fortfarande fylld. Då kommer BBR ut ur avloppsstaten och går in i Probebw.

Observera att lanseringen av BBR-anslutningen och den långsamma kubikerna börjar både studera bandbredd för flaskhalsen exponentiellt, dubbla hastigheten att skicka på varje runda. Men de skiljer sig dramatiskt. För det första bestämmer BBR mer tillförlitligt den tillgängliga bandbredden, eftersom det inte stoppar sökningen i händelse av en förpackningsförlust eller (som HYSTART på CUBIC) ökar förseningen. För det andra ökar BBR smidigt sändningshastigheten, medan kubik på varje runda (även med pacing) har ett stänk av paket och sedan tystnadsperioden. Figur 4 visar antalet paket i flyg och observera RTT-tid för varje bekräftelsemeddelande vid BBR och Cubic.

Reagerar på övergångssituationer

Nätverksvägen och trafikpasset kan uppleva plötsliga dramatiska förändringar. För att smidigt och tillförlitligt anpassa sig till dem, såväl som minska paketförluster i dessa situationer, använder BBR ett antal strategier för att genomföra sin basmodell. Först anser BBR målet som den aktuella cwnd. Noggrant närmar sig botten, ökar cwnd. Varje gång inte mer än den mängd data för vilka leveransbekräftelsen kom. För det andra, med en återöverföringstid, vilket innebär att avsändaren anser alla paket i flygning, minskar BBR konservativt cwnd. Till ett paket och skickar det enda paketet (exakt som algoritmer för att reglera trängsel för förlust av förpackningar, såsom kubik). I slutändan, när avsändaren märker förlusten av paketet, men i flygningen finns det fortfarande paket, i det första steget i återhämtningsprocessen, minskar brb-förlusten tillfälligt hastigheten att skicka till nivån på den aktuella leveranshastigheten; På andra och efterföljande omgångar av återställningsförluster kontrollerar den att sändningshastigheten aldrig överstiger den aktuella leveranshastigheten på mer än två gånger. Detta minskar avsevärt övergångsförlusterna när BBR vetter mot hastighetsbegränsare eller konkurrerar med andra trådar i bufferten som är jämförbar med BDP-storleken.

Länkar

1. Abrahamsson, M. 2015. TCP ACK-undertryckning. IETF AQM Mailing Mail List;

Vänligen aktivera JavaScript för att använda enhetens omvandlare

›› Mer information från enhetens omvandlare

Hur många CFM i 1 kubikmeter / minut? Svaret är 35.314666212661.
Vi antar att du konverterar mellan kubikfot / minut Och. kubikmeter / minut.
Du kan visa mer information om varje mätenhet:
cFM eller kubikmeter / minut
Den SI-härledda enheten för volymflödeshastighet. Är kubikmeter / sekund.
1 kubikmeter / sekund är lika med 2118.8799727597 CFM, eller 60 kubikmeter / minut.
Observera att avrundningsfel kan uppstå, så kontrollera alltid resultaten.
Använd den här sidan för att lära dig hur du konverterar mellan kubikfot / minut och kubikmeter / minut.
Skriv in dina egna nummer i formuläret för att konvertera enheterna!

›› Snabbkonverteringschema över CFM till kubikmeter / minut

1 CFM till kubikmeter / minut \u003d 0,02832 Kubikmeter / minut

10 CFM till kubikmeter / minut \u003d 0,28317 kubikmeter / minut

20 CFM till kubikmeter / minut \u003d 0,56634 kubikmeter / minut

30 CFM till kubikmeter / minut \u003d 0,84951 Kubikmeter / minut

40 CFM till kubikmeter / minut \u003d 1.13267 Kubikmeter / minut

50 CFM till kubikmeter / minut \u003d 1.41584 Kubikmeter / minut

100 CFM till kubikmeter / minut \u003d 2.83168 Kubikmeter / minut

200 CFM till kubikmeter / minut \u003d 5.66337 Kubikmeter / minut

›› Vill du ha andra enheter?

›› Definition: Kubikfot / minut

Kubikfot per minut (CFM) är ett mått som används i industriell hygien och ventilationsteknik. Det beskriver flödeshastigheten hos en gas eller en luftvolym in i eller ut ur ett utrymme.

En standardmätning av luftflöde som indikerar hur många kubiska fötter av luft passerar med en stationär punkt på en minut. Ju högre antal, desto mer luft tvingas genom systemet. Den volymetriska flödeshastigheten för en vätska eller gas i kubikfot per minut. 1 CFM är lika med cirka 0,47 liter per sekund.

›› Metriska konverteringar och mer

hemsida Ger en online-konverteringsräknare för alla typer av mätenheter. Du kan hitta metriska konverteringstabeller för SI-enheter, såväl som engelska enheter, valuta och andra data. Skriv in enhetssymboler, förkortningar eller fullständiga namn för enheter av längd, område, massa, tryck och andra typer. Exempel är mm, tum, 100 kg, amerikansk fluid ounce, 6 "3", 10 sten 4, kubic cm, meter kvadrerad, gram, mol, fötter per sekund och många fler!