ჩვენ ვაკანსიების სერვისი გავუშვით: გამოაქვეყნეთ ვაკანსიები და მიიღეთ უკუკავშირი!

როგორ ინახავს Discord ტრილიონობით შეტყობინებას

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

კომენტარის დატოვება
როგორ ინახავს Discord ტრილიონობით შეტყობინებას

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

Discord-ს ისეთი მონაცემთა ბაზა სჭირდებოდა, რომელიც პლატფორმასთან ერთად გაიზრდებოდა. აღმოჩნდა, რომ Cassandra ამისთვის იდეალური ვარიანტი არ იყო.

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

თითქმის 6 წლის შემდეგ Discord-მა უამრავი რამ შეცვალა, მათ ScyllaDB-ს მიაგნეს. შესაბამისად, შეტყობინების შენახვის სტილიც შეიცვალა.

Cassandra-ს პრობლემები

Discord შეტყობინებებს მონაცემთა ბაზაში ინახავდა, რომელსაც cassandra-messages ეწოდება. 2017 წელს მათ Cassandra-ს 12 კვანძი (node) გაუშვეს, სადაც მილიარდობით შეტყობინებას ინახავდნენ. 2022 წლის დასაწყისში კი მას უკვე 177 კვანძი ჰქონდა, ტრილიონობით შეტყობინებით. თუმცა, ეს სისტემა სრულყოფილი არ იყო — Discord-ის ჯგუფი მონაცემთა ბაზასთან დაკავშირებულ პრობლემებს ხშირად აწყდებოდა, შეყოვნება ხშირად არაპროგნოზირებადი იყო და ტექნიკური ოპერაციების შემცირებაც საჭირო გახდა, რადგან მათი ხშირი განხორციელება ძვირი აღმოჩნდა.

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

CREATE TABLE messages (

   channel_id bigint,

   bucket int,

   message_id bigint,

   author_id bigint,

   content text,

   PRIMARY KEY ((channel_id, bucket), message_id)

) WITH CLUSTERING ORDER BY (message_id DESC);

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

ეფექტურობის გაუმჯობესებისა და შეფერხებების შემცირების მიზნით, Discord-ის ინჟინრებმა მონაცემთა სერვისის ბიბლიოთეკა შექმნეს. ეს მოთხოვნის რაოდენობას ზღუდავს, რაც მონაცემთა ბაზის ინფრასტრუქტურაზე დადებითად აისახება.

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

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

«ჩვენ ScyllaDB-ით ძალიან დავინტერესდით. ის C++-შია დაწერილი, რაც იმას ნიშნავს, რომ ზედმეტი ინფორმაციის შეგროვების შანსი, ფაქტობრივად, არ არსებობს. ეს ჩვენი ოცნება იყო» — ამბობს ინგრამი.

2022 წლის ბოლოს Discord-მა თავისი მონაცემების უმეტესი ნაწილი ScyllaDB-ზე გადაიტანა. გამოცდილების მიღებისა და ScyllaDB-ის ოპტიმიზაციის შესწავლის შემდეგ პლატფორმა კიდევ უფრო გაფართოვდა.

«სუპერდისკი»

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

Discord-მა დისკი (RAID0) აიღო და მუდმივ დისკთან, RAID1-თამ მასივის მეშვეობით გააერთიანი. RAID1 mirroring ფუნქციას უზრუნელყოფდა, ასე რომ RAID0-ის ლოკალური მონაცემები მუდმივ დისკზე არსებულ მონაცემებს ემთხვეოდა.

«სუპერდისკი» მოქმედებისას:

კითხულობს

წერს

შეცდომა

შეცდომის შემდეგ აღდენა

შეცდომის შემთხვევაში, ადგილობრივი NVMe SSD-ები დაიკარგება. თუმცა, ეს სანერვიულო არ არის, რადგან დისკი მის ასლს აკეთებს. გარკვეული დროის შემდეგ დისკი აღდგენის ოპერაციას იწყებს და SSD-ებს კუთვნილ ადგილზე აბრუნებს.

მას შემდეგ, რაც Discord-მა Cassandra-დან ScyllaDB-ზე გადაინაცვლა, ერთი წელი გავიდა. თუმცა, ინგრამი მიღებულ გადაწყვეტილებას არ ნანობს.

ScyllaDB უფრო ეფექტურია და შენახვის უფრო მაღალი სიმკვრივის გამო, ის Cassandra კლასტერის კვანძების ნახევარს იყენებს. ScyllaDB-ის «სუპერდისკი» Cassandra-ზე 53%-ით ეფექტურია. ინგრამი და მისი გუნდი დარწმუნებულია, რომ მათ შეტყობინებების შენახვისთვის იდეალურ გზას მიაგნეს.

dev.ge-ზე ვაკანსიების სერვისი ამოქმედდა
dev.ge-ზე ვაკანსიების სერვისი ამოქმედდა
თემის მიხედვით
dev.ge-ზე ვაკანსიების სერვისი ამოქმედდა


ასევე წაიკითხეთ
გაიცანით სტეფანე გურგენიძე — 23 წლის პროგრამული უზრუნველყოფის ინჟინერი Amazon-დან
გაიცანით სტეფანე გურგენიძე — 23 წლის პროგრამული უზრუნველყოფის ინჟინერი Amazon-დან
გაიცანით სტეფანე გურგენიძე — 23 წლის პროგრამული უზრუნველყოფის ინჟინერი Amazon-დან
ახალგაზრდების დიდი ნაწილი საკუთარ თავს ტექნოლოგიებს უკავშირებს, რაც, თავის მხრივ, კონკურენციას საგრძნობლად ზრდის. 23 წლის პროგრამული უზრუნველყოფის ინჟინერმა, სტეფანე გურგენიძემ, ასეთ კონკურენტულ გარემოში უკვე დიდი გამოცდილება დააგროვა — ის ჯერ Microsoft-ში მუშაობდა, ახლა კი Amazon-ის გუნდის წევრია.
Discord-მა რეორგანიზაციის მიზეზით პერსონალის 4% გაათავისუფლა
Discord-მა რეორგანიზაციის მიზეზით პერსონალის 4% გაათავისუფლა
Discord-მა რეორგანიზაციის მიზეზით პერსონალის 4% გაათავისუფლა
Discord ChatGPT-ზე მომუშავე ჩატბოტისა და სხვა AI ფუნქციების გამოცდას იწყებს
Discord ChatGPT-ზე მომუშავე ჩატბოტისა და სხვა AI ფუნქციების გამოცდას იწყებს
Discord ChatGPT-ზე მომუშავე ჩატბოტისა და სხვა AI ფუნქციების გამოცდას იწყებს
მოწყობილობებიდან და
მოწყობილობებიდან და "ღრუბლებიდან" მონაცემთა ამოღების პროგრამები — შსს-ის 1 მლნ-იანი ტენდერი
მოწყობილობებიდან და "ღრუბლებიდან" მონაცემთა ამოღების პროგრამები — შსს-ის 1 მლნ-იანი ტენდერი
შსს-მ კომპიუტერული მოწყობილობებიდან ინფორმაციის ანალიზის და ღრუბლოვანი სივრცეებიდან ინფორმაციის ამოღების და ანალიზის საექსპერტო პროგრამული უზრუნველყოფისთვის ელექტრონული ტენდერი გამოაცხადა. შესყიდვის ღირებულება 1 109 725 ლარია. 
განხილვა
კომენტარები ჯერ არაა.