შეუქცევადი დეტალები cfm. BBR სისტემა: შეშუპების კონტროლი პირდაპირ შეშუპებაზე

    იხილეთ ტრაბახი ... რუსული სინონიმების ლექსიკონი და მსგავსი გამონათქვამები. ქვეშ. რედ. ნ. აბრამოვა, მ.: რუსული ლექსიკონები, 1999. boast boast, boast რუსული სინონიმების ლექსიკონი ... სინონიმი ლექსიკონი

    საამაყოა, მე ვარ, მე ვარ; გადაუმოწმებელი. (სასაუბრო). ტრაბახი, ტრაბახი. P. ახალი ტანსაცმელი. ოჟეგოვის განმარტებითი ლექსიკონი. ს.ი. ოჟეგოვი, N.Yu. შვედოვა. 1949 1992 ... ოჟეგოვის განმარტებითი ლექსიკონი

    ნესოვი. სასაუბრო 1. გამოხატეთ საკუთარი თავის შესახებ ან ვინმეს შესახებ, რამეზე ან საკუთარ თავზე დიდებით; ტრაბახობს 2. ამაყი დაპირება რაიმეს გაკეთებას. ეფრემოვას განმარტებითი ლექსიკონი. ტ.ფ ეფრემოვა. 2000 წელი ... ეფრემოვას მიერ რუსული ენის თანამედროვე განმარტებითი ლექსიკონი

    ტრაბახობს, ტრაბახობს, ტრაბახობს, ტრაბახობს, თავს იწონებს, ტრაბახობს, ტრაბახობს, ტრაბახობს, ტრაბახობს, ტრაბახობს, ტრაბახობს, ტრაბახობს, ტრაბახობს, ტრაბახობს, ტრაბახობს, თავს იწონებს, ტრაბახობს, ტრაბახობს, ტრაბახობს, ტრაბახობს, ...

    ტრაბახობს - დიდება, ვამბობ, ვამბობ ... რუსული ორთოგრაფიული ლექსიკონი

    ტრაბახობს - (მე), დიდება / იუს, ლა / ჭამა, ლა / არის ... რუსული ენის ორთოგრაფიული ლექსიკონი

    იხილეთ ტრაბახი ... ენციკლოპედიური ლექსიკონი

    ტრაბახობს - იხ. ტრაბახი; i / yus, i / ჭამა; ნსვ; სასაუბრო შეაქეთ ერთმანეთი. შეაქეთ / შეაქეთ თქვენი ძალა ... მრავალი გამოთქმის ლექსიკონი

    ტრაბახობს - for / დიდება / I / be / sya ... მორფემიული და ორთოგრაფიული ლექსიკონი

    ჯიში (ნათესავი), რომ დაიკვეხნოს, რომ დაიკვეხნოს თავისი კეთილშობილი წარმოშობით. ჩვენი ჯიში ემსახურებოდა მეფეებს. ოთხ ჩვენ მასთან ერთად ვცხოვრობთ, მხოლოდ ჩხუბი გვაქვს, დიახ, ჩვენ ვამაყობთ ჩვენი ნათესავებით. კოლცოვი. ყველას თავისი ნიჭი აქვს. იხილეთ რუსები ნათესავების გარეშე არ ცხოვრობენ. იხილეთ მუწუკზე ... ... მიქელსონის დიდი განმარტებითი ფრაზეოლოგიური ლექსიკონი

წიგნები

  • საერთო მცდარი წარმოდგენების მეორე წიგნი, ჯონ ლოიდი, ჯონ მიჩინსონი. 2006 წელს ინგლისში გამოქვეყნდა პირველი მცდარი წარმოდგენების პირველი წიგნი. ამის შემდეგ, 30 ქვეყანაში, იგი გახდა ცნობარი მათთვის, ვინც ჭეშმარიტებას ითხოვს. ალბათ თქვენ შეისწავლეთ ეს ...
  • ლექსები წიგნიდან "მწვანე მიწა", ევგენი კლიუევი. დღევანდელ ლიტერატურაში ევგენი კლიუევის სახელის გამოჩენა მაგონებს ზღაპარს მებაღის შესახებ. მშრომელი და მარტოხელა ოსტატი მრავალი წლის განმავლობაში ამუშავებდა თავის უცნაურ ბაღს: დაუღალავი ყვავილები, მყიფე ...

ულტრაიისფერი საკემპინგო იარაღები უფრო და უფრო რთულდება. ეს ტენდენცია განსაკუთრებით აშკარაა ინდივიდუალური თავშესაფრების მუდმივად განვითარებად კატეგორიაში, უფრო ცნობილი როგორც ბივის ჩანთები ("ბივი").

თუ თქვენ უკვე არ იცით ბივაკის ვარიანტების მრავალფეროვნება, დროა გამოასწოროთ ის. თქვენ გაოცდებით მრავალფეროვანი არჩევანისა და ჭკვიანი დიზაინისგან, რომლებიც ხელმისაწვდომია დამოუკიდებელი მოგზაურისთვის, რომელიც ცდილობს შეამციროს მათი სიჩქარის წონა.

ვინ იყენებს ბივის ჩანთებს? Ხალხი რომელიც:

  • ხშირად მარტო მოგზაურობა;
  • გააკეთეთ დიდი კედლის აღმართები, რომელთა დასრულებას ერთ დღეზე მეტი დრო სჭირდება;
  • ისინი ხშირად დიდხანს ლაშქრობენ ველოსიპედებით;
  • დაითვალეთ გადატანილი დატვირთვის თითოეული გრამი;
  • არ იდარდო მჭიდრო სივრცეში დაძინება.

Საფუძვლები

Bivouac ჩანთები გამოიგონეს ალპინისტების საჭიროებების დასაკმაყოფილებლად, რომელთაც სჭირდებოდათ საძილე ტომრების დაცვა ელემენტებისგან რამდენიმე დღის განმავლობაში, განსაკუთრებით დიდ კედლებზე.

ადრეული ბივის ჩანთები სხვა არაფერი იყო თუ არა წყალგაუმტარი ნეილონის საძილე ტომარის საფარი, რომელიც კარგად ასრულებდა საძილე ტომარის დაცვას წვიმისგან და უღიმღამო ვენტილაციით.

დღეს ბივაკის ჩანთების მშენებლობა მოიცავს ქსოვილის ორ ფენას. ქვედა იარუსი ჩვეულებრივ შედგება ძლიერი ნეილონის წარმოებულისაგან (ტიპიურად ტაფტა, ზოგჯერ ოქსფორდი), რომელიც დაფარულია ურეთანით, რათა ის წყალგაუმტარი გახდეს. იგივე მასალა გამოიყენება მწარმოებლების უმეტესობის მიერ კარვების იატაკის წარმოებაში.

ზედა იარუსი ჩვეულებრივ მზადდება ripstop ნეილონისგან (მსუბუქი ქსოვილი) და დასრულებულია წყალგაუმტარი / სუნთქვის ლამინატით, როგორიცაა Gore-Tex®, Tegraltex ან REI Elements®.

დროთა განმავლობაში, თავდაპირველმა ბივაკმა წარმოშვა დაკავშირებული პროდუქტი, კარვის მსგავსი მახასიათებლებით - ბივის თავშესაფარი ( ბივის თავშესაფარი) ოდნავ უფრო მძიმეა, ამ ტიპის თავშესაფარს აქვს ორი თვისება, რომლებიც ტრადიციულ ბივისში არ გვხვდება - დაცული საცავის გაფართოებული არეალი და ცუდი ამინდისა და მწერებისგან სრული დაცვა. ამ მახასიათებლების წყალობით, ამ ტიპის თავშესაფრის პოპულარობა იზრდება მომხმარებლებში, რომლებსაც ლაშქრობა უყვართ, განსაკუთრებით მათ, ვინც მსუბუქად მოგზაურობენ (მსუბუქი ფეხით მოსიარულეები).

გარდა ამისა, აქ არის ბივის მსგავსი ორმაგი შრის კარვების კატეგორია. ამ კარვების საშუალო წონა (დაახლოებით 1,8 კგ) მეტია ვიდრე სტანდარტული ბივილოს წონა (900 გრ და ნაკლები), მაგრამ ისინი უფრო მეტ ადგილს გვთავაზობენ ზომიერ მასასთან ერთად - კომფორტული არგუმენტი სოლისტებისთვის, რომელთაც სჭირდებათ თავიანთ თავშესაფარში ჯდომა. მაგრამ მნიშვნელოვანია მსუბუქი მოგზაურობის შესაძლებლობაც. მაგალითები: REI Sololite; კელტი კლარკი; Walrus Micro Swift; სიერა დიზაინის კლიპის ფანარი.

Bivouac ჩანთები

თანამედროვე ქსოვილების დიზაინის დროსაც კი, ტრადიციული ბივის ჩანთა ძირითადად განკუთვნილია ალპინისტებისთვის ან მოაზროვნე მინიმალისტებისთვის - იმ ადამიანებისთვის, რომლებიც კოვზებს ხვრელებს უმატებენ, რომ დაზოგონ რამდენიმე გრამი.

რეგულარული ბამბის ჩანთა ორი ძირითადი ფუნქციაა.: იცავს საძილე ტომარას ტენიანობისგან და ზრდის მის ტემპერატურას დაახლოებით 5 ° C– ით.

ბივი აქვს ღია თავის არე. როდესაც წვიმს, გარკვეული ტენიანობა შეიძლება შემოვიდეს დაუცველი თავის ხვრელიდან. ტენიანობის შეღწევის შესამცირებლად, ამ ხვრელის გარშემო გამკაცრდეს მაქმანი. რა თქმა უნდა, ეს თავის ნახვრეტს ცხვირის ნახვრეტად აქცევს, რაც ზოგიერთისთვის მიუღებელია. მაგრამ ეს მცირე კომპრომისია ულტრაიისფერი ზურგჩანთისთვის, რომელიც აფასებს ბივის ჩანთებს მინიმალური წონისთვის.

სხვა მოსაზრებები

ზოგიერთი მოდელი საშუალებას გაძლევთ შექმნათ armholes მხარეს bivy ტომარა, რომელიც საშუალებას გაძლევთ დალაგების თქვენი მექანიზმი ან საზ სანამ თბილი და დაცული ელემენტები.
ბივის სრული სიგრძის ციკლი სასარგებლო იქნება სავენტილაციო სისტემის მეტი ვარიანტით.
ყურადღება მიაქციეთ ქარხნის ნაკერებს, წამყვანი ბრენდები ჩვეულებრივ გვთავაზობენ ამ სასარგებლო თვისებას.
ზოგიერთ მოდელს აქვს სამაგრები, რაც ხელს შეუწყობს თქვენი ხალიჩის შენარჩუნებას.
თბილ პირობებში ზოგჯერ ადამიანები საერთოდ არ იყენებენ საძილე ტომარას, არამედ უბრალოდ იძინებენ ბივის ჩანთაში.

ბივაკის ჩანთების ტიპიური წარმომადგენლები: მთვარის ქვის პირადი თავშესაფარი; სტანდარტული ბივი გარე კვლევებიდან REI ციკლოპები.

თავშესაფრები, როგორიცაა "ბივი"

ბივის ტომრების ევოლუციამ წარმოქმნა დაბალი კატეგორიის კარვის ახალი კატეგორია, რომელსაც ბივის თავშესაფრები უწოდებენ. ამ მოდელებს აქვთ ბადისებრი ჩანართები, რომლებიც განლაგებულია თავის ხვრელის მიდამოში, ასევე მცირე ზომის სავალი სისტემები (ღეროები, რკალები), რომლებიც ქსოვილს ტურისტის სახეს უჭერს. ბივის თავშესაფარში შესაძლებელია მწერებისგან და წვიმისგან სრული იზოლაცია. წვიმის დროს ვენტილაციის უზრუნველყოფას შეიძლება გარკვეული ჭკუა დაჭირდეს, მაგრამ ამის მიღწევა საკმაოდ შესაძლებელია.

მრავალი ტურისტისთვის, რომლებიც დიდხანს და მსუბუქად მოგზაურობენ, ბივის თავშესაფარმა თავისი დამატებითი სულის ფორმის გამაგრებით თავის არეში შეიძლება უზრუნველყოს კომფორტის საკმარისი დონე. მუდმივი ნალექის მქონე ადგილებში, ბივის თავშესაფრები კარგავენ მიმზიდველობას; ძნელი იქნება დაველოდოთ ქარიშხალს თავშესაფარში, სადაც შეუძლებელია დაჯდომა. ამასთან, ბივის თავშესაფრების გამოყენებას აზრი აქვს ისეთი ხელსაყრელი ამინდის პირობებში, როგორიცაა სიერა ნევადა. მაგალითები: Integral Designs Unishelter; Advanced Bivy Sack გარე კვლევიდან.

სხვა მოსაზრებები

ბივი შენთვის ძალიან ვიწროა? თავდაპირველად, შეიძლება ასე იფიქროთ. მაგრამ დაუყოვნებლივ არ გადააგდოთ ყდის ეს ვარიანტი. რა თქმა უნდა, კარავი ტურისტებს სთავაზობს ფართო, უსაფრთხო თავშესაფარს, გადახურული თავზე. ამასთან, bivi საშუალებას გაძლევთ უფრო მკაცრად "შეერწყათ" ბუნებას. ეს თითქმის სიზმარს ჰგავს ვარსკვლავების ქვეშ. ამავე დროს, თქვენ გაქვთ საკმარისი დაცვა წვიმისა და მწერებისგან, ამასთან, მსუბუქიც ხართ. ამასთან, თუ შეზღუდული სივრცე შფოთვას გიქმნით, თქვენ სავარაუდოდ თავს უსიამოვნოდ იგრძნობთ ბივიში, განსაკუთრებით ცუდ ამინდში. ასეთ შემთხვევაში, გაითვალისწინეთ კარვის შეძენა.

როგორ ცირკულირებს ჰაერი ბივის შიგნით? სუნთქვა / წყალგაუმტარი ლამინატი, როგორიცაა Gore-Tex, საშუალებას აძლევს ტენიანობას აორთქლდეს ქსოვილის საშუალებით. ამავე დროს ხელს უშლის წვიმის წვეთებს ქსოვილს. სუნთქვის / წყალგაუმტარი ბივის ჩანთები საუკეთესოდ იმუშავებს იმ შემთხვევებში, როდესაც ტურისტის თბილი, ოფლიანი სხეული ისვენებს ცივ და მშრალ პირობებში. წვიმიან პირობებში, მიუხედავად იმისა, რომ თანამედროვე ბივისები შექმნილია საკმარისად გადახურული მასალით და ელვაებით, ნაკლებად სავარაუდოა, რომ მათ სრულად აწყობთ. სახელმძღვანელო ეთერი ხელს უწყობს ბივის ჩანთაში ტენიანობის მისაღები დონის შენარჩუნებას.

შესაძლებელია ბივის შიგნით შეიქმნას კონდენსაცია? პოტენციურად, დიახ. ძირითადად, ბივი ერთი ფენის კარვია. თქვენი სხეულიდან და ფილტვებიდან წამოსული თბილი ორთქლი იზრდება და ეჯახება ცივ ჰაერს. როდესაც ორთქლი შეხება ბივის ჩანთის ლამინატთან, ჰაერი ვეღარ ატარებს მთელ ტენიანობას, ამიტომ მისი ნაწილი შეგროვდება მოცემული ქსოვილის შიგნით. ორმაგი შრის კარავში, ეს ტენიანობა გადის სუნთქვის შიდა კარავს და ეჯახება გარედან. ბივის შემთხვევაში, ამან შეიძლება გამოიწვიოს მცირე რაოდენობით ტენიანობის დაგროვება შიგნით. ცივ პირობებში, ამან შეიძლება გამოიწვიოს ყინულის ქერქის წარმოქმნა შიგნიდან.

საძილე ტომარა ნამდვილად მშრალი იქნება ბივაკში? წვიმიან (სველ) ამინდის პირობებში, გორ-ტექსის ქსოვილს შეუძლია ზოგჯერ გამოიწვიოს ცივი და ნესტიანი შეგრძნება კანთან კონტაქტის დროს, მაგრამ ეს მხოლოდ შეგრძნებაა, არ სველდება. კარგი ვენტილაცია ხელს უწყობს ამ სენსაციის შემცირებას.

მოკლე რეზიუმე

Bivy ჩანთები: კარგი არჩევანი იქნება ალპინისტებისა და მინიმალისტებისთვის, რომლებიც მოკლე (ერთ და ორდღიან) ლაშქრობებში მიდიან. მოითხოვს აზროვნებას, რომელიც კარგად ეგუება სპარტანულ პირობებს.

ბივის თავშესაფრები: პოპულარულია საქალაქთაშორისო ულტრაიისფერი ფეხით მოსიარულეთათვის და ველოსიპედისტებისთვის. კარგი არჩევანია ტურისტებისთვის, რომლებიც ნალექების მცირე რაოდენობითაა. დამატებითი სივრცე და სრული დაცვა მათ მისაღები ვარიანტად აქცევს ტურისტებისთვის, რომელთაც ფსიქოლოგიურად შეეძლებათ ადაპტირება და ღამისთევა შეზღუდულ სივრცეში. ვიწრო, მაგრამ მსუბუქი.

მცირე კარვები: 2 კგ დიაპაზონის ზოგიერთი მოდელი გთავაზობთ ფართო და საშუალო სიმძიმის კომბინაციას; ხშირ შემთხვევაში საშუალო ტურისტისთვის სასურველი არჩევანი იქნება.

  • Გადაცემა

გამტარუნარიანობის გაზომვა პაკეტის ორმაგი გავლის დროის მიხედვით

ყველა აზრით, დღევანდელ ინტერნეტს არ შეუძლია მონაცემთა გადაადგილება ისე სწრაფად, როგორც საჭიროა. მსოფლიოს მასშტაბით მობილური ინტერნეტის მომხმარებლების უმეტესობა წამებით წუთებს აყოვნებს: აეროპორტებსა და კონფერენციებზე საზოგადოებრივი WiFi ცხელი წერტილები კიდევ უფრო უარესია. ფიზიკოსებსა და კლიმატოლოგებს სჭირდებათ მონაცემთა Petabytes გაცვლა კოლეგებთან მთელს მსოფლიოში, მაგრამ მათ დაადგინეს, რომ მათი მრავალმხრივი გიგაბიტიანი ინფრასტრუქტურა ხშირად წამში მხოლოდ რამდენიმე მეგაბაიტს გამოყოფს ტრანსკონტინენტურ კავშირებზე.

ეს პრობლემები წარმოიშვა არქიტექტურის არჩევის შედეგად, რომელიც გაკეთდა 80-იან წლებში TCP შეშუპების კონტროლის შექმნის დროს - მაშინ პაკეტების დაკარგვა გადაწყდა, რომ განმარტებულიყო, როგორც "შეშუპება". ამ ცნებების ტოლფასობა იმ დროისთვის მართალი იყო, მაგრამ მხოლოდ ტექნოლოგიური შეზღუდვების გამო და არა განსაზღვრებით. როდესაც NIC (ქსელის ინტერფეისის კონტროლერები) განახლდა მეგაბიტიდან გიგაბიტამდე, ხოლო მეხსიერების ჩიპები კილობაიტიდან გიგაბაიტამდე, პაკეტის დაკარგვასა და შეშუპებას შორის კავშირი ნაკლებად აშკარა გახდა.

