[{"data":1,"prerenderedAt":823},["ShallowReactive",2],{"doc:\u002Freverse-proxy\u002Ftraffic\u002Fload-balancing":3,"surround:\u002Freverse-proxy\u002Ftraffic\u002Fload-balancing":574,"navigation":585},{"id":4,"title":5,"body":6,"description":567,"extension":568,"meta":569,"navigation":179,"path":570,"seo":571,"stem":572,"__hash__":573},"docs\u002F02.reverse-proxy\u002F04.traffic\u002F01.load-balancing.md","Load balancing",{"type":7,"value":8,"toc":556},"minimark",[9,14,77,112,116,125,198,202,205,278,281,294,299,349,356,360,363,381,384,388,391,412,420,430,434,437,457,471,475,539,552],[10,11,13],"h2",{"id":12},"trzy-strategie","Trzy strategie",[15,16,17,33],"table",{},[18,19,20],"thead",{},[21,22,23,27,30],"tr",{},[24,25,26],"th",{},"Strategia",[24,28,29],{},"Jak wybiera",[24,31,32],{},"Kiedy stosować",[34,35,36,51,64],"tbody",{},[21,37,38,45,48],{},[39,40,41],"td",{},[42,43,44],"code",{},"round_robin",[39,46,47],{},"Po kolei, cyklicznie",[39,49,50],{},"Jednorodne backendy, prosty default",[21,52,53,58,61],{},[39,54,55],{},[42,56,57],{},"weighted_round_robin",[39,59,60],{},"Proporcjonalnie do wag",[39,62,63],{},"Backendy o różnej mocy",[21,65,66,71,74],{},[39,67,68],{},[42,69,70],{},"least_connections",[39,72,73],{},"Najmniej requestów w locie",[39,75,76],{},"Długie requesty, SSE, WebSockety",[78,79,84],"pre",{"className":80,"code":81,"language":82,"meta":83,"style":83},"language-yaml shiki shiki-themes github-light github-dark","load_balancing:\n  strategy: least_connections\n","yaml","",[42,85,86,99],{"__ignoreMap":83},[87,88,91,95],"span",{"class":89,"line":90},"line",1,[87,92,94],{"class":93},"s9eBZ","load_balancing",[87,96,98],{"class":97},"sVt8B",":\n",[87,100,102,105,108],{"class":89,"line":101},2,[87,103,104],{"class":93},"  strategy",[87,106,107],{"class":97},": ",[87,109,111],{"class":110},"sZZnC","least_connections\n",[10,113,115],{"id":114},"round-robin","Round Robin",[117,118,119,120,124],"p",{},"Klasyczna rotacja: backend 1 → backend 2 → backend 1… Wybór jest lock-free (atomics), więc narzut przy równoległych requestach jest minimalny — ",[121,122,123],"strong",{},"47 ns\u002Fop, 0 alokacji"," w benchmarku równoległym.",[78,126,128],{"className":80,"code":127,"language":82,"meta":83,"style":83},"backends:\n  - url: http:\u002F\u002F10.0.0.1:8080\n  - url: http:\u002F\u002F10.0.0.2:8080\n  - url: http:\u002F\u002F10.0.0.3:8080\n\nload_balancing:\n  strategy: round_robin\n",[42,129,130,137,150,162,174,181,188],{"__ignoreMap":83},[87,131,132,135],{"class":89,"line":90},[87,133,134],{"class":93},"backends",[87,136,98],{"class":97},[87,138,139,142,145,147],{"class":89,"line":101},[87,140,141],{"class":97},"  - ",[87,143,144],{"class":93},"url",[87,146,107],{"class":97},[87,148,149],{"class":110},"http:\u002F\u002F10.0.0.1:8080\n",[87,151,153,155,157,159],{"class":89,"line":152},3,[87,154,141],{"class":97},[87,156,144],{"class":93},[87,158,107],{"class":97},[87,160,161],{"class":110},"http:\u002F\u002F10.0.0.2:8080\n",[87,163,165,167,169,171],{"class":89,"line":164},4,[87,166,141],{"class":97},[87,168,144],{"class":93},[87,170,107],{"class":97},[87,172,173],{"class":110},"http:\u002F\u002F10.0.0.3:8080\n",[87,175,177],{"class":89,"line":176},5,[87,178,180],{"emptyLinePlaceholder":179},true,"\n",[87,182,184,186],{"class":89,"line":183},6,[87,185,94],{"class":93},[87,187,98],{"class":97},[87,189,191,193,195],{"class":89,"line":190},7,[87,192,104],{"class":93},[87,194,107],{"class":97},[87,196,197],{"class":110},"round_robin\n",[10,199,201],{"id":200},"weighted-round-robin","Weighted Round Robin",[117,203,204],{},"Każdy backend dostaje wagę 1–100. Ruch dzieli się proporcjonalnie:",[78,206,208],{"className":80,"code":207,"language":82,"meta":83,"style":83},"backends:\n  - url: http:\u002F\u002Fbig-server:8080\n    weight: 3\n  - url: http:\u002F\u002Fsmall-server:8080\n    weight: 1\n\nload_balancing:\n  strategy: weighted_round_robin\n",[42,209,210,216,227,238,249,258,262,268],{"__ignoreMap":83},[87,211,212,214],{"class":89,"line":90},[87,213,134],{"class":93},[87,215,98],{"class":97},[87,217,218,220,222,224],{"class":89,"line":101},[87,219,141],{"class":97},[87,221,144],{"class":93},[87,223,107],{"class":97},[87,225,226],{"class":110},"http:\u002F\u002Fbig-server:8080\n",[87,228,229,232,234],{"class":89,"line":152},[87,230,231],{"class":93},"    weight",[87,233,107],{"class":97},[87,235,237],{"class":236},"sj4cs","3\n",[87,239,240,242,244,246],{"class":89,"line":164},[87,241,141],{"class":97},[87,243,144],{"class":93},[87,245,107],{"class":97},[87,247,248],{"class":110},"http:\u002F\u002Fsmall-server:8080\n",[87,250,251,253,255],{"class":89,"line":176},[87,252,231],{"class":93},[87,254,107],{"class":97},[87,256,257],{"class":236},"1\n",[87,259,260],{"class":89,"line":183},[87,261,180],{"emptyLinePlaceholder":179},[87,263,264,266],{"class":89,"line":190},[87,265,94],{"class":93},[87,267,98],{"class":97},[87,269,271,273,275],{"class":89,"line":270},8,[87,272,104],{"class":93},[87,274,107],{"class":97},[87,276,277],{"class":110},"weighted_round_robin\n",[117,279,280],{},"Przy wagach 3:1 duży serwer dostaje ~75% ruchu. Przydatne przy:",[282,283,284,288,291],"ul",{},[285,286,287],"li",{},"migracji ruchu na nowy klaster (stopniowe zwiększanie wagi),",[285,289,290],{},"backendach o różnej mocy (CPU\u002FRAM),",[285,292,293],{},"canary release (waga 1 dla nowej wersji).",[295,296,298],"h3",{"id":297},"przykład-canary-release","Przykład: canary release",[78,300,302],{"className":80,"code":301,"language":82,"meta":83,"style":83},"backends:\n  - url: http:\u002F\u002Fstable:8080\n    weight: 9\n  - url: http:\u002F\u002Fcanary:8080\n    weight: 1\n",[42,303,304,310,321,330,341],{"__ignoreMap":83},[87,305,306,308],{"class":89,"line":90},[87,307,134],{"class":93},[87,309,98],{"class":97},[87,311,312,314,316,318],{"class":89,"line":101},[87,313,141],{"class":97},[87,315,144],{"class":93},[87,317,107],{"class":97},[87,319,320],{"class":110},"http:\u002F\u002Fstable:8080\n",[87,322,323,325,327],{"class":89,"line":152},[87,324,231],{"class":93},[87,326,107],{"class":97},[87,328,329],{"class":236},"9\n",[87,331,332,334,336,338],{"class":89,"line":164},[87,333,141],{"class":97},[87,335,144],{"class":93},[87,337,107],{"class":97},[87,339,340],{"class":110},"http:\u002F\u002Fcanary:8080\n",[87,342,343,345,347],{"class":89,"line":176},[87,344,231],{"class":93},[87,346,107],{"class":97},[87,348,257],{"class":236},[117,350,351,352,355],{},"10% ruchu trafia do canary. Obserwujesz ",[42,353,354],{},"backend_errors_total{backend=\"http:\u002F\u002Fcanary:8080\"}"," i zwiększasz wagę albo wycofujesz.",[10,357,359],{"id":358},"least-connections","Least Connections",[117,361,362],{},"Wybiera backend z najmniejszą liczbą requestów w locie (per-backend connection tracking):",[78,364,365],{"className":80,"code":81,"language":82,"meta":83,"style":83},[42,366,367,373],{"__ignoreMap":83},[87,368,369,371],{"class":89,"line":90},[87,370,94],{"class":93},[87,372,98],{"class":97},[87,374,375,377,379],{"class":89,"line":101},[87,376,104],{"class":93},[87,378,107],{"class":97},[87,380,111],{"class":110},[117,382,383],{},"Najlepsza dla requestów o zmiennym czasie trwania — długie połączenia nie blokują rotacji, bo nowe requesty omijają zajęte backendy.",[10,385,387],{"id":386},"failover","Failover",[117,389,390],{},"Niezależnie od strategii, picker wybiera tylko backendy, które są:",[392,393,394,400,406],"ol",{},[285,395,396,399],{},[121,397,398],{},"healthy"," — przeszły health checks,",[285,401,402,405],{},[121,403,404],{},"admin-up"," — nie wyłączone przez Admin API,",[285,407,408,411],{},[121,409,410],{},"closed\u002Fhalf-open"," — circuit breaker nie jest open.",[78,413,418],{"className":414,"code":416,"language":417,"meta":83},[415],"language-text","request → picker → healthy & available backend\n                 ↘ brak → 503 service_unavailable\n","text",[42,419,416],{"__ignoreMap":83},[421,422,424],"callout",{"type":423},"info",[117,425,426,427,429],{},"Stan backendu jest thread-safe przez lock-free atomics, a liczniki in-flight są per backend. Dzięki temu ",[42,428,70],{}," nie potrzebuje globalnego locka.",[10,431,433],{"id":432},"nagłówki-forwarded","Nagłówki forwarded",[117,435,436],{},"Do upstreamu trafiają:",[282,438,439,445,451],{},[285,440,441,444],{},[42,442,443],{},"X-Forwarded-For"," — IP klienta (z uwzględnieniem trusted proxies),",[285,446,447,450],{},[42,448,449],{},"X-Forwarded-Host"," — oryginalny host,",[285,452,453,456],{},[42,454,455],{},"X-Forwarded-Proto"," — oryginalny protokół.",[117,458,459,460,463,464,463,467,470],{},"Hop-by-hop headers (",[42,461,462],{},"Connection",", ",[42,465,466],{},"Keep-Alive",[42,468,469],{},"Transfer-Encoding","…) są stripowane zgodnie z RFC.",[10,472,474],{"id":473},"benchmark-pickerów","Benchmark pickerów",[15,476,477,493],{},[18,478,479],{},[21,480,481,484,487,490],{},[24,482,483],{},"Benchmark",[24,485,486],{},"ns\u002Fop",[24,488,489],{},"B\u002Fop",[24,491,492],{},"allocs\u002Fop",[34,494,495,511,525],{},[21,496,497,503,506,509],{},[39,498,499,502],{},[42,500,501],{},"RoundRobinNext"," (parallel)",[39,504,505],{},"47",[39,507,508],{},"0",[39,510,508],{},[21,512,513,518,521,523],{},[39,514,515,502],{},[42,516,517],{},"WeightedRoundRobinNext",[39,519,520],{},"52",[39,522,508],{},[39,524,508],{},[21,526,527,532,535,537],{},[39,528,529,502],{},[42,530,531],{},"LeastConnectionsNext",[39,533,534],{},"85",[39,536,508],{},[39,538,508],{},[117,540,541,542,545,546,551],{},"Wszystkie ścieżki wyboru są ",[121,543,544],{},"allocation-free",". Szczegóły: ",[547,548,550],"a",{"href":549},"\u002Freverse-proxy\u002Foperations\u002Fbenchmarks","Benchmarki",".",[553,554,555],"style",{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":83,"searchDepth":152,"depth":152,"links":557},[558,559,560,563,564,565,566],{"id":12,"depth":101,"text":13},{"id":114,"depth":101,"text":115},{"id":200,"depth":101,"text":201,"children":561},[562],{"id":297,"depth":152,"text":298},{"id":358,"depth":101,"text":359},{"id":386,"depth":101,"text":387},{"id":432,"depth":101,"text":433},{"id":473,"depth":101,"text":474},"Round Robin, Weighted Round Robin i Least Connections — jak działają, kiedy którą wybrać i jak wygląda failover.","md",{},"\u002Freverse-proxy\u002Ftraffic\u002Fload-balancing",{"title":5,"description":567},"02.reverse-proxy\u002F04.traffic\u002F01.load-balancing","_Ta2WM8ko85ELrYbuHUhTTHdyGbR2l3HofdTPa-E5NU",[575,580],{"title":576,"path":577,"stem":578,"description":579,"children":-1},"Konfiguracja","\u002Freverse-proxy\u002Fconfiguration","02.reverse-proxy\u002F03.configuration","Pełna referencja config.yaml — backendy, load balancing, health checks, rate limit, timeouty, retry, circuit breaker, TLS, logi i Redis.",{"title":581,"path":582,"stem":583,"description":584,"children":-1},"Health checks","\u002Freverse-proxy\u002Ftraffic\u002Fhealth-checks","02.reverse-proxy\u002F04.traffic\u002F02.health-checks","Aktywne sondowanie backendów z progami healthy\u002Funhealthy, timeoutami i natychmiastowym failoverem. Konfiguracja i metryki.",[586,705,756],{"title":587,"path":588,"stem":589,"children":590},"2D Game Engine","\u002Fgame-engine","01.game-engine\u002F01.index",[591,593,597,600,604,630,659,672,693,697,701],{"title":592,"path":588,"stem":589},"Przegląd",{"title":594,"path":595,"stem":596},"Szybki start","\u002Fgame-engine\u002Fgetting-started","01.game-engine\u002F02.getting-started",{"title":576,"path":598,"stem":599},"\u002Fgame-engine\u002Fconfiguration","01.game-engine\u002F03.configuration",{"title":601,"path":602,"stem":603},"Architektura","\u002Fgame-engine\u002Farchitecture","01.game-engine\u002F04.architecture",{"title":605,"path":606,"stem":607,"children":608,"page":629},"Rdzeń","\u002Fgame-engine\u002Fcore","01.game-engine\u002F05.core",[609,613,617,621,625],{"title":610,"path":611,"stem":612},"Silnik i cykl życia","\u002Fgame-engine\u002Fcore\u002Fengine","01.game-engine\u002F05.core\u002F01.engine",{"title":614,"path":615,"stem":616},"Czas i pętla gry","\u002Fgame-engine\u002Fcore\u002Ftime","01.game-engine\u002F05.core\u002F02.time",{"title":618,"path":619,"stem":620},"Sceny","\u002Fgame-engine\u002Fcore\u002Fscenes","01.game-engine\u002F05.core\u002F03.scenes",{"title":622,"path":623,"stem":624},"Obiekty i komponenty","\u002Fgame-engine\u002Fcore\u002Fobjects","01.game-engine\u002F05.core\u002F04.objects",{"title":626,"path":627,"stem":628},"Zdarzenia i harmonogram","\u002Fgame-engine\u002Fcore\u002Fevents","01.game-engine\u002F05.core\u002F05.events",false,{"title":631,"path":632,"stem":633,"children":634,"page":629},"Systemy","\u002Fgame-engine\u002Fsystems","01.game-engine\u002F06.systems",[635,639,643,647,651,655],{"title":636,"path":637,"stem":638},"Zasoby (AssetManager)","\u002Fgame-engine\u002Fsystems\u002Fassets","01.game-engine\u002F06.systems\u002F01.assets",{"title":640,"path":641,"stem":642},"Wejście (InputManager)","\u002Fgame-engine\u002Fsystems\u002Finput","01.game-engine\u002F06.systems\u002F02.input",{"title":644,"path":645,"stem":646},"Fizyka (PhysicsManager)","\u002Fgame-engine\u002Fsystems\u002Fphysics","01.game-engine\u002F06.systems\u002F03.physics",{"title":648,"path":649,"stem":650},"Kamera (CameraManager)","\u002Fgame-engine\u002Fsystems\u002Fcamera","01.game-engine\u002F06.systems\u002F04.camera",{"title":652,"path":653,"stem":654},"Audio (AudioManager)","\u002Fgame-engine\u002Fsystems\u002Faudio","01.game-engine\u002F06.systems\u002F05.audio",{"title":656,"path":657,"stem":658},"Tweeny i easing","\u002Fgame-engine\u002Fsystems\u002Ftweens","01.game-engine\u002F06.systems\u002F06.tweens",{"title":660,"path":661,"stem":662,"children":663,"page":629},"Dane i zapisy","\u002Fgame-engine\u002Fdata","01.game-engine\u002F07.data",[664,668],{"title":665,"path":666,"stem":667},"Format projektu","\u002Fgame-engine\u002Fdata\u002Fproject-format","01.game-engine\u002F07.data\u002F01.project-format",{"title":669,"path":670,"stem":671},"Zapisy gry","\u002Fgame-engine\u002Fdata\u002Fsaves","01.game-engine\u002F07.data\u002F02.saves",{"title":673,"path":674,"stem":675,"children":676,"page":629},"Zaawansowane","\u002Fgame-engine\u002Fadvanced","01.game-engine\u002F08.advanced",[677,681,685,689],{"title":678,"path":679,"stem":680},"Pluginy","\u002Fgame-engine\u002Fadvanced\u002Fplugins","01.game-engine\u002F08.advanced\u002F01.plugins",{"title":682,"path":683,"stem":684},"WebAssembly","\u002Fgame-engine\u002Fadvanced\u002Fwasm","01.game-engine\u002F08.advanced\u002F02.wasm",{"title":686,"path":687,"stem":688},"Debugowanie","\u002Fgame-engine\u002Fadvanced\u002Fdebugging","01.game-engine\u002F08.advanced\u002F03.debugging",{"title":690,"path":691,"stem":692},"Wydajność i benchmarki","\u002Fgame-engine\u002Fadvanced\u002Fperformance","01.game-engine\u002F08.advanced\u002F04.performance",{"title":694,"path":695,"stem":696},"Wdrożenie","\u002Fgame-engine\u002Fdeployment","01.game-engine\u002F09.deployment",{"title":698,"path":699,"stem":700},"Przykłady","\u002Fgame-engine\u002Fexamples","01.game-engine\u002F10.examples",{"title":702,"path":703,"stem":704},"Decyzje architektoniczne","\u002Fgame-engine\u002Fadr","01.game-engine\u002F11.adr",{"title":706,"path":707,"stem":708,"children":709},"Reverse Proxy","\u002Freverse-proxy","02.reverse-proxy\u002F01.index",[710,711,714,715,730],{"title":592,"path":707,"stem":708},{"title":594,"path":712,"stem":713},"\u002Freverse-proxy\u002Fgetting-started","02.reverse-proxy\u002F02.getting-started",{"title":576,"path":577,"stem":578},{"title":716,"path":717,"stem":718,"children":719,"page":629},"Ruch i odporność","\u002Freverse-proxy\u002Ftraffic","02.reverse-proxy\u002F04.traffic",[720,721,722,726],{"title":5,"path":570,"stem":572},{"title":581,"path":582,"stem":583},{"title":723,"path":724,"stem":725},"Circuit breaker i retry","\u002Freverse-proxy\u002Ftraffic\u002Fresilience","02.reverse-proxy\u002F04.traffic\u002F03.resilience",{"title":727,"path":728,"stem":729},"Rate limiting","\u002Freverse-proxy\u002Ftraffic\u002Frate-limiting","02.reverse-proxy\u002F04.traffic\u002F04.rate-limiting",{"title":731,"path":732,"stem":733,"children":734,"page":629},"Operacje i wdrożenie","\u002Freverse-proxy\u002Foperations","02.reverse-proxy\u002F05.operations",[735,739,743,747,750,752],{"title":736,"path":737,"stem":738},"Admin API","\u002Freverse-proxy\u002Foperations\u002Fadmin-api","02.reverse-proxy\u002F05.operations\u002F01.admin-api",{"title":740,"path":741,"stem":742},"Metryki i monitoring","\u002Freverse-proxy\u002Foperations\u002Fobservability","02.reverse-proxy\u002F05.operations\u002F02.observability",{"title":744,"path":745,"stem":746},"Bezpieczeństwo","\u002Freverse-proxy\u002Foperations\u002Fsecurity","02.reverse-proxy\u002F05.operations\u002F03.security",{"title":694,"path":748,"stem":749},"\u002Freverse-proxy\u002Foperations\u002Fdeployment","02.reverse-proxy\u002F05.operations\u002F04.deployment",{"title":550,"path":549,"stem":751},"02.reverse-proxy\u002F05.operations\u002F05.benchmarks",{"title":753,"path":754,"stem":755},"Troubleshooting","\u002Freverse-proxy\u002Foperations\u002Ftroubleshooting","02.reverse-proxy\u002F05.operations\u002F06.troubleshooting",{"title":757,"path":758,"stem":759,"children":760},"Vector Engine","\u002Fvector-engine","03.vector-engine\u002F01.index",[761,762,765,786,799,819],{"title":592,"path":758,"stem":759},{"title":594,"path":763,"stem":764},"\u002Fvector-engine\u002Fgetting-started","03.vector-engine\u002F02.getting-started",{"title":766,"path":767,"stem":768,"children":769,"page":629},"Scena","\u002Fvector-engine\u002Fscene","03.vector-engine\u002F03.scene",[770,774,778,782],{"title":771,"path":772,"stem":773},"Format sceny 1.0","\u002Fvector-engine\u002Fscene\u002Fscene-format","03.vector-engine\u002F03.scene\u002F01.scene-format",{"title":775,"path":776,"stem":777},"Obiekty sceny","\u002Fvector-engine\u002Fscene\u002Fobjects","03.vector-engine\u002F03.scene\u002F02.objects",{"title":779,"path":780,"stem":781},"Gradienty i warstwy","\u002Fvector-engine\u002Fscene\u002Fgradients-layers","03.vector-engine\u002F03.scene\u002F03.gradients-layers",{"title":783,"path":784,"stem":785},"Przykłady scen","\u002Fvector-engine\u002Fscene\u002Fexamples","03.vector-engine\u002F03.scene\u002F04.examples",{"title":787,"path":788,"stem":789,"children":790,"page":629},"Eksport","\u002Fvector-engine\u002Fexport","03.vector-engine\u002F04.export",[791,795],{"title":792,"path":793,"stem":794},"Formaty eksportu","\u002Fvector-engine\u002Fexport\u002Fexport-formats","03.vector-engine\u002F04.export\u002F01.export-formats",{"title":796,"path":797,"stem":798},"Proces eksportu","\u002Fvector-engine\u002Fexport\u002Fexport-workflow","03.vector-engine\u002F04.export\u002F02.export-workflow",{"title":800,"path":801,"stem":802,"children":803,"page":629},"Wnętrze silnika","\u002Fvector-engine\u002Finternals","03.vector-engine\u002F05.internals",[804,807,811,815],{"title":601,"path":805,"stem":806},"\u002Fvector-engine\u002Finternals\u002Farchitecture","03.vector-engine\u002F05.internals\u002F01.architecture",{"title":808,"path":809,"stem":810},"WebAssembly i workery","\u002Fvector-engine\u002Finternals\u002Fwasm","03.vector-engine\u002F05.internals\u002F02.wasm",{"title":812,"path":813,"stem":814},"Workspace i panele","\u002Fvector-engine\u002Finternals\u002Fworkspace","03.vector-engine\u002F05.internals\u002F03.workspace",{"title":816,"path":817,"stem":818},"Breakpointy","\u002Fvector-engine\u002Finternals\u002Fbreakpoints","03.vector-engine\u002F05.internals\u002F04.breakpoints",{"title":820,"path":821,"stem":822},"Wdrożenie na Vercel","\u002Fvector-engine\u002Fdeployment","03.vector-engine\u002F06.deployment",1793986308358]