paint-brush
რატომ არ შეუძლიათ განაწილებულ სისტემებს ეს ყველაფერიმიერ@luminousmen
ახალი ისტორია

რატომ არ შეუძლიათ განაწილებულ სისტემებს ეს ყველაფერი

მიერ luminousmen9m2025/01/28
Read on Terminal Reader

Ძალიან გრძელი; Წაკითხვა

თანამედროვე განაწილებული სისტემები ყველაფერზეა გაცვლითი. შესრულება, საიმედოობა, მასშტაბურობა და თანმიმდევრულობა არ არის უფასოდ - თქვენ ყოველთვის სადღაც იხდით ფასს.
featured image - რატომ არ შეუძლიათ განაწილებულ სისტემებს ეს ყველაფერი
luminousmen HackerNoon profile picture

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


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

CAP თეორემა

CAP თეორემის პირველი ვერსია დაიწყო როგორც დებატები ACID და BASE შორის. მაგრამ დროთა განმავლობაში, ის განვითარდა, მიიღო ოფიციალური მტკიცებულება და დაამთავრა CAP თეორემა, როგორც დღეს ვიცით.


CAP თეორემა ამბობს, რომ განაწილებულ სისტემას შეუძლია ერთდროულად დააკმაყოფილოს სამი თვისებიდან მაქსიმუმ ორი :


  • თანმიმდევრულობა
  • ხელმისაწვდომობა
  • გაყოფის ტოლერანტობა


ეს შეზღუდვა აიძულებს ინჟინერებს გააკეთონ მკაცრი გარიგებები სისტემის მიზნებიდან და მათი განაწილებული გარემოს რეალობიდან გამომდინარე.

თანმიმდევრულობა

ავტორის მიერ შექმნილი სურათი


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


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

ხელმისაწვდომობა

ავტორის მიერ შექმნილი სურათი

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


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


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

დანაყოფის ტოლერანტობა

ავტორის მიერ შექმნილი სურათი

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


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


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

CAP-მა განმარტა

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


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


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

თეორემის შედეგები

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

AP (ხელმისაწვდომობა + დანაყოფის ტოლერანტობა)

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

CP (თანმიმდევრულობა + დანაყოფის ტოლერანტობა)

ამ ტიპის სისტემები ყოველთვის აბრუნებენ განახლებულ მონაცემებს, მაგრამ სისტემის ზოგიერთი, ან თუნდაც ყველა კვანძი შეიძლება არ რეაგირებდეს დაყოფის შემთხვევაში. ის იძლევა ატომურ განახლებებს, მაგრამ შეიძლება გამოიწვიოს დროის ამოწურვა. NoSQL მონაცემთა ბაზები, როგორიცაა Google BigTable, MongoDB, HBase და Redis, ყველა ამ ტიპის სისტემაა.

CA (თანმიმდევრულობა + ხელმისაწვდომობა)

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


სინამდვილეში, ჩვენ ვირჩევთ CP და AP-ს შორის, რადგან CA ძირითადად არის მონოლითი დანაყოფების გარეშე. ფართომასშტაბიანი სისტემებისთვის დიზაინერებს არ შეუძლიათ უარი თქვან P-ზე და ამიტომ აქვთ რთული არჩევანი C-სა და A-ს შორის.


CA-ში კვანძის უკმარისობა ნიშნავს სერვისის სრულ მიუწვდომლობას. მაგრამ ეს არ გამორთავს მასშტაბურობას, რადგან ჩვენ შეგვიძლია დამოუკიდებელი მონოლითების კლონირება და მათზე დატვირთვის გადანაწილება

CAP თეორემის კრიტიკა

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

1. ვაჭრობა ვრცელდება მხოლოდ დანაყოფების დროს

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


გარდა ამისა, ეს კომპრომისები არ არის უნივერსალური მთელ სისტემაში. იმავე განაწილებულ სისტემაში:


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


ეს ნიუანსი ხშირად იკარგება CAP-ის მაღალი დონის დისკუსიებში, რაც იწვევს სისტემების ზედმეტად გამარტივებულ კლასიფიკაციას, როგორც "CP" ან "AP" მთელს დაფაზე.

2. CAP უგულებელყოფს ლატენტურობას

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


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


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

3. CAP თვისებები არ არის ორობითი

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


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


თვისებების ეს უწყვეტი ბუნება CAP-ს ზედმეტად მარტივს ხდის თანამედროვე განაწილებული სისტემების სირთულის მოდელირებისთვის.

PACELC თეორემა

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


PACELC წარმოგიდგენთ მუშაობის ორ განსხვავებულ რეჟიმს განაწილებული სისტემებისთვის:


  1. დანაყოფის რეჟიმი ( PAC ): რა კომპენსაციას ახდენს სისტემა, როდესაც ხდება დანაყოფი? აქ, ჩვენ ხელახლა ვიხსენებთ CAP-ის კლასიკურ ურთიერთშედარებას ხელმისაწვდომობას (A) და თანმიმდევრულობას (C) შორის.
  2. სხვა რეჟიმი ( ELC ): რა კომპენსაციას ახდენს სისტემა, როდესაც არ არის დანაყოფი და ქსელი ნორმალურად ფუნქციონირებს? ამ რეჟიმში, სისტემა აწყდება განსხვავებულ კომპრომისს - შეყოვნებას (L) და თანმიმდევრულობას (C) შორის.

ავტორის მიერ შექმნილი სურათი

შეყოვნება-თანმიმდევრულობა Tradeoff

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


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


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

მისი შეფუთვა

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


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


PACELC ეფუძნება CAP-ს და აღიარებს, რომ:


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


ორივე CAP და PACELC არის ღირებული ინსტრუმენტები, მაგრამ არც ერთი არ არის ნაბიჯ-ნაბიჯ რეცეპტი სამშენებლო სისტემებისთვის. ამის ნაცვლად, ისინი აწვდიან გონებრივ მოდელებს ურთიერთგაგების შესაფასებლად და განაწილებული არქიტექტურის საზღვრების გასაგებად.

დამატებითი მასალები


გმადლობთ, რომ კითხულობთ!


გაინტერესებთ რაიმე ან გაქვთ აზრები გასაზიარებლად? დატოვეთ თქვენი კომენტარი ქვემოთ! შეამოწმეთ ჩემი ბლოგი ან გამომყევით LinkedIn-ის , Substack-ის ან Telegram-ის მეშვეობით.

L O A D I N G
. . . comments & more!

About Author

luminousmen HackerNoon profile picture
luminousmen@luminousmen
helping robots conquer the earth and trying not to increase entropy using Python, Data Engineering and Machine Learning

დაკიდეთ ტეგები

ეს სტატია იყო წარმოდგენილი...