თანამედროვე TCP– ში ამ პრობლემების ძირეული მიზეზია პაკეტების დაკარგვის შეშუპების კონტროლი - თუნდაც ამ ტიპის ყველაზე მოწინავე ტექნოლოგიაში, CUBIC. თუ ბორკილების ბუფერები ძალიან დიდია, პაკეტების დაკარგვის შეშუპების კონტროლი აგრძელებს მათ სავსეს, რაც იწვევს ქსელის არასაჭირო ბუფერულობას. თუ ბუფერები ძალიან მცირეა, პაკეტების დაკარგვის შეშუპების კონტროლი არასწორად განმარტავს პაკეტების დაკარგვას, როგორც შეშუპების სიგნალს, რაც იწვევს გამტარუნარიანობის შემცირებას. ამ პრობლემების გადაჭრა მოითხოვს პაკეტის დაკარგვის შეშუპების კონტროლის ალტერნატივას. ამ ალტერნატივის მოსაძებნად უნდა გესმოდეთ სად და როგორ ხდება შეშუპება.

შეშუპება და შებოჭილობა

მოცემულ დროს მხოლოდ ერთი ყველაზე ნელი რგოლია (სრული დუპლექსის) TCP კავშირში, ან ბოთლის ყელი ყველა მიმართულებით. ბორბლის ღრუ მნიშვნელოვანია შემდეგი მიზეზების გამო:
  • ის განსაზღვრავს მონაცემთა გადაცემის მაქსიმალურ სიჩქარეს კავშირის შესახებ. ეს არის მონაცემთა კომპრესირებული ნაკადის მთავარი თვისება (მაგალითად, წარმოიდგინეთ ექვსსტრიქონიანი მაგისტრალი პიკის საათში, თუ უბედურმა შემთხვევამ გზის ერთი პატარა მონაკვეთი შემოიფარგლა მხოლოდ ერთი ზოლით. ავარიის ადგილის წინ მოძრაობა უფრო სწრაფად მოძრაობს, ვიდრე მოძრაობა ამ ზოლის გავლით.
  • ეს არის ადგილი, სადაც მუდმივად იქმნება რიგები. ისინი მცირდება მხოლოდ იმ შემთხვევაში, თუ გამტარი ბრუნვიდან გამავალი ნაკადის ინტენსივობა აღემატება შემომავალი ნაკადის ინტენსივობას. კავშირებისათვის, რომლებიც მუშაობენ მაქსიმალური ბიტიანი სიჩქარით, ყველა გამავალი ნაკადები მუცლის ყელზე ყოველთვის უფრო მაღალია გამავალი სიჩქარით, ამიტომ რიგები გადადის ყურძნისკენ.
განურჩევლად იმისა, რამდენი კავშირია კავშირში და რომელია მათი ინდივიდუალური სიჩქარე, TCP– ის თვალსაზრისით, თვითნებურად რთული მარშრუტი წარმოდგენილია როგორც ერთიანი კავშირი იგივე RTT– სთან (პაკეტის ორმაგად გავლის დრო, ანუ მრგვალი მოგზაურობის დრო) და გამშვები პუნქტის გამტარობა ... ორი ფიზიკური შეზღუდვა RTprop (მრგვალი მოგზაურობის გამრავლების დრო) და BtlBw (ბორბლების გამტარობა) გავლენას ახდენს გადაცემის მუშაობაზე. (თუ ქსელის გზა იქნებოდა მატერიალური მილი, RTprop იქნებოდა მილის სიგრძე და BtlBw მისი დიამეტრი).

დიაგრამა 1 გვიჩვენებს RTT და ბიტის სიჩქარის სხვადასხვა კომბინაციებს მონაცემთა მოცულობასთან. ფრენის დროს, ანუ ფრენა (მონაცემები გაგზავნილია, მაგრამ მიწოდების დადასტურების გარეშე). ლურჯი ხაზები აჩვენებს RTprop ლიმიტს, მწვანე ხაზები BtlBw ლიმიტს და წითელ ხაზებს ბოთლის ბუფერი. ოპერაციები ნაცრისფერ ადგილებში შეუძლებელია, რადგან ისინი ეწინააღმდეგებიან მინიმუმ ერთ შეზღუდვას. შეზღუდვებს შორის გადასვლამ გამოიწვია სამი რეგიონის (პროგრამით შეზღუდული, სიჩქარის შეზღუდვა და ბუფერული შეზღუდვა) თვისებრივად განსხვავებული ქცევის ფორმირება.

სურათი 1

როდესაც ფრენის დროს არ არის საკმარისი მონაცემები მილის გასავსებად, RTprop განსაზღვრავს ქცევას; წინააღმდეგ შემთხვევაში, BtlBw დომინირებს. შეზღუდვის ხაზები იკვეთება წერტილში, რომელიც ასევე არის BDP მილის (სიჩქარის შეყოვნების პროდუქტი, გამტარობის და შეფერხების წარმოებული). მას შემდეგ, რაც ამ წერტილის შემდეგ მილი სავსეა, ზედმეტი ქმნის რიგს გამჭოლი ყელისკენ, რის შედეგადაც ხდება ხაზოვანი კავშირი RTT- სა და ფრენის მონაცემებს შორის, ნაჩვენებია ზედა გრაფაში. პაკეტები უგულებელყოფილია, როდესაც ზედმეტი გადააჭარბებს ბუფერულ მოცულობას. შეშუპება არის მხოლოდ უწყვეტი ადგილმდებარეობა BDP ხაზის მარჯვნივ და შეშუპების კონტროლი - გარკვეული სახის სქემა, რომელიც განსაზღვრავს ლიმიტს, თუ რამდენად შორს ხდება BDP ხაზის მარჯვნივ, საშუალოდ, ხდება მონაცემთა გადაცემა.

ზარალის შეშუპების კონტროლი მოქმედებს გამტარობით შეზღუდული არეის მარჯვენა კიდეზე, უზრუნველყოფს სრულ ბორბლიან გამტარობას მაღალი შეყოვნებისა და პაკეტის ხშირი დაკარგვის ხარჯზე. იმ დღეებში, როდესაც მეხსიერება ძვირი ღირდა, ბუფერის ზომები მხოლოდ ოდნავ აღემატებოდა BDP- ს, რაც მინიმუმამდე ამცირებდა შეშუპების კონტროლის დაკარგვის ჭარბი შეყოვნებას. მოგვიანებით მეხსიერების ფასების შემცირებამ გამოიწვია ქსელის ბუფერული ჭარბი რაოდენობის გაზრდა და მილიწამების ნაცვლად RTT წამში გაზრდა.

სიმძლავრით შეზღუდული არეალის მარცხენა კიდეზე არის საოპერაციო წერტილი უკეთესი პირობებით, ვიდრე მარჯვნივ. 1979 წელს ლეონარდ კლეინროკმა აჩვენა, რომ ეს ოპერაციული წერტილი ოპტიმალურია, ის მაქსიმალურად ზრდის რეალურ გამტარუნარიანობას და ამცირებს შეყოვნების და ზარალის შემცირებას, როგორც ინდივიდუალური კავშირებისთვის, ისე მთლიან ქსელში. სამწუხაროდ, დაახლოებით ერთსა და იმავე დროს, ჯეფრი იაფმა დაამტკიცა, რომ შეუძლებელია განაწილებული ალგორითმის შექმნა, რომელიც ამ ოპერაციულ წერტილში თავს იკრებს. ამ მიგნებამ შეცვალა კვლევის მიმართულება. იმის ნაცვლად, რომ მოძებნონ განაწილებული ალგორითმი, რომელიც ეძებს ოპტიმალურ კლაინროკის საოპერაციო წერტილს, მკვლევარებმა დაიწყეს შეშუპების კონტროლის ალტერნატიული მიდგომების შესწავლა.

Google- ის ჩვენი გუნდი ყოველდღიურად საათობით ატარებს TCP პაკეტის სათაურის მიყრუების ჟურნალებს მთელი მსოფლიოს მასშტაბით, აცნობიერებს ანომალიებსა და ქცევის პათოლოგიებს. ჩვენ, როგორც წესი, ვეძებთ მარშრუტის ძირითად მახასიათებლებს, პირველ რიგში RTprop და BtlBw. ის ფაქტი, რომ ისინი შეიძლება გამომდინარეობდეს ქსელის კვალდაკვალ, იმაზე მეტყველებს, რომ ჯაფის დასკვნა შეიძლება არც ისე მარტივი იყოს, როგორც ადრე ჩანდა. მისი დასკვნა ემყარება გაზომვის ფუნდამენტურ გაურკვევლობას (მაგალითად, დამოკიდებულია თუ არა RTT– ის გაზომვა ბილიკის სიგრძის ცვლილებაზე, ბოლქვის სიგანის შემცირებაზე ან რიგის შეყოვნების ზრდით სხვა კავშირით მოძრაობის გამო). მიუხედავად იმისა, რომ შეუძლებელია თითოეული კონკრეტული გაზომვის გაურკვევლობის აღმოფხვრა, ნაერთის ქცევა დროთა განმავლობაში უფრო ნათელ სურათს ქმნის, რაც გულისხმობს გაურკვევლობის აღმოსაფხვრელად გაზომვის სტრატეგიების გამოყენების შესაძლებლობას.

ამ გაზომვების საიმედო მიკვლევის მარყუჟის კომბინირებით, კონტროლის სისტემებში უახლესი მიღწევების გამოყენებით, იმედი გვაქვს, რომ შეიქმნება განაწილებული შეშუპების კონტროლის პროტოკოლი, რომელიც რეაგირებს რეალურ შეშუპებაზე, ვიდრე პაკეტის დაკარგვაზე ან რიგის მოკლე შეფერხებებზე. და ეს დიდი ალბათობით მოხდება კლეინროკის ოპტიმალურ ოპერირების წერტილში. ამრიგად, დაიწყო ჩვენი სამწლიანი პროექტი შეშუპების მართვის სისტემის შესაქმნელად, რომელიც დაფუძნებულია ორი პარამეტრის გაზომვაზე, რომლებიც ახასიათებს მარშრუტს: ბოთლის ყელის ტევადობა და პაკეტის ორმაგი გავლის დრო, ან BBR.

ბოთლის ყელის მახასიათებელი

კავშირი მუშაობს მაქსიმალური გამტარობით და მინიმალური შეყოვნებით, როდესაც (სიჩქარის ბალანსი) შეფუთვაზე პაკეტების ჩამოსვლის სიჩქარეა BtlBw და (სრული არხი) ფრენის მონაცემების მთლიანი რაოდენობა BDP ტოლია ().

პირველი პირობა უზრუნველყოფს, რომ ბორბლის ყელი 100% -ით არის გამოყენებული. მეორე უზრუნველყოფს რომ ჩვენ გვაქვს საკმარისი მონაცემები, რომ თავიდან იქნას აცილებული შეჩერებული ბორკილები, მაგრამ არ მოხდეს არხის გადავსება. თვით სიჩქარის ბალანსის პირობა არა იძლევა გარანტიას, რომ რიგი არ არსებობს, მხოლოდ მისი უცვლელი ზომაა (მაგალითად, თუ კავშირი იწყება 10 პაკეტიანი საწყისი ფანჯრის ხუთ პაკეტის BDP– ზე გაგზავნით, შემდეგ მუშაობს ზუსტად იგივე სიჩქარის სიჩქარით, შემდეგ ათიდან ათიდან ხუთი შეავსებს არხს და ზედმეტი ქმნის მდგომ რიგს ვიწრო ადგილი, რომელიც ვერ იშლება). ანალოგიურად, არხის სრული მდგომარეობა არ იძლევა რიგის დონის გარანტიას (მაგალითად, კავშირი აგზავნის BDP- ს მთელ რიგზე BDP / 2-ზე და სრულად იყენებს ბორკილს, მაგრამ საშუალო რიგია BDP / 4). ერთადერთი გზა, რითაც უნდა შემცირდეს რიგი დახურულ კვარცხლბეკზე და მთელ არხზე, არის ორივე პირობის ერთდროულად დაკმაყოფილება.

BtlBw და RTprop მნიშვნელობები იცვლება კავშირის სიცოცხლის განმავლობაში, ამიტომ ისინი მუდმივად უნდა შეფასდეს. ამჟამად, TCP აკონტროლებს RTT- ს (დროის ინტერვალი მონაცემთა პაკეტის გაგზავნილ შეტყობინებამდე, რომ იგი გაგზავნილია), რადგან საჭიროა ზარალის დადგენა. Ნებისმიერ დროს,


სად არის მარშრუტის რიგებიდან ხმაური, მიმღების სტრატეგია დაგვიანებული აღიარებით, აღიარების დაგროვება და ა.შ. RTprop არის ბმულის ფიზიკური მახასიათებელი და იცვლება მხოლოდ მაშინ, როდესაც არხი შეიცვლება. მას შემდეგ, რაც არხების ცვლილებები ხდება დროის მასშტაბით RTprop, მაშინ დროის მიუკერძოებელი და ეფექტური შეფასება იქნება
ეს არის დროის სარკმელში გაშვება (რაც ჩვეულებრივ ათეულ წამს წუთამდე).

RTT- სგან განსხვავებით, TCP სპეციფიკაციებში არაფერია საჭირო იმისათვის, რომ თვალყური ადევნოთ ბორკილების გამტარუნარიანობას, მაგრამ ამის კარგი შეფასება შეგიძლიათ მიიღოთ მიწოდების სიჩქარის თვალყურისდევნებით. როდესაც პაკეტის მიწოდების ცნობას უბრუნდება გამგზავნი, იგი აჩვენებს პაკეტის RTT- ს და აცხადებს მონაცემთა მიწოდებას ფრენის დროს, როდესაც პაკეტი მიდის. პაკეტის გაგზავნამდე და დასტურის მიღებას შორის მიწოდების საშუალო სიჩქარე არის მიწოდებული მონაცემების თანაფარდობა გასულ დროზე:. ეს მაჩვენებელი უნდა იყოს ნაკლები ან ტოლი ბოლქვის გამტარუნარიანობის შესახებ (ჩამოსვლის რაოდენობა ზუსტად ცნობილია, ამიტომ მთელი გაურკვევლობა იმაში მდგომარეობს, რომ უნდა აღემატებოდეს ჩამოსვლის ამჟამინდელ ინტერვალს, ან ტოლი; შესაბამისად, თანაფარდობა უნდა იყოს ნაკლები ან ტოლი რეალური მიწოდების მაჩვენებლისა, რაც თავის მხრივ რიგი, რომელიც ზემოდან შემოიფარგლება ბოლქვის ტევადობით). ამიტომ, მიწოდების მაქსიმალური სიჩქარის ფანჯარაა BtlBw- ის ეფექტური, არაპარტიალური შეფასება:


სადაც დროის ფანჯარა ჩვეულებრივ ექვსიდან ათი RTT- ია.

TCP– მ უნდა ჩაწეროს თითოეული პაკეტის გაგზავნის დრო, რათა გამოანგარიშდეს RTT. BBR ამ ჩანაწერებს ავსებს მიწოდებული მონაცემების მთლიანი მოცულობით, ისე, რომ თითოეული დასტურის ჩამოსვლისას დასტურდება RTT და მიწოდების სიჩქარის გაზომვა, რომელსაც ფილტრები გადააქცევს RTprop და BtlBw.

გაითვალისწინეთ, რომ ეს მნიშვნელობები სრულიად დამოუკიდებელია: RTprop შეიძლება შეიცვალოს (მაგალითად, მარშრუტის შეცვლისას), მაგრამ აქვს იგივე ბორკილები, ან BtlBw– ს შეუძლია შეცვალოს (მაგალითად, როდესაც უკაბელო გამტარობა იცვლება) მარშრუტის შეცვლის გარეშე. (ორივე შეზღუდვის დამოუკიდებლობა არის მიზეზი, რის გამოც ისინი უნდა იყოს ცნობილი, რომ გადაზიდვის ქცევა მიწოდების გზას დაუკავშირონ). მას შემდეგ, რაც RTprop ჩანს მხოლოდ BDP- ის მარცხენა მხარეს, ხოლო BtlBw ჩანს მხოლოდ მარჯვენა მხარეს ნახაზზე 1, ისინი ემორჩილებიან გაურკვევლობის პრინციპს: როდესაც ორიდან ერთი იზომება, მეორე ვერ იზომება. ინტუიციურად ეს შეიძლება შემდეგნაირად გავიგოთ: არხის სიმძლავრის დასადგენად, ის უნდა იყოს ზედმეტად შევსებული, რაც ქმნის რიგს, რომელიც არ იძლევა არხის სიგრძის გაზომვას. მაგალითად, აპლიკაციას, რომელსაც აქვს მოთხოვნის / პასუხის პროტოკოლი, შეიძლება არასდროს გამოუგზავნოს საკმარისი მონაცემები არხის შევსებისთვის და BtlBw- ის სანახავად. დიდი რაოდენობით მონაცემთა გადაცემის მრავალ საათს შეუძლია დახარჯოს მთელი თავისი დრო შეზღუდული გამტარობის არეალში და მიიღოს მხოლოდ ერთი RTprop ნიმუში RTT– დან პირველი პაკეტიდან. თანდაყოლილი გაურკვევლობის პრინციპი ნიშნავს, რომ მარშრუტის ორი პარამეტრის რეკონსტრუქციის შეფასების გარდა, უნდა არსებობდეს სახელმწიფოები, რომლებსაც ერთდროულად ადევნებენ თვალყურს და რისი სწავლაც შეიძლება მიმდინარე ოპერაციულ წერტილში და, ინფორმაციის დაკარგვისას სიახლეა, თუ როგორ უნდა გადავიდეთ ოპერაციულ წერტილში, სადაც მისი მიღებაა შესაძლებელი. უფრო ბოლოდროინდელი მონაცემები.

პაკეტის ნაკადის შეკვეთა მიწოდების გზაზე

მთავარ BBR ალგორითმს ორი ნაწილი აქვს:

როდესაც დადასტურებას მივიღებთ (ack)

თითოეული დასტური გთავაზობთ ახალ RTT– ს და მიწოდების საშუალო მაჩვენებლის ზომებს, რომლებიც განაახლებს RTprop და BtlBw შეფასებებს:

ფუნქცია ჩართეთ (პაკეტი) rtt \u003d ახლა - packet.sendtime update_min_filter (RTpropFilter, rtt) მიწოდება currentMax ||! packet.app_limited) update_max_filter (BtlBwFilter, deliveryRate) თუ (app_limited_until\u003e 0) app_limited_until \u003d app_limited_until - packet.size
თუ შემოწმება საჭიროა ბოლო პუნქტში განხილული ბუნდოვანების პრობლემის გამო: გამგზავნი შეიძლება შეიზღუდოს აპლიკაციით, ანუ აპლიკაციას შეუძლია დაასრულოს მონაცემები ქსელის შესავსებად. ეს საკმაოდ გავრცელებული ვითარებაა თხოვნის / პასუხის ტრაფიკის გამო. როდესაც გაგზავნის შესაძლებლობა არსებობს, მაგრამ მონაცემები არ იგზავნება, BBR აღნიშნავს შესაბამის გამტარობის ნიმუშებს, როგორც "პროგრამა შეზღუდულია", ანუ app_limited (იხილეთ გაგზავნა () ფსევდოკოდი). ეს კოდი განსაზღვრავს თუ რომელი შაბლონები უნდა შეიტანოს გამტარუნარიანობის მოდელში, ამიტომ იგი ასახავს ქსელის ლიმიტებს და არა გამოყენების ლიმიტებს. BtlBw არის მიწოდების მაჩვენებლის მკაცრი ზედა ზღვარი, ამიტომ მიწოდების იზომება სიჩქარე, რომელიც აღემატება ამჟამინდელ BtlBw შეფასებას, უნდა ნიშნავდეს დაუფასებლად შეფასებულ BtlBw შეფასებას, იყო თუ არა ნიმუში გამოყენება შეზღუდული, თუ არა. წინააღმდეგ შემთხვევაში, აპლიკაციებით შეზღუდული ნიმუშები უქმდება. (დიაგრამა 1 გვიჩვენებს, რომ რეგიონში, რომელზეც განაცხადის შეფარდება შეზღუდულია, BtlBw პარამეტრი სათანადოდ არ არის შეფასებული). ეს შემოწმებები ხელს უშლის BtlBw ფილტრის შევსებას არასაფასო მნიშვნელობებით, რამაც შეიძლება შეაფერხოს მონაცემთა გაგზავნა.

როდესაც მონაცემები იგზავნება

პაკეტების ჩამოსვლის სიჩქარის დასაკავშირებლად და გამშვები პუნქტიდან გასვლის სიჩქარე, BBR აკონტროლებს მონაცემთა თითოეულ პაკეტს. (BBR უნდა ემთხვეოდეს კურსი ბოთლის ყელი: ეს ნიშნავს, რომ თვალყურისდევნება არის არქიტექტურის განუყოფელი ნაწილი და სამუშაოს ფუნდამენტური ნაწილი - შესაბამისად pacing_rate მთავარი კონტროლის პარამეტრია. დამხმარე პარამეტრი cwnd_gain აკავშირებს ფრენა მცირედი BDP– ებით, ქსელისა და მიმღების ტიპიური პათოლოგიების მოსაგვარებლად (იხილეთ თავი დაგვიანებული და გახანგრძლივებული დადასტურებების შესახებ). კონცეპტუალურად, გაგზავნის პროცედურა TCP– ში ჰგავს შემდეგ კოდს. (Linux- ზე, მონაცემთა გაგზავნა იყენებს ეფექტურ FQ / pacing რიგში, რაც BBR- ს აძლევს ერთი კავშირის ხაზოვან შესრულებას მრავალგიგაბიტიან ბმულებზე და ამუშავებს ათასობით შენელებულ კავშირს უმნიშვნელო CPU ზედნადებთან).

ფუნქციის გაგზავნა (პაკეტი) bdp \u003d BtlBwFilter.currentMax × RTpropFilter.currentMin if (ინფრასტრუქტურა\u003e \u003d cwnd_gain × bdp) // დაველოდოთ ack ან რეტრანსლაციის შეყოვნების დაბრუნებას თუ (ახლა\u003e \u003d nextSendTime) პაკეტი \u003d nextPacketToSend () app (! Packet!) \u003d ინფრასტრუქტურის დაბრუნება packet.app_limited \u003d (app_limited_until\u003e 0) packet.sendtime \u003d ახლა packet.delivered \u003d მიტანილი packet.delivered_time \u003d მიწოდებული_დროზე გემის (პაკეტი) nextSendTime \u003d ახლა + packet.size / (pacing_gain × BtlBwFilter.currentMax) senderCall nextSendTime)
სტაბილური მდგომარეობის ქცევა

BBR– ზე გაგზავნილი მონაცემების სიჩქარე და რაოდენობა დამოკიდებულია მხოლოდ BtlBw და RTprop– ზე, ამიტომ ფილტრები აკონტროლებენ არა მხოლოდ ბორკილების შეზღუდვის შეფასებებს, არამედ მათ გამოყენებას. ეს ქმნის მე -2 ნახაზზე გამოსახულ ინდივიდუალურ საკონტროლო მარყუჟს, რომელიც აჩვენებს RTT (ლურჯი), ფრენის (მწვანე) და მიწოდების სიჩქარეს (წითელი) 700 მილიწამზე მეტი 10 მეგაბით 40 მილიწამიანი ნაკადისთვის. მიწოდების სიჩქარის ზემოთ მუქი ნაცრისფერი ხაზი არის BtlBw მაქსიმალური ფილტრის მდგომარეობა. სამკუთხა ფორმები მიიღება BBR– ში pacing_gain კოეფიციენტის ციკლური გამოყენებით, BtlBw– ის ზრდის დასადგენად. ციკლის თითოეულ ნაწილში მოგება ნაჩვენებია დროის შესაბამისობაში მოყვანილ მონაცემებთან. ეს ფაქტორი მუშაობდა RTT– ზე ადრე, როდესაც მონაცემები იგზავნებოდა. ეს ნაჩვენებია ჰორიზონტალური დარღვევებით, მარცხენა მხარეს მოვლენების თანმიმდევრობის აღწერაში.


სურათი 2

BBR ამცირებს შეყოვნებას, რადგან უმეტეს დროს მოქმედებს იგივე BDP. ამის გამო, ბორკილები გადადის გამგზავნზე, ისე რომ BtlBw– ის ზრდა უხილავი გახდეს. ამიტომ, BBR პერიოდულად ხარჯავს RTprop ინტერვალს pacing_gain\u003e 1– ზე, რაც ზრდის გაგზავნის სიჩქარეს და მიწოდებული მონაცემების რაოდენობას მიწოდების დადასტურების გარეშე (ფრენის დროს). თუ BtlBw არ შეიცვლება, მაშინ რიგი იქმნება ბორკილამდე, იზრდება RTT, რომელიც ინარჩუნებს მიწოდების სიჩქარეს მუდმივ რეჟიმში. (რიგის აღმოფხვრა შესაძლებელია ოფსეტური pacing_gain მნიშვნელობის მონაცემების გაგზავნით< 1 для следующего RTprop). Если BtlBw увеличивается, то скорость deliveryRate тоже увеличивается, а новое максимальное значение фильтра немедленно увеличивает базовую скорость отслеживания (pacing_rate) ამ მიზეზის გამო, BBR სწრაფად ეგუება ახალ ბოთლის ზომას. სურათი 3 გვიჩვენებს ამ ეფექტს 10 Mbps 40 ms ნაკადზე, რომელიც BtlBw მოულოდნელად ანვითარებს 20 Mbps 20 წამიანი სტაბილური მუშაობის შემდეგ (გრაფიკის მარცხნივ), შემდეგ დაეცემა 10 Mbps- ზე 20 წთ-ით კიდევ 20 წამიანი მუშაობის შემდეგ. Mbps (გრაფიკის მარჯვენა მხარე).


სურათი 3

(ძირითადად, BBR არის "max-plus" კონტროლის სისტემის მარტივი მაგალითი, კონტროლის სისტემების ახალი მიდგომა, რომელიც დაფუძნებულია არასტანდარტულ max-plus ალგებრაზე. ეს მიდგომა იძლევა სიჩქარის ადაპტაციას [კონტროლდება გადაცემის თანაფარდობით მაქსიმალური] რიგის ზრდის მიუხედავად [კონტროლდება გადაცემის კოეფიციენტით საშუალო]. რაც შეეხება ჩვენს პრობლემას, ეს მოდის მარტივი, უპირობო კონტროლის ციკლით, სადაც ფიზიკური შეზღუდვების ცვლილებებთან ადაპტაცია ავტომატურად ხორციელდება ამ შეზღუდვების გამომხატველი ფილტრების შეცვლით. ტრადიციული სისტემისთვის საჭიროა მრავალი საკონტროლო მარყუჟის შექმნა, რომელიც გაერთიანებულია რთულ სახელმწიფო მანქანაში ამ შედეგის მისაღწევად.)

ქცევა, როდესაც იწყება ერთი BBR თემა

თანამედროვე დანერგვები ამუშავებს ისეთ მოვლენებს, როგორიცაა გაშვება, გამორთვა და დანაკარგების აღდგენა "ღონისძიებებზე ორიენტირებული" ალგორითმებით, კოდის უამრავი ხაზით. BBR იყენებს ზემოთ მოცემულ კოდს (წინა თავში "პაკეტის ნაკადის შესაბამისობა მიწოდების გზასთან") ყველაფრისთვის. მოვლენებს ამუშავებენ "შტატების" მიმდევრობის გადაკვეთით. თავად "სახელმწიფოები" განისაზღვრება ცხრილით, რომელშიც მოცემულია კოეფიციენტების ერთი ან მეტი ფიქსირებული მნიშვნელობა და გასვლის კრიტერიუმები. დროის უმეტეს ნაწილს ატარებს ProbeBW მდგომარეობა, რომელიც აღწერილია სტაბილური მდგომარეობის ქცევის თავში. კავშირის დაწყებისას გამოიყენება Startup და Drain შტატები (სურათი 4). კავშირის გასამკლავებლად, სადაც გამტარუნარიანობა იზრდება 12 ბრძანებით, Startup მდგომარეობა ახორციელებს BtlBw- ს ორობით ძიების ალგორითმს, რომელიც იყენებს გადამცემი ფაქტორს გადაცემის სიჩქარის გაორმაგებისას, როდესაც მიწოდების სიჩქარე იზრდება. ეს განსაზღვრავს BtlBw RTT– ში, მაგრამ ამავე დროს ქმნის ზედმეტ რიგს მანამდე. როგორც კი Startup იპოვის BtlBw- ს, BBR სისტემა გადადის გადინების მდგომარეობაში, რომელიც იყენებს Startup– ის სიჩქარის ინვერსიულ კოეფიციენტებს გადაჭარბებული რიგის მოსაშორებლად, შემდეგ კი ProbeBW– ის მდგომარეობაში, როგორც კი გადაფრენა ხდება BDP ხაზამდე.


სურათი 4

ნახაზი 4 გვიჩვენებს 10 მეგაბიტიანი 40 ms BBR ნაკადის პირველ წამს. ზედა გრაფაში მოცემულია მოვლენების დრო და თანმიმდევრობა, აგრეთვე გამომგზავნის (მწვანე) და მიმღების (ლურჯი) პროგრესი: გაგზავნილი და მიღებული მონაცემების რაოდენობა. წითელი ხაზი აჩვენებს გამგზავნის მუშაობას CUBIC ტექნოლოგიის გამოყენებით იმავე პირობებში. ვერტიკალური ნაცრისფერი ხაზები მიუთითებს გადასვლის დროებს BBR მდგომარეობებს შორის. ქვედა გრაფიკში მოცემულია ორივე კავშირის მრგვალი მოგზაურობის დროის (RTT) ცვლილება. გთხოვთ გაითვალისწინოთ, რომ ამ განრიგის ვადები შეესაბამება ჩამოსვლის დადასტურების მიღების დროს (ack). ამიტომ, შეიძლება ჩანდეს, რომ გრაფიკები დროში გადაიტანეს, მაგრამ სინამდვილეში ქვემოთ მოცემული მოვლენები შეესაბამება იმ მომენტებს, როდესაც BBR სისტემა შეიტყობს ამ მოვლენების შესახებ და რეაგირებს.

დიაგრამა 4-ზე მოცემულია BBR და CUBIC შედარება. თავდაპირველად, მათი ქცევა თითქმის იგივეა, მაგრამ BBR მთლიანად ცარიელებს რიგს კავშირის დაწყებისთანავე, და CUBIC– ს ამის გაკეთება არ შეუძლია. მას არ გააჩნია კვალი მოდელი, რომელიც გითხრათ, თუ გაგზავნილი მონაცემები ზედმეტია. ამიტომ, CUBIC ნაკლებად აგრესიულად ზრდის მონაცემთა გადაცემას დადასტურების გარეშე, მაგრამ ეს ზრდა გრძელდება მანამ, სანამ ბოთლის ბუფერი არ გადაივსება და არ დაიწყებს პაკეტების ჩამოყრას, ან სანამ მიმღები არ მიაღწევს გაგზავნილი მონაცემების ლიმიტს დადასტურების გარეშე (TCP მიიღებს ფანჯარა)

სურათი 5 გვიჩვენებს RTT- ს ქცევას წინა ცხრილში გამოსახული კავშირის პირველ რვა წამში. CUBIC ტექნოლოგია (წითელ ფერში) ავსებს მთელ არსებულ ბუფერს, შემდეგ ბრუნავს 70% -სა და 100% -ს შორის რამდენიმე წამში. კავშირის დაწყებისთანავე, BBR (მწვანე) მუშაობს მცირე რიგში ან საერთოდ არ დგას რიგში.


სურათი 5

ქცევა, როდესაც მრავალჯერადი BBR ნაკადი ხვდება ყურში

გრაფიკი 6 გვიჩვენებს, თუ როგორ ხდება მრავალი BBR ნაკადის გამტარუნარიანობის შერწყმა 100 მეგაბაიტი / 10 მილიწამიანი ბორბლის გულწრფელ მონაკვეთზე. ქვემოთ მოქცეული სამკუთხა სტრუქტურები არის ProbeRTT კავშირების მდგომარეობა, რომელშიც თვითსინქრონიზაცია აჩქარებს საბოლოო კონვერგენციას.


სურათი 6

ProbeBW მოგების ციკლები (სურათი 2) ასტიმულირებს უფრო დიდ ნაკადებს, რომ მიიღონ გამტარობა მცირე ნაკადებზე, რის შედეგადაც თითოეულ ნაკადს ესმის მისი პატიოსანი მდგომარეობა. ეს ხდება საკმაოდ სწრაფად (რამდენიმე ProbeBW ციკლი), თუმცა უსამართლობა შეიძლება გაგრძელდეს, თუ გადანაწილების დასაწყისში დაგვიანებული თემები გადააფასებენ RTprop- ს იმის გამო, რომ ადრე დაწყებული (დროებით) ძაფები ქმნიან რიგს.

რეალური RTProp– ის გასარკვევად, ნაკადი გადადის BDP ხაზის მარცხენა მხარეს ProbeRTT მდგომარეობის გამოყენებით: თუ RTProp– ის შეფასება არ განახლდა (ანუ მცირე RTT– ის გაზომვით) მრავალი წამით, მაშინ BBR შედის ProbeRTT მდგომარეობაში, გაგზავნილი მონაცემების რაოდენობის შემცირებაზე ოთხამდე პაკეტები მინიმუმ ერთი ორმაგი პასისთვის და შემდეგ უბრუნდება წინა მდგომარეობას. როდესაც დიდი ძაფები შემოდის ProbeRTT მდგომარეობაში, მრავალი პაკეტი ამოიშლება რიგიდან, ისე, რომ რამდენიმე ძაფი ერთდროულად ხედავს ახალ RTprop მნიშვნელობას (ახალი მინიმალური RTT). ამის წყალობით, მათი RTprop შეფასებები ერთდროულად ნულდება, ამიტომ ისინი ყველა ერთად შედიან ProbeRTT მდგომარეობაში - და რიგი კიდევ უფრო იკლებს, რის შედეგადაც კიდევ უფრო მეტი თემა ხედავს ახალ RTprop მნიშვნელობას და ა.შ. ეს განაწილებული კოორდინაცია ძირითადი ფაქტორია როგორც გამტარობის სამართლიანობაში, ასევე სტაბილურობაში.

BBR სინქრონიზირებს ძაფებს სასურველი მოვლენის გარშემო, რომელიც არის ცარიელი რიგი გამშვებ პუნქტში. ამ მიდგომის საპირისპიროდ, პაკეტების დაკარგვის შეშუპების შთანთქმა სინქრონიზირებს ნაკადებს არასასურველი მოვლენების გარშემო, როგორიცაა რიგის პერიოდული ზრდა და ბუფერის გადავსება, რაც ზრდის შეყოვნებას და პაკეტის დაკარგვას.

B4 WAN– ის დანერგვის გამოცდილება Google– ში

Google- ის B4 არის ჩქაროსნული ფართო ქსელი (WAN), რომელიც აგებულია ჩვეულებრივ, დაბალბიუჯეტიან კონცენტრატორებზე. დანაკარგები ამ არაღრმა ბუფერულ კონცენტრატორებზე ძირითადად განპირობებულია ტრეფიკის მცირე აფეთქებებით ზოგჯერ. 2015 წელს Google- მა დაიწყო სამუშაო ტრაფიკის გადატანა CUBIC- დან BBR- ში. არანაირი პრობლემა და რეგრესი არ დაფიქსირებულა და 2016 წლიდან ყველა B4 TCP ტრაფიკი იყენებს BBR- ს. დიაგრამა 7 ამის ერთ-ერთ მიზეზს ასახავს: BBR– ის გამტარუნარიანობა მუდმივად 2-25 – ჯერ აღემატება CUBIC– ს. ჩვენ კიდევ უფრო მეტი გაუმჯობესება დავინახეთ, მაგრამ აღმოჩნდა, რომ BBR კავშირების 75% შემოიფარგლება TCP– ის ბუფერული ბირთვით, რომელიც ქსელის ოპერაციულმა ჯგუფმა განზრახ დაადგინა დაბალი მნიშვნელობისთვის (8 მბ), რათა თავიდან იქნას აცილებული CUBIC ქსელი მეგაბაიტით გადაჭარბებული ტრაფიკით მიწოდების დადასტურების გარეშე (თუ 8 მბ გაყოფთ 200 მგ ინტერკონტინენტურ RTT– ზე, მიიღებთ მაქსიმუმ 335 მბ / წმ) ხელით გაზრდის ბუფერის მიღებას აშშ – დან ევროპაზე მიმავალ მარშრუტზე, მყისიერად გაზარდა BBR– ის მონაცემების სიჩქარე 2 გბ / წმ-მდე, ხოლო CUBIC დარჩა 15 Mbps - 133-ჯერ გაიზარდა გამტარუნარიანობის შედარებით გაზრდილი მატისი და სხვები. მუშაობა 1997 წელს.


სურათი 7

დიაგრამა 7 გვიჩვენებს BBR– ის შედარებით გაუმჯობესებას CUBIC– ის მიმართ; გვერდითი ზოლი გვიჩვენებს კუმულაციური განაწილების ფუნქციებს (CDF) გამტარუნარიანობისთვის. გაზომვები განხორციელდა აქტიური ზონდირების სერვისის გამოყენებით, რომელიც ხსნის მუდმივ BBR და CUBIC კავშირებს დისტანციურ მონაცემთა ცენტრებთან, შემდეგ გადააქვს 8 მბ მონაცემები ყოველ წუთს. ზონდები იკვლევს ბევრ B4 მარშრუტს ჩრდილოეთ ამერიკას, ევროპასა და აზიას შორის.

უზარმაზარი გაუმჯობესება არის BBR– ის პირდაპირი შედეგი არა იყენებს პაკეტების დაკარგვას შეშუპების მაჩვენებლად. სრული გამტარუნარიანობის მისაღწევად, არსებული პაკეტების დაკარგვის შეშუპების კონტროლის ტექნიკა მოითხოვს, რომ დანაკარგის სიჩქარე იყოს ნაკლები BDP ინვერსიული კვადრატისა (მაგ., ერთ ზარალზე ნაკლები 30 მილიონ პაკეტზე 10 Gbps / 100 ms კავშირისთვის). ნახაზი 8 ადარებს გაზომულ გამოსაყენებელ გამტარუნარიანობას პაკეტის დაკარგვის სხვადასხვა დონეზე. CUBIC– ში პაკეტების დაკარგვის ტოლერანტობა არის ალგორითმის სტრუქტურული თვისება, ხოლო BBR– ში ეს არის კონფიგურაციის პარამეტრი. როგორც BBR– ის დანაკარგის დონე უახლოვდება ProbeBW– ის მაქსიმალურ მოგებას, რეალური BtlBw– ის მიწოდების სიჩქარის გაზომვის ალბათობა მკვეთრად ეცემა, რაც ფილტრის მაქსიმალური ნაწილის დაუფასებლობას იწვევს.


Ფიგურა 8

ნახაზი 8 ადარებს BBR და CUBIC– ის გამოსაყენებელ გამტარობას 60 წამში ნაკადად 100 Mbps ბმულზე და 100 ms შემთხვევითი დანაკარგებით, 0,001% –დან 50% –მდე. CUBIC– ის გამტარუნარიანობა 10 – ჯერ შემცირდება 0,1% –იანი დანაკარგით და მთლიანად ჩერდება 1% –ზე მეტით. მაქსიმალური გამტარობა არის გამტარუნარიანობის წილი მინუს პაკეტის დაკარგვა (). BBR ამ დონეზე ინახავს 5% –მდე ზარალს და 15% –მდე ახლოს.

YouTube Edge- ის დანერგვის გამოცდილება

BBR განლაგებულია YouTube და Google.com ვიდეო სერვერებზე. Google ატარებს მცირე ექსპერიმენტს, რომელშიც მომხმარებელთა მცირე პროცენტი შემთხვევით გადაეცემა BBR ან CUBIC- ს. BBR ვიდეოს დაკვრა გვიჩვენებს მომსახურების ხარისხის მომხმარებლის ყველა რეიტინგის მნიშვნელოვან გაუმჯობესებას. ალბათ იმიტომ, რომ BBR- ის ქცევა უფრო თანმიმდევრული და პროგნოზირებადია. BBR მხოლოდ ოდნავ აუმჯობესებს კავშირის გამტარობას, რადგან YouTube უკვე ადაპტირებს ნაკადის სიჩქარეს BtlBw- ზე დაბლა, რათა შეამციროს ზედმეტი ქსელის ბუფერიზაცია და ხელახალი ბუფერიზაცია. აქაც კი, BBR ამცირებს საშუალო RTT- ს საშუალო მაჩვენებელს მსოფლიოში 53% -ით და 80% -ზე მეტს განვითარებად ქვეყნებში.

დიაგრამა 9 გვიჩვენებს RTT– ს საშუალო გაუმჯობესებას BBR და CUBIC– ის 200 მილიონზე მეტი YouTube ვიდეოს ნახვის შემდეგ, რომელიც იზომება ხუთი კონტინენტის მასშტაბით ერთი კვირის განმავლობაში. მსოფლიოში 7 მილიარდი მობილური კავშირის ნახევარზე მეტია 2.5G 8Kbps- დან 114Kbps, კარგად დოკუმენტირებული პრობლემები პაკეტების დაკარგვის შეშუპების კონტროლის ტექნიკასთან დაკავშირებით, რომლებიც ბუფერებზე გადავსებას იწვევს. ამ სისტემებში ჩიხი ჩვეულებრივ არის SGSN (ემსახურება GPRS მხარდაჭერის კვანძს) და მობილურ მოწყობილობას შორის. SGSN პროგრამა მუშაობს სტანდარტულ კომპიუტერულ პლატფორმაზე, დიდი RAM– ით, ხშირად მეგაბაიტიანი ბუფერით ინტერნეტსა და მობილურ მოწყობილობას შორის. ნახაზი 10 ადარებს (იმიტირებულ) SGSN შეყოვნებას ინტერნეტსა და მობილურს შორის BBR და CUBIC– სთვის. ჰორიზონტალური ხაზები აღნიშნავს ერთ-ერთ სერიოზულ შედეგს: TCP ეგუება დიდხანს RTT შეფერხებას, გარდა SYN პაკეტისა, რომელიც იწყებს კავშირს, ოპერაციული სისტემიდან გამომდინარე ფიქსირდება დროის შეყოვნება. როდესაც მობილური მოწყობილობა იღებს დიდი რაოდენობით მონაცემებს (მაგალითად, პროგრამული ავტომატური განახლებიდან) დიდი ბუფერული SGSN– ის საშუალებით, მოწყობილობას არ შეუძლია დაამყაროს რაიმე კავშირი ინტერნეტში, სანამ რიგი არ გათავისუფლდება (SYN ACK გადაიდო უფრო მეტი ვიდრე SYN– ის ფიქსირებული ვადა) ...


სურათი 9

დიაგრამა 10 გვიჩვენებს საშუალო RTT ცვლილებებს სტაბილურ მდგომარეობაში და ბუფერულ ზომასთან შედარებით 128 კბ / წმ და 40 მმ კავშირით რვა BBR (მწვანე) ან CUBIC (წითელი) ნაკადთან. BBR ინარჩუნებს რიგს მინიმალურ მნიშვნელობებზე, მიუხედავად ბოთლის ბუფერის ზომისა და აქტიური ძაფების რაოდენობისა. CUBIC ნაკადები ყოველთვის ავსებს ბუფერულს, ამიტომ შეყოვნება ხაზობრივად იზრდება ბუფერის ზომის შესაბამისად.


სურათი 10

ადაპტაციური ზოლი მობილურ ფიჭურში

ფიჭური სისტემები თითოეული მომხმარებლისთვის გარკვეულ სიჩქარეს ადაპტირებს მოთხოვნის პროგნოზის საფუძველზე, რაც ითვალისწინებს ამ მომხმარებლისთვის განკუთვნილი პაკეტის რიგს. ადრეული BBR– ები შექმნილია ძალიან მცირე რიგების შესაქმნელად, რამაც გამოიწვია კავშირი დაბალ სიჩქარეზე. ProbeBW– ს პიკური pacing_gain– ის გაზრდამ და რიგების გაზრდამ გამოიწვია ნაკლები შეფერხებული კავშირები. ეს ზოგიერთ ქსელში დიდ ადაპტაციას აჩვენებს. ამჟამინდელი პიკის მომატების მნიშვნელობით, CUBIC– სთან შედარებით არ ხდება დეგრადაცია არცერთ ქსელში.

დაგვიანებული და დაჭიმული აქს პაკეტები

ფიჭური, WiFi და ფართოზოლოვანი ქსელები ხშირად აგვიანებენ და აგროვებენ ack პაკეტებს. როდესაც ფრენა შემოიფარგლება მხოლოდ ერთი BDP– ით, ეს იწვევს ჩერდებას, ამცირებს გამტარობას. ProbeBW– ს cwnd_gain– ის თანაფარდობის გაზრდა ორზე საშუალებას იძლევა გლუვი გადაცემა გაგრძელდეს მიწოდების პროგნოზირებული სიჩქარით, მაშინაც კი, როდესაც ack პაკეტები გადაიდო ერთი RTT– ით. ეს მეტწილად ხელს უშლის ავარიებს.

ამჟამინდელი ვედროების შემზღუდველები

BBR– ის თავდაპირველმა შემოტანამ YouTube– ზე აჩვენა, რომ მსოფლიოს ინტერნეტ – პროვაიდერების უმეტესობა უგულებელყოფს ტრაფიკს ამჟამინდელი bucket rate limiters– ით. ჩვეულებრივ, ვედრო სავსეა კავშირის დასაწყისში, ამიტომ BBR– მა იცის ძირითადი ქსელის BtlBw პარამეტრი. როგორც კი ვედრო დაცარიელდება, მაშინ ყველა პაკეტი, რომლებიც უფრო სწრაფად გაიგზავნება, ვიდრე (BtlBw– ზე დაბალია), ვედროთა შევსების სიჩქარე, გაუქმდება. საბოლოოდ BBR გაიგებს მიწოდების ამ ახალ მაჩვენებელს, მაგრამ ProbeBW– ს ველოსიპედით სეირნობა იწვევს მუდმივ ზომიერ დანაკარგებს. იმისათვის, რომ შემცირდეს დინების დიაპაზონის ზარალის დაკარგვა და ამ დანაკარგის გამოყენების შეფერხების ზრდა, ჩვენ BBR– ში დავამატეთ სპეციალური კლიპერის დეტექტორი და გამოკვეთილი კლიპერის მოდელი. ჩვენ ასევე აქტიურად ვიკვლევთ სიჩქარის შემზღუდველი ზიანის აღმოსაფხვრელად საუკეთესო გზებს.

პაკეტების დაკარგვის შეშუპების კონტროლის მეთოდების კონკურენციას

BBR იკვებება გამჭვირვალე მხარის გამტარობის გულწრფელობაში გაზიარებით, იქნება ეს კონკურენცია სხვა BBR ნაკადებთან ან ნაკადებთან, რომლებიც განპირობებულია პაკეტების დაკარგვის შეშუპების კონტროლის ტექნიკით. მაშინაც კი, როდესაც ეს უკანასკნელი შეავსებს არსებულ ბუფერს, ProbeBW მაინც საიმედოდ აფასებს BtlBw შეფასებას სამართლიანი გაყოფისკენ და ProbeRTT თვლის, რომ RTProp ხარჯთაღრიცხვა საკმარისად მაღალია, რათა თანმიმდევრული იყოს სამართლიანი გაყოფა. ამასთან, უნებართვო როუტერის ბუფერები, რომლებიც ზოგიერთ BDP– ს გადააჭარბებს, ძველ მეძუძურ შეშუპების კონტროლთან დაკავშირებულ კონკურენტებს აიძულებენ რიგის გაბერვას და მიიღონ თავიანთი წილის მეტს. ამის აღმოფხვრა აქტიური კვლევის კიდევ ერთი სფეროა.

დასკვნა

შეშუპების მართვის გადახედვა უდიდესი სარგებელია. იმის ნაცვლად, რომ გამოიყენოთ ისეთი მოვლენები, როგორიცაა ბუფერის დაკარგვა ან ბუფერის ჩამორთმევა, რომლებიც მხოლოდ სუსტად კავშირშია შეშუპებასთან, BBR იწყება კლეინროკის ფორმალური შეშუპების მოდელით და მასთან დაკავშირებული ოპტიმალური საოპერაციო წერტილით. შემაშფოთებელი დასკვნა იმის შესახებ, რომ ”შეუძლებელია” ერთდროულად განისაზღვროს კრიტიკული შეყოვნებისა და გამტარუნარიანობა, გვერდის ავლით აკვირდება, რომ მათი ერთდროულად პროგნოზირება შეიძლება. შემდეგ გამოიყენება კონტროლის სისტემების უახლესი მიღწევები და შეფასების თეორია, რათა შეიქმნას მარტივი განაწილებული საკონტროლო ციკლი, რომელიც უახლოვდება ოპტიმალს ქსელის სრულად გამოყენებით მცირე რიგის შენარჩუნებით. Google- ის BBR დანერგვა ხელმისაწვდომია ღია კოდის Linux ბირთვში და დეტალური ინფორმაცია მოცემულია ამ სტატიის დანართში.

BBR ტექნოლოგია გამოიყენება Google B4 ხერხემალზე, აუმჯობესებს გამტარობას სიდიდის ბრძანებებით CUBIC– ზე. ის ასევე განლაგებულია Google– სა და YouTube– ის ვებ – სერვერებზე, რაც მნიშვნელოვნად ამცირებს შეყოვნებას ხუთივე კონტინენტზე, რომლებიც დღეს არის გამოცდილი და განსაკუთრებით ძლიერია განვითარებად ქვეყნებში. BBR ტექნოლოგია მუშაობს მხოლოდ გამგზავნის მხარეს და არ საჭიროებს პროტოკოლის, მიმღების ან ქსელის ცვლილებებს, რაც საშუალებას იძლევა ეტაპობრივად განლაგდეს. ეს დამოკიდებულია მხოლოდ RTT და პაკეტის მიწოდების შეტყობინებებზე, ასე რომ, ის შეიძლება გამოყენებულ იქნას უმეტესად ინტერნეტ ტრანსპორტის პროტოკოლებში.

მადლობა

ავტორები მადლიერნი არიან Len Kleinrock- ისთვის, თუ როგორ უნდა გაუმკლავდეს შეშუპებას. ჩვენ ვალდებული ვართ Larry Brakmo- ს ვეგასისა და New Vegas- ის შეშუპების კონტროლის სისტემებზე პიონერული მუშაობისთვის, რომლებიც მოსალოდნელი იყო BBR- ის მრავალი ელემენტისა და მისი რჩევისა და მითითებებისათვის BBR- ის ადრეული განვითარების დროს. ასევე მადლობას ვუხდით ერიკ დუმაზეტს, ნანდიტა დუკკიპატს, ჟანა აიენგარს, იან სვეტს, მ. ფიც ნოველანს, დევიდ ვეტერალს, ლეონიდს. ლეონიდას კონტოთანასისი, ამინ ვაჰდატი და Google BwE და YouTube ინფრასტრუქტურის გუნდი ფასდაუდებელი დახმარებისა და მხარდაჭერისთვის.

დანართი - დეტალური აღწერა

სახელმწიფო მანქანა თანმიმდევრული გამოკვლევისთვის

Pacing_gain აკონტროლებს რამდენად სწრაფად იგზავნება პაკეტები BtlBw– სთან მიმართებაში და ეს არის გასაღები ჭკვიანი BBR მახასიათებლისთვის. როდესაც pacing_gain ერთზე მეტია, ფრენის ზრდა იზრდება და პაკეტებს შორის უფსკრული მცირდება, რაც ბმულს გადაადგილებს მარჯვენა მხარეს ნახაზზე 1. როდესაც pacing_gain ერთზე ნაკლებია, ხდება საპირისპირო ეფექტი, ბმული გადადის მარცხნივ.

BBR იყენებს pacing_gain- ს მარტივი თანმიმდევრული მდგომარეობის მგრძნობიარე აპარატის განსახორციელებლად, რომელიც მონაცვლეობს ტესტირებას უფრო დიდი სიჩქარისთვის და ტესტირებას მოკლე ორმაგი გავლის დროისთვის. (ქვედა გამტარობის შემოწმება არ არის აუცილებელი, რადგან მას ავტომატურად ასრულებს BtlBw msx ფილტრი: ახალი გაზომვები ასახავს ვარდნას, ამიტომ BtlBw გამოასწორებს თავს, როგორც კი ძველი ძველი ცვლილებები ამოიღება ფილტრიდან ვადის გასვლის შემდეგ. RTprop min ფილტრი ანალოგიურად უმკლავდება მიწოდების გზის ზრდას) ...

თუ ბოთლის გამტარუნარიანობა იზრდება, BBR– მა უფრო სწრაფად უნდა გამოაგზავნოს მონაცემები მის გამოსავლენად. ანალოგიურად, თუ პაკეტის რეალური ორმაგი გადაცემის დრო შეიცვლება, ეს ცვლის BDP– ს და ამიტომ BDP– მ უნდა გააგზავნოს მონაცემები უფრო ნელა, რათა შეფუთვა იყოს BDP– ზე ქვემოთ, ახალი RTprop– ის გასაზომად. ამიტომ, ამ ცვლილებების დასადგენად ერთადერთი გზაა ექსპერიმენტი, უფრო სწრაფად გაგზავნა BtlBw– ის ზრდის შესამოწმებლად, ან უფრო ნელა გაგზავნა RTprop– ის შემცირების შესამოწმებლად. ამ ექსპერიმენტების სიხშირე, მოცულობა, ხანგრძლივობა და სტრუქტურა იცვლება იმის მიხედვით, რაც უკვე ცნობილია (კავშირის დაწყება ან სტაბილური მდგომარეობა) და პროგრამის ქცევა, რომელიც აგზავნის მონაცემებს (წყვეტილი ან მუდმივი).

Მშვიდი მდგომარეობა

BBR ნაკადები უმეტეს დროს ატარებენ ProbeBW მდგომარეობაში, ზონდირებას უტარებენ მეთოდს ე.წ. მიიღეთ ველოსიპედი, რაც ეხმარება BBR ნაკადებს მიაღწიონ მაღალ გამტარუნარიანობას, რიგის შეყოვნების შეჩერებას და სამართლიანი წილის კონვერგენციას. გამოყენებით მიიღეთ ველოსიპედიBBR ციკლის საშუალებით ხდება მთელი რიგი მნიშვნელობებისა მოგებისთვის pacing_gain... რვა ციკლის ფაზები გამოიყენება შემდეგი მნიშვნელობებით: 5/4, 3/4, 1, 1, 1, 1, 1, 1. თითოეული ეტაპი ჩვეულებრივ გრძელდება პროგნოზირებული RTprop– ისთვის. ეს დიზაინი საშუალებას აძლევს კოეფიციენტის მარყუჟს, პირველ რიგში გამოიკვლიოს არხი უფრო მეტი სიჩქარის სიდიდით pacing_gain 1.0-ზე მეტი, შემდეგ კი გავანაწილოთ ნებისმიერი რიგით pacing_gain იგივე თანხით 1.0-ზე ნაკლები და შემდეგ იმოძრავეთ კრუიზირების სიჩქარით, კოეფიციენტების მოკლე გატეხვით, ზუსტად 1.0. საშუალო ფენა ყველა ფაზისთვის არის 1.0, რადგან ProbeBW საშუალოდ ცდილობს გაათანაბროს არსებული გამტარობა და შესაბამისად შეინარჩუნოს მაღალი გამტარობის გამოყენება რიგის გაზრდის გარეშე. გაითვალისწინეთ, რომ თუმცა თანაფარდობის ციკლები იცვლება pacing_gainმაგრამ ღირებულება cwnd_gain ყოველთვის რჩება ორის ტოლი, ვინაიდან დაგვიანებული და გახანგრძლივებული აქს პაკეტები შეიძლება გამოჩნდეს ნებისმიერ დროს (იხილეთ თავი დაგვიანებული და გახანგრძლივებული აქს პაკეტების შესახებ).

უფრო მეტიც, ნაკადის შერევისა და გამტარუნარიანობის სამართლიანი განაწილების გასაუმჯობესებლად და რიგში შესამცირებლად, როდესაც მრავალი BBR იზიარებს ბორკილს, BBR შემთხვევით ცვლის ProbeBW ციკლის ფაზებს, პირველი შემთხვევის შემთხვევით არჩევით ყველა, გარდა 3/4. რატომ არ იწყება ციკლი 3/4? ამ თანაფარდობის მნიშვნელობის მთავარი მიზანი არის ნებისმიერი რიგის დაშლა, რომელიც შეიძლება შეიქმნას 5/4 თანაფარდობის გამოყენებისას, როდესაც არხი უკვე სავსეა. როდესაც პროცესი ტოვებს Drain ან ProbeRTT მდგომარეობას და შემოდის ProbeBW, რიგი არ დგება, ამიტომ 3/4 ფაქტორი არ ასრულებს თავის დავალებას. 3/4-ის გამოყენებას ამ კონტექსტში აქვს მხოლოდ უარყოფითი ეფექტი: ამ ფაზაში არხის შევსება იქნება 3/4 და არა 1. ამრიგად, ციკლის დასაწყისი 3/4-დან მხოლოდ უარყოფით გავლენას ახდენს, მაგრამ არ ახდენს დადებით გავლენას და მდგომარეობაში შესვლის შემდეგ ProbeBW– ს საკმაოდ დიდი დრო სჭირდება ნებისმიერი კავშირის დაწყებისთანავე, შემდეგ BBR იყენებს ამ მცირე ოპტიმიზაციას.

BBR ძაფები ერთდროულად მუშაობს, რათა პერიოდულად დაიცვან ბორცვის რიგი რიგის გამოყენებით ProbeRTT. თვით ProbeRTT– ს გარდა სხვა სახელმწიფოში, თუ RTProp– ის შეფასება არ განახლდა (მაგალითად, მცირე RTT– ის გაზომვით) 10 წამზე მეტი ხნის განმავლობაში, მაშინ BBR შედის ProbeRTT მდგომარეობაში და ამცირებს cwnd– ს ძალიან მცირე მნიშვნელობამდე (ოთხი პაკეტი). საჰაერო ხომალდის პაკეტების მინიმალური რაოდენობის მინიმუმ 200 მგ და ერთი გასროლის დროს, BBR გამოდის ProbeRTT მდგომარეობიდან და შედის Startup– ში ან ProbeBW– ში, იმისდა მიხედვით, არხი უკვე სავსეა.

BBR მიზნად ისახავს დროის უმეტეს ნაწილს (დაახლოებით 98%) ProbeBW– ში და დანარჩენ დროს ProbeRTT– ში გასაშვებად, გაცვლითი ურთიერთობების საფუძველზე. ProbeRTT მდგომარეობა საკმარისად დიდხანს გრძელდება (მინიმუმ 200 მმ), რათა სხვადასხვა RTT– ს ძაფებს ჰქონდეთ ProbeRTT თანხვედრილი სახელმწიფოები, მაგრამ ამავდროულად ის გრძელდება საკმარისად მოკლე დროში, რათა შეამციროს ეფექტურობის დეგრადაცია დაახლოებით ორ პროცენტამდე (200 მმ / 10 წამი) ) RTprop ფილტრის ფანჯარა (10 წამი) საკმარისად მცირეა იმისათვის, რომ სწრაფად შეიტანოს ცვლილებები ტრეფიკის დონეზე ან მარშრუტის ცვლილებები, მაგრამ საკმარისად დიდია ინტერაქტიული პროგრამებისთვის. ასეთი პროგრამები (მაგალითად, ვებ – გვერდები, დისტანციური პროცედურის ზარები, ვიდეოკლიპები) ხშირად ავლენენ ბუნების ბუნებრივ დუმილს ან მცირე აქტივობას ამ ფანჯრის ფანჯრებში, სადაც ნაკადის სიჩქარე საკმარისად ნელია ან საკმარისად გრძელია რიგის დასაშლელად ბორკილზე. შემდეგ RTprop ფილტრი არეგულირებს ამ RTprop გაზომვებს ოპორტუნისტულად და RTProp განახლდება ProbeRTT– ს გამოყენების გარეშე. ამრიგად, ნაკადებს, როგორც წესი, საჭიროა მხოლოდ სიჩქარის 2% -ის შეწირვა, თუ მრავალი ნაკადი უხვად ავსებს არხს მთელ RTProp ფანჯარაში.

სტარტაპის ქცევა

როდესაც BBR თემა იწყება, ის ასრულებს თავის პირველ (და უსწრაფეს) რიგით რიგის გამოკვლევას / დაცლას. ქსელის გამტარობა იცვლება 10 12 დიაპაზონში - რამდენიმე ბიტიდან 100 გიგაბიტამდე წამში. BtlBw- ის მნიშვნელობის გასაგებად, გიგანტური დიაპაზონის ცვლილებისთვის, BBR ასრულებს ორობით ძიებას სიჩქარის სივრცეში. ის ძალიან სწრაფად პოულობს BtlBw- ს (პაკეტების ორმაგი გადაცემა), მაგრამ ძიების ბოლო ეტაპზე 2BDP- ში რიგის შექმნის ხარჯზე. ძებნა ხორციელდება Startup მდგომარეობაში BBR– ში, ხოლო შექმნილი რიგის დაცლა ხორციელდება Drain მდგომარეობაში.

პირველი, Startup ექსპონენციალურად ზრდის მონაცემების გაგზავნის სიჩქარეს, აორმაგებს მას თითოეულ რაუნდზე. ამ სწრაფი ზონდირების მისაღწევად ყველაზე მოდუნებული გზით, მოგების მნიშვნელობების დაწყებისას pacing_gain და cwnd_gain მითითებულია მინიმალური მნიშვნელობით, რომელიც საშუალებას გაძლევთ გაორმაგოთ ატვირთვის სიჩქარე თითოეული რაუნდისთვის. როგორც კი არხი შეივსება, კოეფიციენტია cwnd_gain ზღუდავს რიგის ზომას მნიშვნელობამდე.

კავშირის საწყისი მდგომარეობის დროს, BBR მსჯელობს, არის თუ არა არხი სავსე BtlBw შეფასების პლატოს ძებნით. თუ გაირკვა, რომ რამდენიმე (სამი) რაუნდი გაიარა, სადაც მიწოდების სიჩქარის გაორმაგების მცდელობა ნამდვილად არ ზრდის სიჩქარის დიდ ზრდას (25% -ზე ნაკლები), მაშინ იგი მიიჩნევს, რომ მან მიაღწია BtlBw- ს, ასე რომ, ის გამოდის Startup მდგომარეობიდან და შედის Drain მდგომარეობაში. BBR ელოდება სამ ტურს, რათა მიიღოს დამაჯერებელი მტკიცებულება იმისა, რომ გამგზავნის მიერ მიწოდებული სიჩქარის პლატო არ არის ფანჯრის დროებითი ეფექტი. სამი რაუნდის დალოდება იძლევა საკმარის დროს მიმღების მხრიდან ავტომატური დასარეგულირებლად მიმღების ფანჯრის გასახსნელად და გამგზავნის მიერ BBR– ს მიერ BtlBw– ს გაზრდის საჭიროების დასადგენად: პირველ ტურში, მიმღები ფანჯრის ავტომატურად რეგულირების ალგორითმი ზრდის მიმღების ფანჯარს; მეორე ტურში, გამომგზავნი ავსებს გაფართოებულ მიმღების ფანჯარს; მესამე ტურში, გამგზავნი იღებს ნიმუშებს მიწოდების გაზრდილი სიჩქარით. ამ სამმრგვლიანმა ლიმიტმა დაამტკიცა YouTube- ის განხორციელებაში.

გადინების მდგომარეობაში, BBR ალგორითმი ცდილობს სწრაფად გააცალა რიგი, რომელიც ჩამოყალიბდა კავშირის დაწყების მდგომარეობაში pacing_gain საპირისპირო მნიშვნელობებით, ვიდრე Startup მდგომარეობაში. როდესაც ფრენის პაკეტების რაოდენობა ემთხვევა BDP– ის შეფასებას, ეს ნიშნავს, რომ BBR მიიჩნევს, რომ რიგი მთლიანად ცარიელია, მაგრამ არხი კვლავ სავსეა. შემდეგ BBR ტოვებს გადინების მდგომარეობას და შემოდის ProbeBW.

გაითვალისწინეთ, რომ BBR კავშირის დაწყება და ნელი დაწყების CUBIC ორივემ შეისწავლა გამჭოლი ტვინის გამტარუნარიანობა, გაორმაგდა გაგზავნის სიჩქარე თითოეულ რაუნდზე. ამასთან, ისინი არსებითად განსხვავდებიან. პირველი, BBR უფრო საიმედოა შესაძლო გამტარობის განსაზღვრისას, რადგან ის არ წყვეტს ძიებას პაკეტის დაკარგვის ან შეყოვნების გაზრდის შემთხვევაში (CUBIC's Hystart– ის მსგავსად). მეორეც, BBR შეუფერხებლად ზრდის გაგზავნის სიჩქარეს, ხოლო CUBIC– ს აქვს პაკეტების პაკეტური ტური თითოეულ ტურზე (თუნდაც ნაბიჯ-ნაბიჯით), შემდეგ კი დუმილის პერიოდი. დიაგრამა 4 გვიჩვენებს ფრენის დროს პაკეტების რაოდენობას და დაფიქსირებულ RTT- ს BBR და CUBIC– ის თითოეული მადლობის შეტყობინებისთვის.

დროებით სიტუაციებზე რეაგირება

ქსელის გზას და მის გასწვრივ მოძრაობის ტრაფიკს შეუძლია მოულოდნელი დრამატული ცვლილებები განიცადოს. იმისათვის, რომ შეუფერხებლად და საიმედოდ მოერგოს მათ, და ასევე შეამციროს პაკეტების დაკარგვა ამ სიტუაციებში, BBR იყენებს მრავალ სტრატეგიას თავისი ძირითადი მოდელის განსახორციელებლად. პირველი, BBR მიიჩნევს, როგორც სამიზნე, რომლის მიმართაც მიმდინარე cwnd ფრთხილად უახლოვდება ქვემოდან, იზრდება cwnd ყოველ ჯერზე არაუმეტეს მონაცემთა რაოდენობა, რომლისთვისაც გაგზავნილი იქნა მიწოდების დასტური. მეორე, რეტრანსლირების შეყოვნებით, რაც ნიშნავს, რომ გამგზავნი ფრენის დროს ყველა პაკეტს დაკარგულად მიიჩნევს, BBR კონსერვატიულად ამცირებს cwnd ერთ პაკეტამდე და აგზავნის ერთ პაკეტს (ისევე, როგორც პაკეტების დაკარგვის შეშუპების კონტროლის ალგორითმები, როგორიცაა CUBIC). ყოველივე ამის შემდეგ, როდესაც გამგზავნმა შეამჩნია, რომ პაკეტი დაიკარგა, მაგრამ ფრენებში ისევ პაკეტებია, დანაკარგის აღდგენის პროცესის პირველ ეტაპზე, BBR დროებით ამცირებს გაგზავნის სიჩქარეს მიწოდების მიმდინარე მაჩვენებელზე; ზარალის აღდგენის მეორე და მომდევნო რაუნდებზე, იგი ადასტურებს, რომ გაგზავნის სიჩქარე არასდროს აღემატება მიწოდების მიმდინარე მაჩვენებელს ორმაგზე მეტი. ეს მნიშვნელოვნად ამცირებს გარდამავალ ზარალს, როდესაც BBR შეხვდება სიჩქარის შემზღუდველებს ან კონკურენციას უწევს სხვა ნაკადებს BDP– ის ზომის ბუფერში.

ბმულები

1. Abrahamsson, M. 2015. TCP ACK ჩახშობა. IETF AQM საფოსტო სია;

ღია კოდის პროგრამული უზრუნველყოფა უმსხვილესი ვებსაიტების ძირითადი ელემენტი გახდა. ამ ვებ – გვერდების ზრდასთან ერთად, საუკეთესო პრაქტიკა და მათი არქიტექტურის სახელმძღვანელო პრინციპები გამოჩნდა. ეს თავი მიზნად ისახავს რამდენიმე ძირითადი საკითხის გაშუქებას, რომელთა გათვალისწინებაა შესაძლებელი დიდი ვებსაიტების შექმნისას, აგრეთვე ზოგიერთი ძირითადი კომპონენტი, რომლებიც გამოიყენება ამ მიზნების მისაღწევად.

ამ თავის ძირითადი ყურადღება გამახვილებულია ვებ სისტემების ანალიზზე, თუმცა ზოგიერთი მასალის ექსტრაპოლაცია შესაძლებელია სხვა განაწილებულ სისტემებზე.

1.1 განაწილებული ვებ სისტემების მშენებლობის პრინციპები

კონკრეტულად რას ნიშნავს მასშტაბური ვებსაიტის ან პროგრამის შექმნა და მართვა? პრიმიტიულ დონეზე, ეს უბრალოდ აკავშირებს მომხმარებლებს დისტანციურ რესურსებთან ინტერნეტით. და რესურსები, ან იმ რესურსებზე წვდომა, რომლებიც გაფანტულია მრავალ სერვერზე, არის ბმული, რომელიც ვებსაიტს მასშტაბურ ხასიათს აძლევს.

ცხოვრების უმეტეს ნაწილის მსგავსად, თქვენი ვებ – სერვისის შექმნისთვის დაგეგმვისთვის დროის გამოყოფა კიდევ უფრო დაგეხმარებათ; დიდი ვებსაიტების ზოგიერთი მოსაზრებისა და ურთიერთგაგების გააზრება შეიძლება გადაიხადოს უფრო ჭკვიან გადაწყვეტილებებში უფრო მცირე ვებსაიტების შექმნისას. აქ მოცემულია რამდენიმე ძირითადი პრინციპი, რომელიც გავლენას ახდენს ფართომასშტაბიანი ვებ სისტემების დიზაინზე:

  • ხელმისაწვდომობა: ვებგვერდის განახლება კრიტიკულია მრავალი კომპანიის რეპუტაციისა და ფუნქციონირებისთვის. რამდენიმე მსხვილი ონლაინ საცალო მაღაზიისთვის, რამდენიმე წუთის განმავლობაში მიუწვდომლობაც კი შეიძლება ათასობით ან მილიონობით დოლარის დაკარგვით დასრულდეს. ამრიგად, მათი სისტემების შემუშავება, რომლებიც ყოველთვის ხელმისაწვდომია და მდგრადია წარუმატებლობისთვის, წარმოადგენს როგორც ფუნდამენტურ ბიზნესს, ასევე ტექნოლოგიურ მოთხოვნილებას. განაწილებულ სისტემებში მაღალი ხელმისაწვდომობა მოითხოვს ძირითადი კომპონენტების სიჭარბის ფრთხილად განხილვას, სისტემის ნაწილობრივი ჩავარდნებიდან სწრაფად აღდგენას და პრობლემების წარმოქმნისას გლუვი სიჭარბის შემცირებას.
  • Შესრულება: ვებსაიტების შესრულება მნიშვნელოვანი მეტრული გახდა საიტების უმეტესობისთვის. ვებ – გვერდის სიჩქარე გავლენას ახდენს მომხმარებლის გამოცდილებასა და კმაყოფილებაზე, აგრეთვე საძიებო სისტემის რეიტინგზე - ფაქტორი, რომელიც უშუალოდ მოქმედებს აუდიტორიის შენარჩუნებაზე და შემოსავალზე. შედეგად, მთავარია შექმნას სისტემა, რომელიც ოპტიმიზირებულია სწრაფი რეაგირებისა და დაბალი შეყოვნებისთვის.
  • საიმედოობა: სისტემა უნდა იყოს ისეთი ძლიერი, რომ მონაცემთა სპეციფიკური მოთხოვნა თანმიმდევრულად დააბრუნოს კონკრეტული მონაცემები. მონაცემთა შეცვლის ან განახლების შემთხვევაში, იმავე მოთხოვნით უნდა დააბრუნოთ ახალი მონაცემები. მომხმარებლებმა უნდა იცოდნენ, არის რამე ჩაწერილი სისტემაში ან ინახება მასში, მაშინ ისინი დარწმუნებულნი იქნებიან, რომ იგი დარჩება მონაცემების მოგვიანებით მოძიების შესაძლებლობისთვის.
  • მასშტაბურობა: როდესაც საქმე ეხება დიდ განაწილებულ სისტემას, ზომა მხოლოდ ერთი პუნქტია სიაში გასათვალისწინებელი. არანაკლებ მნიშვნელოვანია გამტარუნარიანობის გაზრდის მცდელობები დიდი მოცულობის დატვირთვის გასამკლავებლად, რომელსაც ხშირად უწოდებენ სისტემის მასშტაბურობას. მასშტაბებადობა შეიძლება გულისხმობდეს სისტემის სხვადასხვა პარამეტრს: დამატებითი ტრაფიკის რაოდენობას, რომელსაც შეუძლია გაუმკლავდეს, რამდენად ადვილია შენახვის მოცულობის გაზრდა, ან კიდევ რამდენი სხვა ოპერაციის დამუშავებაა შესაძლებელი.
  • კონტროლირებადი: სისტემის შემუშავება, რომელიც მარტივია მუშაობისთვის, კიდევ ერთი მნიშვნელოვანი ფაქტორია. სისტემის მართვადობა უტოლდება ოპერაციების "შენარჩუნებასა" და "განახლებულობის" მასშტაბურობას. მართვადობის უზრუნველსაყოფად საჭიროა განიხილონ დიაგნოზისა და პრობლემების გააზრების, განახლების ან მოდიფიკაციის სიმარტივის, ახირებული სისტემის მოქმედება. (ანუ მუშაობს ისე, როგორც მოსალოდნელი იყო ჩავარდნების გარეშე) გამონაკლისები?)
  • ღირებულება: ღირებულება მნიშვნელოვანი ფაქტორია. ეს აშკარად შეიძლება მოიცავდეს აპარატურისა და პროგრამული უზრუნველყოფის ხარჯებს, მაგრამ ასევე მნიშვნელოვანია სისტემის სხვა განსახორციელებლად და შენარჩუნებისთვის საჭირო სხვა ასპექტების გათვალისწინებაც. გათვალისწინებულია სისტემის მშენებლობისთვის დეველოპერის დრო, ოპერატიული ძალისხმევა სისტემის გასაშვებად და ტრენინგის საკმარისი დონეც კი. ღირებულება არის საკუთრების საერთო ღირებულება.

თითოეული ეს პრინციპი განაწილებული ვებ – არქიტექტურის დიზაინში გადაწყვეტილების მიღების საფუძველია. ამასთან, მათ ერთმანეთთან კონფლიქტიც შეუძლიათ, რადგან ერთის მიზნების მიღწევა სხვების უგულებელყოფის ხარჯზე ხდება. მარტივი მაგალითი: მრავალი სერვერის უბრალოდ დამატების არჩევა, როგორც შესრულების (მასშტაბურობის) გადაწყვეტა, გაზრდის მენეჯმენტის ხარჯებს (თქვენ უნდა იმუშაოთ დამატებითი სერვერით) და სერვერის შესყიდვით.

ნებისმიერი სახის ვებ – აპლიკაციის შემუშავებისას მნიშვნელოვანია გავითვალისწინოთ ეს ძირითადი პრინციპები, თუნდაც იმის დადასტურება, რომ პროექტმა შეიძლება შემოგთავაზოთ ერთი ან მეტი მათგანი.

1.2 საფუძვლები

სისტემის არქიტექტურის განხილვისას არსებობს რამდენიმე საკითხი, რომელთა ხაზგასმა უნდა იყოს, მაგალითად, რომელი კომპონენტების გამოყენება ღირს, როგორ ერგება ერთმანეთს და რა ურთიერთგაგების გაწევაა შესაძლებელი. ფულის ინვესტირება მასშტაბირებაში, ამის აშკარა საჭიროების გარეშე, არ შეიძლება ჩაითვალოს ბიზნესის ჭკვიან გადაწყვეტილებად. ამასთან, დაგეგმვის გარკვეულ წინასწარხედვას შეუძლია მნიშვნელოვნად დაზოგოს დრო და რესურსი მომავალში.

ეს სექცია ფოკუსირებულია რამდენიმე ძირითად ფაქტორზე, რომლებიც კრიტიკულია თითქმის ყველა მსხვილი ვებ – პროგრამისთვის: მომსახურება,
ზედმეტი, სეგმენტაციადა უარის დამუშავება... თითოეული ეს ფაქტორი მოიცავს არჩევანს და ურთიერთგაგებას, განსაკუთრებით წინა ნაწილში აღწერილი პრინციპების კონტექსტში. მოდით მოვიყვანოთ მაგალითი განმარტებისთვის.

მაგალითი: გამოსახულების ჰოსტინგის პროგრამა

თქვენ ალბათ აქამდე განათავსეთ სურათები ინტერნეტში. დიდი საიტებისთვის, რომლებიც მრავალ სურათს ინახავენ და აწვდიან, არსებობს გამოწვევები ეფექტური, უაღრესად საიმედო არქიტექტურის შესაქმნელად, რომელსაც გააჩნია დაბალი რეაგირების შეყოვნება (სწრაფი მოძიება).

წარმოიდგინეთ სისტემა, სადაც მომხმარებლებს შეუძლიათ თავიანთი სურათების ატვირთვა ცენტრალურ სერვერზე და სურათების მოთხოვნა შესაძლებელია საიტის ბმულის ან API- ს საშუალებით, მსგავსი Flickr ან Picasa. აღწერის გამარტივების მიზნით, ჩავთვალოთ, რომ ამ აპლიკაციას ორი მთავარი ამოცანა აქვს: სერვერზე სურათების ატვირთვის (ჩაწერის) და სურათების მოთხოვნის შესაძლებლობა. რა თქმა უნდა, ეფექტური ჩატვირთვა მნიშვნელოვანია, მაგრამ სწრაფი მიწოდება პრიორიტეტული იქნება, როდესაც მომხმარებლები ამას ითხოვენ (მაგალითად, სურათების ჩვენება შეიძლება მოითხოვონ ვებგვერდზე ან სხვა პროგრამაში). ეს ფუნქციონალი მსგავსია, რაც ვებ სერვერს ან შინაარსის მიწოდების ქსელის (CDN) პირას სერვერს შეუძლია. CDN სერვერი, როგორც წესი, ინახავს მონაცემთა ობიექტებს მრავალ ადგილას, ისე, რომ მათი გეოგრაფიული / ფიზიკური ადგილმდებარეობა უფრო ახლოს იყოს მომხმარებლებთან, რაც უკეთეს შედეგს იწვევს.

სისტემის სხვა მნიშვნელოვანი ასპექტები:

  • შენახული სურათების რაოდენობა შეიძლება იყოს უსაზღვრო, ამიტომ ამ პერსპექტივიდან გათვალისწინებული უნდა იყოს შენახვის მასშტაბურობა.
  • დაბალი შეყოვნება უნდა იყოს სურათების გადმოსაწერად / მოთხოვნებზე.
  • თუ მომხმარებელი ატვირთავს სურათს სერვერზე, მაშინ მისი მონაცემები ყოველთვის უნდა დარჩეს სრული და ხელმისაწვდომი.
  • სისტემა უნდა იყოს მარტივი შენარჩუნება (მართვა).
  • მას შემდეგ, რაც სურათების ჰოსტინგი არ არის ძალიან მომგებიანი, სისტემა უნდა იყოს ეფექტური.

ამ დიზაინის კიდევ ერთი პოტენციური პრობლემაა ის, რომ ვებ – სერვერს, როგორიცაა Apache ან lighttpd, ჩვეულებრივ აქვს ზედა ზღვარი ერთდროული კავშირების რაოდენობაზე, რომელსაც შეუძლია გაუმკლავდეს (სტანდარტი დაახლოებით 500, მაგრამ შეიძლება ბევრად უფრო მაღალი იყოს). და მაღალი ტრაფიკი, წერს შეუძლია სწრაფად გამოიყენოს ეს ლიმიტი. მას შემდეგ, რაც კითხვები შეიძლება იყოს ასინქრონული, ან ისარგებლონ სხვა შესრულების ოპტიმიზაციით, როგორიცაა gzip ან chunking, ვებ სერვერს შეუძლია შეცვალოს საკვების მიწოდება უფრო სწრაფად და გადაერთოს კლიენტებს შორის, ემსახურება ბევრ სხვა მოთხოვნას, ვიდრე კავშირის მაქსიმალური რაოდენობა (Apache– ით ხოლო მაქსიმალური რაოდენობის 500 დაყენებული კავშირით, შესაძლებელია წამში რამდენიმე ათასი კითხვის მოთხოვნის შესრულება). სამაგიეროდ, ჩანაწერები, როგორც წესი, ინარჩუნებს ღია კავშირს ჩამოტვირთვის განმავლობაში. მაგალითად, 1 მბ ფაილის სერვერზე გადატანამ შეიძლება საშინაო ქსელების უმეტესობაში 1 წამს გასტანოს, რის შედეგადაც ვებ სერვერს მხოლოდ 500 ასეთი პარალელური ჩაწერის დამუშავება შეეძლება.


დიაგრამა 1.2: კითხვა-წერის გამოყოფა

ასეთი პოტენციური პრობლემის წინასწარ გათვალისწინება ცხადყოფს, რომ საჭიროა სურათების წაკითხვა და წერა დამოუკიდებელი სერვისებისთვის, რომლებიც ნაჩვენებია. ეს საშუალებას მოგცემთ არა მხოლოდ ინდივიდუალურად შეაფასოთ თითოეული მათგანი ინდივიდუალურად (რადგან, სავარაუდოდ, ჩვენ ყოველთვის უფრო მეტ კითხვას გავაკეთებთ, ვიდრე წერს), არამედ ასევე გავაცნობთ ინფორმაციას, თუ რა ხდება თითოეულ სამსახურში. დაბოლოს, იგი გამოკვეთს სამომავლო პრობლემებს, ამარტივებს ნელი წასაკითხი წვდომის პრობლემის დიაგნოზირებას და შეფასებას.

ამ მიდგომის უპირატესობა იმაშია, რომ ჩვენ შეგვიძლია ერთმანეთისგან დამოუკიდებლად მოვაგვაროთ პრობლემები - ფიქრის გარეშე, იმავე კონტექსტში ახალი სურათების ჩაწერისა და შეძენის აუცილებლობაზე. ორივე ეს სერვისი კვლავ იყენებს გლობალურ სურათის კორპუსს, მაგრამ კონკრეტული სერვისის სპეციფიკური მეთოდების გამოყენებისას მათ საშუალება აქვთ საკუთარი შესრულება ოპტიმიზირდნენ (მაგალითად, რიგების მოთხოვნით ან პოპულარული სურათების ქეშირებით - ამის შესახებ მოგვიანებით). როგორც ტექნიკური, ასევე ღირებულების თვალსაზრისით, თითოეული სერვისის მასშტაბირება შესაძლებელია საჭიროების მიხედვით. ეს დადებითი ფაქტორია, რადგან მათი შერწყმა და შერევა შეიძლება უნებლიედ იმოქმედოს მათ მუშაობაზე, როგორც ზემოთ აღწერილ სცენარში.

რა თქმა უნდა, ზემოთ მოყვანილი მოდელი ოპტიმალურად იმუშავებს, თუ ორი განსხვავებული წერტილი არსებობს (სინამდვილეში, ეს ძალიან ჰგავს ღრუბლოვანი მეხსიერების პროვაიდერების და შინაარსის მიწოდების ქსელების რამდენიმე განხორციელებას). ამ პრობლემების გადაჭრის მრავალი გზა არსებობს და თითოეულ შემთხვევაში შესაძლებელია კომპრომისის პოვნა.

მაგალითად, Flickr წყვეტს წაკითხვისა და წერის პრობლემას მომხმარებლების სხვადასხვა მოდულში განაწილებით, რომ თითოეულ მოდულს შეუძლია მოემსახუროს მხოლოდ შეზღუდული რაოდენობის სპეციფიკურ მომხმარებლებს, ხოლო მომხმარებლების რაოდენობის ზრდის შესაბამისად, კლასტერს დაემატება მეტი მოდული (იხილეთ Flickr მასშტაბის პრეზენტაცია).
http://mysqldba.blogspot.com/2008/04/mysql-uc-2007-presentation-file.html). პირველ მაგალითში უფრო ადვილია ტექნიკის მასშტაბირება რეალური გამოყენების დატვირთვის საფუძველზე (წაკითხვისა და წერის რაოდენობა მთელ სისტემაში), ხოლო Flickr– ის მასშტაბირება ხდება მომხმარებელთა ბაზაზე დაყრდნობით (ამასთან, ეს ითვალისწინებს თანაბარ გამოყენებას სხვადასხვა მომხმარებლებისთვის, ამიტომ საჭიროა რეზერვი). წარსულში მიუწვდომლობამ ან ერთ-ერთმა სერვისის პრობლემამ მთელი სისტემის ფუნქციონირება შეუძლებელი გახადა (მაგალითად, ფაილების წერა არავის შეუძლია), მაშინ Flickr– ის ერთ – ერთი მოდულის მიუწვდომლობა მხოლოდ მასზე ასოცირებულ მომხმარებლებზე აისახება. პირველ მაგალითში, უფრო ადვილია ოპერაციების შესრულება მთელ მონაცემთა ბაზაზე - მაგალითად, მწერლის სერვისის განახლება ახალი მეტამონაცემების ჩასატარებლად, ან სურათის ყველა მეტამონაცემების ძებნა - ხოლო Flickr– ის არქიტექტურით, თითოეული მოდულის განახლება ან ძებნა ხდებოდა (ან საძიებო სამსახური უნდა ყოფილიყო შექმნილია მეტამონაცემების დასალაგებლად, რაც სინამდვილეშია ამისთვის განკუთვნილი).

რაც შეეხება ამ სისტემებს, პანაცეა არ არსებობს, მაგრამ თქვენ ყოველთვის უნდა მიმართოთ ამ თავის დასაწყისში აღწერილ პრინციპებს: განსაზღვრეთ სისტემის საჭიროებები (დატვირთვა "წაკითხვის" ან "ჩაწერის" ოპერაციებით ან ერთდროულად, პარალელიზმის დონე, მოთხოვნები მონაცემთა ნაკრებზე, დიაპაზონზე, ცდები და ა.შ.), შეასრულოს სხვადასხვა ალტერნატივების შედარებითი შეფასებები, გააცნობიეროს სისტემის პოტენციური უკმარისობის პირობები და შეიმუშაოს უკმარისობის ყოვლისმომცველი გეგმა.

ზედმეტი

ელეგანტურად რომ გაუმკლავდეს წარუმატებლობას, ვებ – არქიტექტურას უნდა ჰქონდეს ჭარბი სერვისები და მონაცემები. მაგალითად, თუ ფაილში მხოლოდ ერთი ასლია შენახული ერთ სერვერზე, ამ სერვერის დაკარგვა ნიშნავს ფაილის დაკარგვას. ძნელად შეიძლება დახასიათდეს ეს სიტუაცია და, როგორც წესი, მისი თავიდან აცილება შესაძლებელია მრავალი ასლის ან სარეზერვო ასლის შექმნით.

იგივე პრინციპი ვრცელდება მომსახურებებზე. თქვენ შეგიძლიათ დაიცვათ ერთი კვანძის უკმარისობისგან, პროგრამის ფუნქციონალური განუყოფელი ნაწილის მოწოდებით, რათა უზრუნველყოთ, რომ პროგრამის მრავალი ასლი ან ვერსია მუშაობს ერთდროულად.

სისტემაში სიჭარბის შექმნით, თქვენ შეგიძლიათ აღმოფხვრათ სუსტი წერტილები და უზრუნველყოთ ზედმეტი ან ზედმეტი ფუნქციონირება საგანგებო სიტუაციების დროს. მაგალითად, თუ არსებობს ერთი და იგივე მომსახურების ორი შემთხვევა, რომლებიც მუშაობს ”წარმოებაში” და ერთი მათგანი ვერ ან მთლიანად ან ნაწილობრივ ვერ ხერხდება, სისტემას შეუძლია გადალახოს უკმარისობა სამუშაო ასლზე გადასვლა.
გადართვა შეიძლება მოხდეს ავტომატურად ან მოითხოვდეს ხელით ჩარევას.

მომსახურების გადაჭარბების კიდევ ერთი მნიშვნელოვანი როლი ქმნის არაზიარებელი არქიტექტურა... ამ არქიტექტურით თითოეულ კვანძს შეუძლია დამოუკიდებლად იმუშაოს და უფრო მეტიც, ცენტრალური "ტვინის" არარსებობის შემთხვევაში, რომელიც აკონტროლებს მდგომარეობებს ან კოორდინაციას უწევს სხვა კვანძებს. ეს ხელს უწყობს მასშტაბურობას, ვინაიდან ახალი კვანძების დამატება არ საჭიროებს სპეციალურ პირობებსა და ცოდნას. რაც მთავარია, ამ სისტემებში არ არსებობს ავარიის კრიტიკული წერტილი, რაც მათ გაცილებით მდგრადს ხდის უკმარისობის მიმართ.

მაგალითად, ჩვენს სურათების სერვერის აპლიკაციაში, ყველა სურათს შეიძლება ჰქონდეს ზედმეტი ასლები ტექნიკის სხვაგან (იდეალურია სხვა გეოგრაფიული მდებარეობით სტიქიის დროს, მაგალითად მიწისძვრა ან მონაცემთა ცენტრში ხანძარი) და სურათების წვდომის სერვისები ზედმეტი იქნება, ყველა მათგანი პოტენციურად ემსახურება მოთხოვნებს. (Სმ. .)
წინსვლისას, დატვირთვის ბალანსერები შესანიშნავი საშუალებაა ამის შესაძენად, მაგრამ ამის შესახებ ქვემოთ.


სურათი 1.3: გადაჭარბებული სურათის ჰოსტინგის პროგრამა

სეგმენტაცია

მონაცემთა ნაკრებები შეიძლება იყოს იმდენად დიდი, რომ მათი განთავსება ვერ მოხერხდება ერთ სერვერზე. შეიძლება ასევე მოხდეს, რომ გამოთვლითი ოპერაციები მოითხოვს კომპიუტერის ძალიან დიდ რესურსებს, რაც ამცირებს მუშაობას და საჭიროებს ენერგიის გაზრდას. ნებისმიერ შემთხვევაში, თქვენ გაქვთ ორი ვარიანტი: ვერტიკალური ან ჰორიზონტალური მასშტაბირება.

მასშტაბირება გულისხმობს უფრო მეტ რესურსების დამატებას ერთ სერვერზე. ასე რომ, ძალიან დიდი მონაცემთა ნაკრებისთვის ეს ნიშნავს რომ მეტი (ან მეტი) მყარი დისკი დაემატოს და ამრიგად, მთელი მონაცემთა ნაკრები შეიძლება მოთავსდეს ერთ სერვერზე. გამოთვლითი ოპერაციების შემთხვევაში, ეს ნიშნავს, რომ გამოთვლილია უფრო დიდ სერვერზე, უფრო სწრაფი CPU ან მეტი მეხსიერებით. ნებისმიერ შემთხვევაში, ვერტიკალური მასშტაბირება ხორციელდება კომპიუტერული სისტემის ცალკეული რესურსის შექმნის მიზნით, მონაცემთა დამატებითი დამუშავების შესაძლებლობის მისაღებად.

სამაგიეროდ, ჰორიზონტალურად მასშტაბირება მოიცავს მეტი კვანძის დამატებას. დიდი მონაცემთა ნაკადის შემთხვევაში, ეს ნიშნავს მეორე სერვერის დამატებას მონაცემთა მთლიანი მოცულობის ნაწილის შესანახად, ხოლო გამოთვლითი რესურსისთვის ეს ნიშნავს მუშაობის გაყოფას ან დამატებით კვანძებში ჩატვირთვას. მასშტაბის პოტენციალით სრულად სარგებლობისთვის, იგი უნდა განხორციელდეს როგორც სისტემის დიზაინის შიდა დიზაინის პრინციპი. წინააღმდეგ შემთხვევაში, ჰორიზონტალური მასშტაბისთვის საჭირო კონტექსტის შეცვლა და მონიშვნა შეიძლება პრობლემატური იყოს.

სკალირების ყველაზე გავრცელებული მეთოდია სერვისების სეგმენტებად ან მოდულებად დაყოფა. მათი განაწილება შეიძლება ისე, რომ ფუნქციონალური თითოეული ლოგიკური კომპლექტი ცალკე მუშაობს. ეს შეიძლება გაკეთდეს გეოგრაფიული საზღვრებით, ან სხვა კრიტერიუმებით, როგორიცაა გადამხდელი და გადაუხდელი მომხმარებლები. ამ სქემების უპირატესობა ის არის, რომ ისინი უზრუნველყოფენ სერვისს ან მონაცემთა მაღაზიას გაუმჯობესებული ფუნქციონირებით.

ჩვენს მაგალითში სურათის სერვერში შესაძლებელია, რომ ფაილის ერთი სერვერი, რომელიც გამოიყენება სურათის შესანახად, შეიცვალოს მრავალი ფაილის სერვერებით, რომელთაგან თითოეული შეიცავს სურათების თავისებურ ნაკრებებს. (იხილეთ) ეს არქიტექტურა საშუალებას მისცემს სისტემას შეავსოს თითოეული ფაილის სერვერი გამოსახულებებით და დაამატოს დამატებითი სერვერები, რადგან დისკი ივსება. დიზაინს დასჭირდება დასახელების სქემა, რომელიც გამოსახულების ფაილის სახელს აკავშირებს შემცველ სერვერთან. სურათის სახელი შეიძლება გამომუშავდეს სერვერებზე მიბმული ჰაშირების თანმიმდევრული სქემიდან. ან, სხვაგვარად, თითოეულ სურათს შეიძლება ჰქონდეს დამატებითი ID, რაც საშუალებას მისცემს მიწოდების სერვისს, გადაამუშავოს მხოლოდ ID- ს დიაპაზონი, რომელიც დაკავშირებულია თითოეულ სერვერთან (როგორც ინდექსი) სურათის მოთხოვნისას.


დიაგრამა 1.4: სურათის ჰოსტინგის პროგრამა, რომელსაც აქვს ზედმეტი და გადაფარვა

რა თქმა უნდა, არსებობს სირთულეები მონაცემთა ან ფუნქციონალური განაწილების მრავალ სერვერზე. ერთ-ერთი მთავარი კითხვა - მონაცემთა ადგილმდებარეობა; განაწილებულ სისტემებში რაც უფრო ახლოსაა მონაცემები ოპერაციის ადგილთან ან გამოთვლის წერტილთან, მით უკეთესი იქნება სისტემის მუშაობა. შესაბამისად, მონაცემთა გადანაწილება მრავალ სერვერზე პოტენციურად პრობლემურია, ვინაიდან ამ მონაცემების საჭიროება ნებისმიერ დროს შეიძლება არსებობდეს მოთხოვნა, სერვერს მოუწევს ქსელის საშუალებით შეასრულოს საჭირო ინფორმაციის ძვირადღირებული შერჩევა.

კიდევ ერთი პოტენციური პრობლემა ჩნდება ფორმით
შეუსაბამობა (შეუსაბამობა)როდესაც სხვადასხვა სერვისები წაიკითხავენ და დაწერენ გაზიარებულ რესურსს, პოტენციურად სხვა სერვისს ან მონაცემთა მაღაზიას, არსებობს შესაძლებლობა რასის პირობებში - სადაც ზოგიერთი მონაცემი ითვლება ახლანდელ მდგომარეობაში განახლებულად, მაგრამ სინამდვილეში ის იკითხება განახლებამდე - ამ შემთხვევაში მონაცემები შეუსაბამოა. მაგალითად, სურათის მასპინძლობის სცენარში, რბოლის მდგომარეობა შეიძლება წარმოიშვას, თუ ერთმა კლიენტმა ძაღლის სურათის განახლების მოთხოვნა გაგზავნა, სათაური "ძაღლი" შეიცვალა "Gizmo" - ით, ხოლო მეორე კლიენტი ამ სურათს კითხულობდა. ასეთ ვითარებაში გაურკვეველია რომელი ტიტული, "ძაღლი" ან "გიზმო" მიიღებოდა მეორე კლიენტის მიერ.

რა თქმა უნდა, არსებობს გარკვეული დაბრკოლებები, რომლებიც დაკავშირებულია მონაცემთა დაჩრდილვასთან, მაგრამ დაშიფვრა საშუალებას გაძლევთ განასხვაოთ თითოეული პრობლემა სხვებისგან: მონაცემებით, დატვირთვით, გამოყენების ნიმუშებით და ა.შ. კონტროლირებად ბლოკებად. ეს შეიძლება დაეხმაროს მასშტაბურობასა და მართვაში, მაგრამ რისკი მაინც არსებობს. არსებობს მრავალი გზა რისკის შესამცირებლად და წარუმატებლობის მოსაგვარებლად. თუმცა, მოკლედ შეხედულებისამებრ, ისინი ამ თავში არ არის განხილული. თუ ამ თემაზე მეტი ინფორმაცია გსურთ, უნდა გაეცნოთ ბრალის ტოლერანტობას და ბლოგის პოსტის მონიტორინგს.

1.3. მონაცემთა სწრაფი და მასშტაბური წვდომის სტრუქტურული კომპონენტები

განაწილებული სისტემების განვითარების რამდენიმე ძირითადი პრინციპის გათვალისწინებით, ახლა გადავიდეთ უფრო რთულ წერტილზე - მონაცემთა წვდომის მასშტაბირებაზე.

უმარტივესი ვებ – პროგრამები, როგორიცაა LAMP დასტა, მსგავსია სურათში.


სურათი 1.5: მარტივი ვებ – პროგრამები

აპლიკაციის ზრდასთან ერთად, ორი ძირითადი გამოწვევაა: განაცხადის სერვერზე წვდომის მასშტაბები და მონაცემთა ბაზა. ძალიან მასშტაბური აპლიკაციის დიზაინის დროს, ვებ – სერვერი ან პროგრამის სერვერი, როგორც წესი, მინიმუმამდეა დაყვანილი და ხშირად ახორციელებს არქიტექტურას, რომელიც არ იზიარებს რესურსებს. ეს განაპირობებს განაცხადის სერვერის სისტემის მასშტაბის გაფართოებას. ამ დიზაინის შედეგად, მძიმე სამუშაო გადავა სტეკზე მონაცემთა ბაზის სერვერზე და დამხმარე სერვისებზე; აქ დგება მასშტაბის და შესრულების რეალური საკითხები.

ამ თავის დანარჩენი ნაწილი ფოკუსირებულია რამდენიმე ყველაზე გავრცელებულ სტრატეგიასა და ტექნიკაზე ამ ტიპის სერვისების ეფექტურობისა და მასშტაბურობის გასაუმჯობესებლად, მონაცემთა სწრაფი წვდომის საშუალებით.


სურათი 1.6: გამარტივებული ვებ-პროგრამა

სისტემების უმეტესობა შეიძლება გამარტივდეს დიაგრამაზე შემდეგზე:
რაც განხილვის დასაწყებად კარგი ამოსავალი წერტილია. თუ ბევრი მონაცემი გაქვთ, შეიძლება ჩათვალოთ, რომ გსურთ მასზე წვდომა ისეთივე მარტივი და სწრაფი იყოს, როგორც ტკბილეულის ყუთი თქვენი მაგიდის ზედა უჯრაში. მიუხედავად იმისა, რომ ეს შედარება გამარტივებულია, ის მიუთითებს ორ რთულ საკითხზე: მონაცემთა საწყობის მასშტაბურობა და მონაცემთა სწრაფი წვდომა.

ამ განყოფილებისთვის, ჩავთვალოთ, რომ თქვენ გაქვთ მრავალი ტერაბაიტი (TB) მონაცემები და მომხმარებლებს საშუალებას აძლევთ, წვდომა ჰქონდეთ ამ მონაცემების მცირე ნაწილებზე, არავითარი თანმიმდევრობით. (Სმ. .)
მსგავსი ამოცანაა გამოსახულების ფაილის განთავსება სადმე ფაილის სერვერზე, სურათის ჰოსტინგის ნიმუშის ნიმუშით.


სურათი 1.7: კონკრეტულ მონაცემებზე წვდომა

ეს განსაკუთრებით რთულია, რადგან მეხსიერებაში ტერაბაიტის მონაცემების ჩატვირთვა შეიძლება ძალიან ძვირი იყოს და პირდაპირ გავლენას ახდენს დისკის I / O ოპერაციების რაოდენობაზე. დისკიდან კითხვის სიჩქარე რამდენჯერმე დაბალია, ვიდრე RAM– დან კითხვის სიჩქარე - შეგვიძლია ვთქვათ, რომ მეხსიერებაზე წვდომა ისეთივე სწრაფია, როგორც ჩაკ ნორისი, ხოლო დისკზე წვდომა კლინიკაში რიგზე ნელია. სიჩქარის ეს განსხვავება განსაკუთრებით შესამჩნევია დიდი მონაცემთა ნაკრებისთვის; მშრალ რიცხვებში მეხსიერების წვდომა 6-ჯერ უფრო სწრაფია, ვიდრე დისკი კითხულობს თანმიმდევრული კითხვისთვის და 100,000-ჯერ უფრო სწრაფია შემთხვევითი წაკითხვისთვის (იხ. დიდი მონაცემების პათოლოგიები, http://queue.acm.org/detail. cfm? id \u003d 1563874).). გარდა ამისა, უნიკალური იდენტიფიკატორების შემთხვევაშიც, მონაცემთა მცირე ნაწილის პოვნის პრობლემის გადაჭრა შეიძლება ისეთივე რთული იყოს, როგორც ასობით სხვა ტკბილეულის კოლოფიდან შოკოლადის სავსე ბოლო ტკბილეულის გამოძევება გარეშე.

საბედნიეროდ, არსებობს მრავალი მიდგომა, რაც შეგიძლიათ გაამარტივოთ, რომელთაგან ოთხი ყველაზე მნიშვნელოვანია caches, proxies, indexes, და load loaders. ამ ნაწილის დანარჩენ ნაწილში განხილულია, თუ როგორ შეიძლება თითოეული ამ ცნების გამოყენება მონაცემთა ხელმისაწვდომობის გასაუმჯობესებლად.

ქეშები

ქეშირებისას ისარგებლებს ძირითადი პრინციპიდან, რომ ახლახან მოთხოვნილი მონაცემები კვლავ საჭირო იქნება. ქეში გამოიყენება კომპიუტერული თითქმის ყველა ფენაში: აპარატურა, ოპერაციული სისტემები, ვებ-ბრაუზერები, ვებ პროგრამები და სხვა. ქეში მოკლევადიანი მეხსიერების მსგავსია: შეზღუდული ზომის, მაგრამ უფრო სწრაფია, ვიდრე მონაცემთა ორიგინალი და შეიცავს ახლახან წვდომლ ნივთებს. ქეშები შეიძლება არსებობდეს ყველა დონეზე არქიტექტურაში, მაგრამ ისინი ხშირად არიან უახლოეს დონეზე წინა ბოლოდან, სადაც ისინი ხორციელდება მონაცემების სწრაფად დასაბრუნებლად მნიშვნელოვანი უკანა დატვირთვის გარეშე.

მაშ, როგორ შეიძლება გამოყენებული იქნას ქეში, რომ დავაჩქაროთ მონაცემთა წვდომა ჩვენს API ნიმუშში? ამ შემთხვევაში, არსებობს რამდენიმე შესაფერისი ქეშირების ადგილი. როგორც განლაგების ერთ-ერთი შესაძლო ვარიანტი, შეგიძლიათ შეარჩიოთ კვანძები მოთხოვნის დონეზე, როგორც ეს ნაჩვენებია
.


სურათი 1.8: Cache– ის განთავსება მოთხოვნის დონის კვანძზე

Cache– ის განთავსება პირდაპირ მოთხოვნის დონის კვანძზე საშუალებას იძლევა რეაგირების მონაცემების ადგილობრივი შენახვა. ყოველ ჯერზე, როდესაც თხოვნა განხორციელდება, მასპინძელი სწრაფად დააბრუნებს ადგილობრივ, ქეშირებულ მონაცემებს, ასეთის არსებობის შემთხვევაში. თუ ეს არ არის ქეშში, მაშინ მოთხოვნის კვანძი ითხოვს მონაცემებს დისკიდან. ერთ-ერთი შეკითხვის დონის კვანძზე შეიძლება განთავსდეს მეხსიერება, როგორც მეხსიერებაში (რაც ძალიან სწრაფია) და კვანძის ლოკალურ დისკზე (უფრო სწრაფად ვიდრე NAS- ზე წვდომის მცდელობა).


სურათი 1.9: ქეშის სისტემები

რა ხდება, როდესაც ქეშირების გავრცელება მრავალ კვანძზე ხდება? როგორც ხედავთ, თუ შეკითხვის ფენა მოიცავს ბევრ კვანძს, მაშინ სავარაუდოა, რომ თითოეულ კვანძს ექნება საკუთარი ქეში. ამასთან, თუ თქვენი დატვირთვის დამაბალანსებელი შემთხვევით ანაწილებს მოთხოვნებს კვანძებს შორის, მაშინ იგივე მოთხოვნა გადადის სხვადასხვა კვანძებზე, რაც ზრდის ქეშის ჩავარდნებს. ამ დაბრკოლების გადალახვის ორი გზაა გლობალური და განაწილებული ქეშები.

გლობალური ქეში

გლობალური ქეშის მნიშვნელობა ნათელია სახელიდან: ყველა კვანძი იყენებს ერთ მეხსიერების მეხსიერებას. ამ შემთხვევაში, დაემატება რაიმე სახის სერვერი ან ფაილების მაღაზია, რომელიც უფრო სწრაფია, ვიდრე თქვენი ორიგინალი მაღაზია და ხელმისაწვდომი იქნება მოთხოვნის დონის ყველა კვანძისთვის. თხოვნის თითოეული კვანძი მოითხოვს მეხსიერების მეხსიერებას ისევე, როგორც ადგილობრივი. ამ სახის ქეშირების სქემამ შეიძლება გამოიწვიოს გარკვეული დაბნეულობა, რადგან ძალიან მარტივია ერთი ქეშის გადატვირთვა, რადგან იზრდება კლიენტების რაოდენობა და მოთხოვნები. ამავდროულად, ასეთი სქემა ძალზე ეფექტურია გარკვეული არქიტექტურისთვის (განსაკუთრებით მაშინ, როდესაც საქმე ეხება სპეციალურ ტექნიკას, რომელიც ამ გლობალურ ქეშს აკეთებს ძალიან სწრაფად, ან რომელსაც აქვს ფიქსირებული მონაცემთა შენახვა).

გლობალური მეხსიერების ორი სტანდარტული ფორმა არსებობს, ნაჩვენებია დიაგრამებზე. სიტუაცია აისახება, როდესაც ქეშირებული პასუხი არ არის ნაპოვნი ქეშში, ქეშა თავად ხდება პასუხისმგებელი ძირითადი ნაწილის მონაცემების დაკარგული ნაწილის მიღებაზე. ეს ასახავს მოთხოვნის კვანძების პასუხისმგებლობას ნებისმიერი მონაცემების მოსაპოვებლად, რომლებიც არ არის ნაპოვნი ქეშში.


ფიგურა 1.10: გლობალური ქეში, სადაც ქეში პასუხისმგებელია მოძიებაზე


სურათი 1.11: გლობალური ქეში, სადაც მოთხოვნის კვანძები პასუხისმგებელნი არიან მოძიებაზე

პროგრამების უმეტესობა, რომლებიც ამკვრივებს გლობალურ ქეშებს, იყენებს პირველი ტიპის, სადაც ქეში თავისთავად მართავს მონაცემების გადატვირთვას და მონაცემების მოპოვებას, რათა თავიდან აიცილოს კლიენტები იმავე მონაცემების მოთხოვნების დატბორვას. ამასთან, არის შემთხვევები, როდესაც მეორე განხორციელებას უფრო აზრი აქვს. მაგალითად, თუ ქეში გამოიყენება ძალიან დიდი ფაილებისთვის, ქეშის დაბალი დარტყმა გადატვირთავს ბუფერული ქეშის მეხსიერებას კეშის ჩავარდნებით; ამ სიტუაციაში ეს ხელს უწყობს მთლიანი მონაცემთა დიდი ნაწილის (ან ცხელი მონაცემთა ნაკრების) დიდი მოცულობით შენახვას ქეშში. კიდევ ერთი მაგალითია არქიტექტურა, სადაც ქეშში შენახული ფაილები სტატიკურია და მათი წაშლა არ შეიძლება. (ეს შეიძლება განპირობებული იყოს ამგვარი შეყოვნების ძირითადი მახასიათებლებით - შესაძლოა მონაცემთა გარკვეულ ნაწილს დიდი სიჩქარე უნდა ჰქონდეს დიდი მონაცემთა ნაკრებისთვის - როდესაც აპლიკაციის ლოგიკას უფრო კარგად ესმის ჩანაცვლების სტრატეგია ან ცხელ წერტილებს, ვიდრე ქეში.)

განაწილებული ქეში

ეს ინდექსები ხშირად ინახება მეხსიერებაში ან სადმე ძალიან ადგილობრივი შემოსული კლიენტის მოთხოვნით. Berkeley DB (BDB) და ხის მონაცემთა სტრუქტურები, რომლებიც ჩვეულებრივ იყენებენ მონაცემების შეკვეთის სიებში შესანახად, იდეალურია ინდექსირებული წვდომისთვის.

ხშირად არსებობს მრავალი დონის ინდექსები, რომლებიც ემსახურება რუკას, გადაგიყვანთ ერთი ადგილიდან მეორეზე და ა.შ. სანამ არ მიიღებთ თქვენთვის სასურველ მონაცემებს. (Სმ. )


სურათი 1.17: მრავალდონიანი ინდექსები

ინდექსები ასევე შეიძლება გამოყენებულ იქნას იმავე მონაცემების რამდენიმე სხვა ხედვის შესაქმნელად. მონაცემთა დიდი ნაკრებისთვის ეს შესანიშნავი გზაა სხვადასხვა ფილტრებისა და ხედების დასადგენად, მონაცემთა მრავალი დამატებითი ასლის შექმნის გარეშე.

მაგალითად, დავუშვათ, რომ ზემოთ მოყვანილი სურათების ჰოსტინგის სისტემა რეალურად მასპინძლობს წიგნის გვერდების სურათებს, ხოლო სერვისი საშუალებას აძლევს კლიენტებს მოთხოვნები მისცეს ამ სურათებზე მოცემულ ტექსტზე, ეძიებენ მოცემულ თემასთან დაკავშირებულ მთელ შინაარსს, ისევე როგორც საძიებო სისტემები საშუალებას გაძლევთ მოძებნოთ HTML. შინაარსი. ამ შემთხვევაში, წიგნის ყველა სურათი იყენებს უამრავ სერვერს ფაილების შესანახად და მომხმარებლისთვის წარსადგენად ერთი გვერდის პოვნა საკმაოდ რთულია. თავდაპირველად, საპირისპირო ინდექსები თვითნებური სიტყვებისა და სიტყვების სიმრავლეების გამოსაკვლევად უნდა იყოს ხელმისაწვდომი; ამის შემდეგ არსებობს წიგნში ზუსტი გვერდისა და ადგილმდებარეობის ნავიგაციისა და ძიების შედეგების სწორი სურათის მოპოვების გამოწვევა. ამრიგად, ამ შემთხვევაში ინვერსიული ინდექსის განთავსება მოხდება ადგილმდებარეობის მიხედვით (მაგალითად, წიგნი B), შემდეგ B შეიძლება შეიცავდეს ინდექსს ყველა სიტყვაში, მდებარეობებში და თითოეულ ნაწილში მომხდარი მოვლენების რაოდენობაზე.

ინვერსიული ინდექსი, რომელიც ინდექსი 1-ს შეუძლია აჩვენოს ზემოთ მოცემულ დიაგრამაზე, დაახლოებით ასე გამოიყურება: თითოეული სიტყვა ან სიტყვების სიმრავლე წარმოადგენს მათ წიგნების ინდექსს.

შუალედური ინდექსი მსგავსი იქნება, მაგრამ შეიცავს მხოლოდ სიტყვებს, ადგილმდებარეობასა და ინფორმაციას წიგნის B- თვის. ეს მრავალშრიანი არქიტექტურა საშუალებას აძლევს თითოეულ ინდექსს ნაკლები ადგილი დაიკავოს, ვიდრე მთელი ეს ინფორმაცია შენახული იყო ერთ დიდ ინვერსიულ ინდექსში.

ეს მთავარია მასშტაბურ სისტემებში, რადგან შეკუმშვის შემთხვევაშიც კი, ამ ინდექსების შენახვა საკმაოდ დიდი და ძვირი შეიძლება იყოს. დავუშვათ, რომ ამ სისტემაში მრავალი წიგნი გვაქვს მთელი მსოფლიოდან - 100000000 (იხილეთ ბლოგის ჩანაწერი "Google Books Inside") - და რომ თითოეული წიგნი მხოლოდ 10 გვერდია (გაანგარიშების მარტივად) 250 გვერდზე თითო გვერდზე : ეს გვაძლევს ჯამში 250 მილიარდ სიტყვას. თუ ჩვენ სიტყვაში სიმბოლოების საშუალო რაოდენობას მივიღებთ 5-ს და თითოეულ პერსონაჟს დაშიფვრავს 8 ბიტით (ან 1 ბაიტით, მიუხედავად იმისა, რომ ზოგიერთი სიმბოლო რეალურად იღებს 2 ბაიტს), ამრიგად ხარჯავს 5 ბაიტს თითო სიტყვაზე, მაშინ ინდექსი თითოეული სიტყვის მხოლოდ ერთხელ შემცველობას დასჭირდება 1 ტერაბაიტზე მეტი შენახვა. ასე რომ, თქვენ ხედავთ, რომ ინდექსები, რომლებიც შეიცავს სხვა ინფორმაციას, როგორიცაა სიტყვების ნაკრები, მონაცემთა ადგილმდებარეობა და გამოყენების რაოდენობა, შეიძლება სწრაფად გაიზარდოს მოცულობით.

ამ შუალედური ინდექსების შექმნა და მონაცემების მცირე ბლოკად წარმოდგენა დიდი მონაცემების პრობლემის მოგვარებას უადვილებს. მონაცემები შეიძლება გადანაწილდეს მრავალ სერვერზე და ამავე დროს სწრაფად ხელმისაწვდომი იყოს. ინდექსები ინფორმაციის მოძიების ქვაკუთხედია და თანამედროვე საძიებო სისტემების საფუძველია. რა თქმა უნდა, ეს სექცია მხოლოდ ზოგადია ინდექსაციის თემასთან დაკავშირებით და მრავალი კვლევა ჩატარდა იმის შესახებ, თუ როგორ უნდა გავაკეთოთ ინდექსები უფრო პატარა, უფრო სწრაფი, შეიცავდეს მეტ ინფორმაციას (მაგალითად, შესაბამისობას) და განახლდეს შეუფერხებლად. (არსებობს გარკვეული პრობლემები კონკურენტული ტერმინების მართვასთან, ასევე განახლებების რაოდენობასთან დაკავშირებით, რაც საჭიროა ახალი მონაცემების დამატებაში ან არსებული მონაცემების შესაცვლელად, განსაკუთრებით მაშინ, როდესაც აქტუალურია შესაბამისობა ან რეიტინგი.)

თქვენი მონაცემების სწრაფად და მარტივად პოვნა აუცილებელია და ინდექსები ყველაზე მარტივი და ეფექტური ინსტრუმენტია ამ მიზნის მისაღწევად.

დატვირთვის ბალანსერები

დაბოლოს, ნებისმიერი განაწილებული სისტემის კიდევ ერთი კრიტიკული ნაწილია დატვირთვის დამაბალანსებელი. დატვირთვის ბალანსერები ნებისმიერი არქიტექტურის მნიშვნელოვანი ნაწილია, რადგან მათი როლი არის განაწილება დატვირთვა კვანძებში, რომელიც პასუხისმგებელია მოთხოვნების შესრულებაზე. ეს საშუალებას აძლევს მრავალ კვანძს გამჭვირვალედ მოემსახუროს იგივე ფუნქციას სისტემაში. (იხ.) მათი მთავარი მიზანია მრავალი ერთდროული კავშირის მართვა და ამ კავშირების მარშრუტირება რომელიმე მოთხოვნილ კვანძთან, რაც საშუალებას მისცემს სისტემას მასშტაბის მასშტაბით, უბრალოდ დაამატოთ კვანძები, უფრო მეტი მოთხოვნის შესასრულებლად.


სურათი 1.18: დატვირთვის ბალანსი

მოთხოვნების მოსამსახურებლად მრავალი ალგორითმი არსებობს, მათ შორის კვანძის შემთხვევითი შერჩევა, მრგვალი რობინის ან თუნდაც კვანძის შერჩევა გარკვეული კრიტერიუმების საფუძველზე, როგორიცაა პროცესორის ან ოპერატიული მეხსიერების გამოყენება. დატვირთვის ბალანსების დანერგვა შესაძლებელია როგორც აპარატული მოწყობილობები და პროგრამები. HAProxy არის ყველაზე ფართოდ გამოყენებული დატვირთვის დაბალანსებელი.

განაწილებულ სისტემაში დატვირთვის ბალანსერები ხშირად სისტემის წინა ბოლოში არიან ისე, რომ ყველა შემომავალი მოთხოვნა უშუალოდ გადის მათზე. ძალიან სავარაუდოა, რომ რთულ განაწილებულ სისტემაში თხოვნას რამდენიმე დატვირთვის ბალანსის გავლა მოუწევს, როგორც ეს ნაჩვენებია
.


სურათი 1.19: მრავალჯერადი დატვირთვის ბალანსერები

მარიონეტების მსგავსად, დატვირთვის ზოგიერთმა ბალანსმა შეიძლება თხოვნებიც განსხვავებულად მოახდინოს, მოთხოვნის ტიპების მიხედვით. ისინი ასევე ცნობილია როგორც საპირისპირო მარიონეტების სახელით.

კონკრეტული მომხმარებლის სესიისთვის მონაცემების მართვა ერთ – ერთი გამოწვევაა დატვირთვის ბალანსის გამოყენებისას. ელექტრონული კომერციის საიტზე, როდესაც თქვენ მხოლოდ ერთი მომხმარებელი გყავთ, მომხმარებლებისთვის ძალიან მარტივია, რომ ჩადონ თავიანთ კალათაში და შეინახონ მისი შინაარსი ვიზიტებს შორის (ეს მნიშვნელოვანია, რადგან პროდუქტის გაყიდვის ალბათობა მნიშვნელოვნად იზრდება, თუ მომხმარებელი საიტზე დაბრუნდება, პროდუქტი კვლავ რჩება მის კალათაშია). ამასთან, თუ მომხმარებელი პირველი სესიისთვის მიმართულია ერთ საიტზე, შემდეგ კი შემდეგი ვიზიტის დროს სხვა საიტზე, მაშინ შეუსაბამობები შეიძლება გაჩნდეს, რადგან ახალ საიტზე შეიძლება არ არსებობდეს მონაცემები ამ მომხმარებლის კალათის შინაარსთან დაკავშირებით. (არ გაწყენინებთ, თუ მთის Dew– ის პაკეტს ჩადებთ თქვენს კალათაში და დაბრუნებისას ის აღარ იქნება იქ?) ერთი გამოსავალი შეიძლება იყოს სესიების "წებოვანი" გაკეთება, რათა მომხმარებელი ყოველთვის მიმართული იყოს იგივე კვანძი. ამასთან, საიმედოობის ზოგიერთი მახასიათებლის უპირატესობა, მაგალითად, ავტომატური ჩამორთმევა, მნიშვნელოვნად გაუჭირდება. ამ შემთხვევაში, მომხმარებლის კალათაში ყოველთვის იქნება შინაარსი, მაგრამ თუ მათი წებოვანი კვანძი მიუწვდომელი გახდება, საჭირო იქნება სპეციალური მიდგომა და კალათის შინაარსის შესახებ დაშვება აღარ იქნება ჭეშმარიტი (თუმცა, იმედია, ეს ვარაუდი არ ჩაირთვება პროგრამაში). რა თქმა უნდა, ამ პრობლემის მოგვარება შესაძლებელია ამ სტრატეგიაში აღწერილი სხვა სტრატეგიებით და საშუალებებით, როგორიცაა სერვისები და მრავალი სხვა (მაგალითად, ბრაუზერის მეხსიერება, ქუქი-ფაილები და URL- ის გადაწერა).

თუ სისტემას მხოლოდ რამდენიმე კვანძი აქვს, მაშინ ის ტექნიკა, როგორიცაა DNS კარუსელი, უფრო პრაქტიკული იქნება ვიდრე დატვირთვის ბალანსერები, რაც შეიძლება ძვირი იყოს და სისტემის სირთულეს მიანიჭოს ზედმეტ ფენას. რა თქმა უნდა, დიდ სისტემებს აქვთ სხვადასხვა სახის დაგეგმვისა და დატვირთვის დაბალანსების ალგორითმები, მათ შორის მარტივი, როგორიცაა შემთხვევითი შერჩევა ან კარუსელის ალგორითმები, აგრეთვე უფრო რთული მექანიზმები, რომლებიც ითვალისწინებენ სისტემის გამოყენების ნიმუშის მუშაობის მახასიათებლებს. ყველა ეს ალგორითმი ანაწილებს ტრაფიკს და მოთხოვნებს და შეუძლია უზრუნველყოს საიმედოობის ისეთი ხელსაწყოები, როგორიცაა ავტომატური გამორთვა ან დაზიანებული კვანძის ავტომატური მოხსნა (მაგალითად, როდესაც ის რეაგირებს). ამასთან, ამ მოწინავე მახასიათებლებმა შეიძლება დიაგნოზის დასმა რთული გახადოს. მაგალითად, მაღალი დატვირთვის სიტუაციებში, დატვირთვის ბალანსები ამოიღებენ კვანძებს, რომლებიც შეიძლება ნელი იყოს ან დრო ამოიწურა (მოთხოვნების სიმრავლის გამო), რაც მხოლოდ გააუარესებს სიტუაციას სხვა კვანძებისთვის. ამ შემთხვევებში, ფართო კონტროლი მნიშვნელოვანია, რადგან მაშინაც კი, თუ სისტემის საერთო ტრაფიკი და დატვირთვა შემცირდა (რადგან კვანძები უფრო ნაკლებ მოთხოვნებს ემსახურება), ინდივიდუალური კვანძები შეიძლება გადატვირთულ იქნას.

დატვირთვის ბალანსერები სისტემის სიმძლავრის გაზრდის მარტივი გზაა. ამ სტატიაში აღწერილი სხვა ტექნიკის მსგავსად, ის მნიშვნელოვან როლს თამაშობს განაწილებული სისტემის არქიტექტურაში. დატვირთვის ბალანსები ასევე უზრუნველყოფს კრიტიკულ ფუნქციას კვანძების ჯანმრთელობის გადამოწმებისათვის. თუ ასეთი შემოწმების შედეგად, კვანძი არ რეაგირებს ან გადატვირთულია, მაშინ ის შეიძლება წაიშალოს მოთხოვნის დამუშავების აუზიდან და თქვენი სისტემის ზედმეტი რაოდენობის გამო, დატვირთვა გადანაწილდება დანარჩენ სამუშაო კვანძებში.

რიგები

ჯერჯერობით, ჩვენ შევისწავლეთ მონაცემთა სწრაფი წაკითხვის მრავალი გზა. ამავე დროს, მონაცემთა ჩანაწერების მასშტაბირების კიდევ ერთი მნიშვნელოვანი ნაწილია ჩანაწერების ეფექტური მართვა. როდესაც სისტემები მარტივია, დამუშავების მინიმალური დატვირთვით და მცირე მონაცემთა ბაზებით, წერა შეიძლება პროგნოზირებადი იყოს სწრაფი. ამასთან, უფრო რთულ სისტემებში ამ პროცესს შეუძლია გაურკვეველი დრო გაატაროს. მაგალითად, შეიძლება საჭირო გახდეს მონაცემების დაწერა სხვადასხვა ადგილას სხვადასხვა სერვერზე ან ინდექსზე, ან სისტემა შეიძლება უბრალოდ მძიმე დატვირთვით იყოს. იმ შემთხვევებში, როდესაც წერას ან თუნდაც ნებისმიერ დავალებას დიდი დრო სჭირდება, შესრულებისა და ხელმისაწვდომობის მისაღწევად საჭიროა სისტემაში ასინქრონიის შეყვანა. ამის საერთო გზაა მოთხოვნების რიგში დგომა.


სურათი 1.20: სინქრონული მოთხოვნა

წარმოიდგინეთ სისტემა, სადაც თითოეული კლიენტი ითხოვს დისტანციური მომსახურების ამოცანას. თითოეული ეს კლიენტი აგზავნის თავის თხოვნას სერვერზე, რომელიც რაც შეიძლება სწრაფად ასრულებს დავალებებს და უბრუნებს მათ შედეგებს შესაბამის კლიენტებს. მცირე სისტემებში, სადაც ერთ სერვერს (ან ლოგიკურ სერვისს) შეუძლია შემომავალი კლიენტების მომსახურებას მათი ჩამოსვლისთანავე, ამგვარი სიტუაცია კარგად უნდა იმუშაოს. ამასთან, როდესაც სერვერი მიიღებს უფრო მეტ მოთხოვნებს, ვიდრე შეუძლია გაუმკლავდეს, მაშინ თითოეული კლიენტი იძულებულია დაელოდოს სხვა კლიენტების დამუშავებას, სანამ მიიღებს პასუხს საკუთარ მოთხოვნაზე. ეს არის სინქრონული მოთხოვნის მაგალითი, რომელშიც გამოსახულია.

ამ სახის სინქრონულმა ქცევამ შეიძლება მნიშვნელოვნად შეამციროს კლიენტის საქმიანობა; სინამდვილეში, უსაქმოდ, კლიენტი იძულებულია დაელოდოს მანამ, სანამ არ მიიღებს პასუხს თხოვნაზე. დამატებითი სერვერების დამატება სისტემის დატვირთვის დასაძლევად რეალურად არ წყვეტს პრობლემას; ეფექტური დატვირთვის დაბალანსების შემთხვევაშიც კი, უკიდურესად რთულია დატვირთვის თანაბარი და სამართლიანი განაწილება, რაც საჭიროა მომხმარებლის პროდუქტიულობის მაქსიმალურად გაზრდის მიზნით. უფრო მეტიც, თუ სერვერი მიუწვდომელია ამ მოთხოვნის დასამუშავებლად (ან ის ვერ მოხერხდა), მაშინ მასთან დაკავშირებული კლიენტიც შეწყვეტს მუშაობას. ამ პრობლემის ეფექტური გადაწყვეტა მოითხოვს აბსტრაქციას კლიენტის მოთხოვნას და მის მომსახურებასთან დაკავშირებით რეალურ სამუშაოს შორის.


სურათი 1.21: რიგების გამოყენება მოთხოვნების სამართავად

შესვლის რიგები. რიგის მექანიზმი ძალიან მარტივია: დავალება ჩამოდის, რიგში შედის და შემდეგ მომუშავეები იღებენ შემდეგ დავალებას, როგორც კი მათ ამუშავებენ. (იხილეთ) ეს დავალებები შეიძლება იყოს ისეთივე მარტივი, როგორც მონაცემთა ბაზაში ჩაწერა, ან ისეთივე რთული, როგორც დოკუმენტის გადახედვისას. როდესაც კლიენტი აგზავნის მოთხოვნებს რიგის ამოცანებზე, მას აღარ სჭირდება შესრულების შედეგების დალოდება; ამის ნაცვლად, მოთხოვნები მხოლოდ სათანადოდ უნდა იქნას მიღებული როგორც მიღებული. ეს დადასტურება მოგვიანებით შეიძლება გახდეს სამუშაოს შედეგების ბმული, როდესაც კლიენტი ითხოვს მათ.

რიგები საშუალებას აძლევს კლიენტებს ასინქრონულად იმუშაონ კლიენტის მოთხოვნისა და რეაგირების სტრატეგიული აბსტრაქციით. მეორეს მხრივ, სინქრონულ სისტემაში არ არსებობს განსხვავება მოთხოვნას და პასუხს შორის და ამიტომ მათი ცალკე კონტროლირებადი შეუძლებელია. ასინქრონულ სისტემაში კლიენტი აყენებს დავალებას, მომსახურება პასუხობს შეტყობინებით, რომელიც დაადასტურებს დავალების მიღებას და შემდეგ კლიენტს შეუძლია პერიოდულად შეამოწმოს დავალების სტატუსი, მხოლოდ შედეგს ითხოვს დასრულებისთანავე. მიუხედავად იმისა, რომ კლიენტი ასინქრონულ თხოვნას აკეთებს, მას შეუძლია შეასრულოს სხვა სამუშაოები და ასინქრონული მოთხოვნებიც კი გაუწიოს სხვა სერვისებს. ეს არის მაგალითი იმისა, თუ როგორ მუშაობს რიგები და შეტყობინებები განაწილებულ სისტემებში.

რიგები ასევე გარკვეულწილად იცავს მომსახურების შეწყვეტისა და უარყოფისგან. მაგალითად, საკმაოდ მარტივია ძალიან მდგრადი რიგის შექმნა, რომელსაც შეუძლია გაიმეოროს სერვისული მოთხოვნები, რომლებმაც შეწყვიტეს მუშაობა დროებითი სერვერის გათიშვების გამო. უფრო სასურველია რიგის გამოყენება QoS გარანტიების შესასრულებლად, ვიდრე კლიენტების მომსახურების დროებითი გათიშვების წინაშე დასმა, რაც მოითხოვს კლიენტის მხრიდან შეცდომების რთულ და ხშირად არათანმიმდევრულ მოპყრობას.

1.4. დასკვნა

ეფექტური სისტემების შექმნა დიდი მონაცემების სწრაფი წვდომით ძალიან საინტერესო თემაა და ჯერ კიდევ არსებობს მნიშვნელოვანი ინსტრუმენტების მნიშვნელოვანი რაოდენობა, რომლებიც საშუალებას იძლევა ადაპტირდეს ყველა სახის ახალი პროგრამა. ამ თავში მხოლოდ რამდენიმე მაგალითს შეეხო, მაგრამ სინამდვილეში კიდევ ბევრია - და ამ სფეროში ახალი ინოვაციების შექმნა მხოლოდ გაგრძელდება.

ეს ნამუშევარი ვრცელდება Creative Commons Attribution 3.0 უცვლელი ლიცენზიით. იხილეთ დეტალები