19 gidra boshi. Dasturning ajoyib sharhi

11-12 iyul kunlari Sankt-Peterburgda konferentsiya bo'lib o'tadi Gidra, parallel va taqsimlangan tizimlarni ishlab chiqishga bag'ishlangan. Gidraning hiylasi shundaki, u zo'r olimlarni (odatda ularni faqat xorijiy ilmiy konferentsiyalarda topish mumkin) va mashhur amaliyotchi muhandislarni fan va amaliyot chorrahasida bitta katta dasturga birlashtiradi.

Hydra so'nggi bir necha yildagi eng muhim konferentsiyalarimizdan biridir. Undan oldin juda jiddiy tayyorgarlik, ma’ruzachilar va ma’ruzachilarni tanlash bo‘ldi. Bu haqida o'tgan hafta habro intervyusi chiqdi JUG.ru Group direktori Aleksey Fedorov bilan (23derevo).

Biz shundaymiz allaqachon aytilgan taxminan uchta muhim ishtirokchi, taqsimlangan tizimlar nazariyasi asoschilari - Lesli Lamport, Maurice Herlihy va Maykl Skott. Butun dastur haqida batafsilroq gapirish vaqti keldi!

19 gidra boshi. Dasturning ajoyib sharhi

Motivatsiya

Agar siz dasturlash bilan shug'ullanayotgan bo'lsangiz, u yoki bu tarzda siz multithreading va taqsimlangan hisoblash bilan shug'ullanasiz. Tegishli sohalardagi mutaxassislar ular bilan bevosita ishlaydi, lekin bilvosita, tarqatish bizga hamma joydan qaraydi: har qanday ko'p yadroli kompyuter yoki taqsimlangan xizmatda parallel ravishda hisob-kitoblarni amalga oshiradigan narsa mavjud.

Amaliy dasturlashning turli jihatlarini qamrab oluvchi ko'plab konferentsiyalar mavjud. Spektrning boshqa tomonida bizda ma'ruza formatida juda ko'p murakkab nazariyani ochib beradigan maxsus ilmiy maktablar mavjud. Misol uchun, Sankt-Peterburgda Hydra bilan parallel ravishda mavjud SPTDC maktabi. Hydra konferentsiyasida biz qattiq amaliyot, ilm-fan va ularning kesishgan joyidagi hamma narsani birlashtirishga harakat qildik.

Buni o'ylab ko'ring: biz o'zimiz o'rganayotgan fan va muhandislik sohasining asoschilari bilan jonli uchrashishingiz mumkin bo'lgan ajoyib davrda yashayapmiz. Fiziklar Nyutonni ham, Eynshteynni ham uchratishmaydi - poyezd ketdi. Ammo bizning yonimizda taqsimlangan tizimlar nazariyasi asoslarini yaratgan, mashhur dasturlash tillarini ixtiro qilgan va bularning barchasini birinchi marta ishlaydigan prototiplarda o'zida mujassam etganlar yashaydi. Bu odamlar o‘z ishlarini yarim yo‘lda tashlab ketmagan, ular hozir dunyoga mashhur universitet va kompaniyalarda dolzarb masalalar ustida ishlamoqda va bugungi kunda eng katta bilim va tajriba manbalari hisoblanadi.

Boshqa tomondan, ular bilan uchrashish imkoniyati odatda faqat nazariy bo'lib qoladi: bizdan bir nechtasi Rochester universitetidagi ommaviy tadbirlarni doimiy ravishda kuzatib borishimiz mumkin, keyin esa AQShga shoshilib, Maykl Skott bilan ma'ruza o'qish uchun qaytib kelishimiz mumkin. Barcha Hydra a'zolarini ziyorat qilish, behuda sarflangan vaqtni hisobga olmaganda, ozgina boylik talab qiladi (garchi bu qiziqarli qidiruvga o'xshaydi).

Boshqa tomondan, bizda hozirda taqsimlangan tizimlardagi dolzarb muammolar ustida ishlayotgan ko'plab eng yaxshi muhandislarimiz bor va ular, albatta, ko'p narsalarni aytadilar. Ammo bu erda muammo - ular ishlaydi, va ularning vaqti qimmatlidir. Ha, agar siz Microsoft, Google yoki JetBrains xodimi bo'lsangiz, taniqli ma'ruzachilardan biri bilan ichki tadbirda uchrashish ehtimoli keskin oshadi, lekin umuman olganda, yo'q, bu har kuni sodir bo'lmaydi.

Shunday qilib, Hydra konferensiyasi ko'pchiligimiz mustaqil ravishda qila olmaydigan muhim vazifani - bir joyda va bir vaqtning o'zida g'oyalari yoki o'zaro munosabatlari hayotingizni o'zgartirishi mumkin bo'lgan odamlarni birlashtiradi. Tan olaman, hamma ham taqsimlangan tizimlar yoki ba'zi murakkab fundamental narsalarga muhtoj emas. Siz umringiz davomida PHP da CRUD-larni dasturlashingiz va butunlay baxtli bo'lishingiz mumkin. Ammo kimga kerak bo'lsa, bu sizning imkoniyatingiz.

Habré bo'yicha Hydra konferentsiyasining birinchi e'lonidan beri ancha vaqt o'tdi. Bu vaqt ichida juda ko'p ishlar amalga oshirildi - va hozir bizda deyarli barcha hisobotlar ro'yxati mavjud. Hech qanday sust bitta torli algoritmlar yo'q, faqat sof taqsimlangan hardkor! Keling, umumiy so'zlar bilan yakunlaymiz va endi qo'limizda nima borligini ko'rib chiqamiz.

Asosiy fikrlar

Asosiy fikrlar konferentsiya kunlari boshlanadi va tugaydi. Odatda ochilish nutqining maqsadi konferentsiyaning umumiy ruhi va yo'nalishini belgilashdir. Yakunlovchi asosiy nutq chiziq chizadi va konferentsiya davomida olingan bilim va ko'nikmalar bilan qanday yashashimiz mumkinligini tushuntiradi. Boshlanishi va oxiri: eng yaxshi eslab qolingan narsa va umuman olganda, ahamiyati ortdi.

Cliff Click H2O taqsimlangan K/V algoritmi

19 gidra boshi. Dasturning ajoyib sharhi Cliff Java olamidagi afsonadir. 90-yillarning oxirida u nomzodlik dissertatsiyasi uchun maqola yozdi "Tahlillarni birlashtirish, optimallashtirishni birlashtirish", bir muncha vaqt o'tgach, HotSpot JVM Server Compiler uchun asos bo'ldi. Ikki yil o'tgach, u JVMda Sun Microsystems kompaniyasida ishlagan va butun dunyoga JIT mavjud bo'lish huquqiga ega ekanligini ko'rsatdi. Java eng aqlli va eng tez optimallashtirishga ega eng tezkor zamonaviy ish vaqtlaridan biri ekanligi haqidagi butun hikoya Cliff Clickdan olingan. Dastlab, agar biror narsa statik kompilyatorga kirish imkoniga ega bo'lsa, uni jit qilishga urinishingiz shart emas deb ishonishgan. Cliff va jamoaning ishi tufayli barcha yangi tillar sukut bo'yicha JIT kompilyatsiyasi g'oyasi bilan yaratila boshlandi. Albatta, bu bir kishilik ish emas edi, lekin bunda Kliff juda muhim rol o'ynadi.

Ochilish nutqida Kliff o'zining boshqa tashabbusi haqida gapiradi - H20, sanoat ilovalari uchun taqsimlangan va kengaytiriladigan mashinalarni o'rganish uchun xotira platformasi. Yoki aniqrog'i, uning ichidagi kalit-qiymat juftlarini taqsimlangan saqlash haqida. Bu juda ko'p qiziqarli xususiyatlarga ega bo'lgan juda tez saqlash (aniq ro'yxat tavsifi), bu katta ma'lumotlar oqimining matematikasida shunga o'xshash echimlardan foydalanishga imkon beradi.

Cliff beradigan yana bir hisobot - Azul Hardware Transactional Memory tajribasi. Uning tarjimai holining yana bir qismi - o'n yil Azulda ishlash, u erda u Azul apparat va texnologiya stekidagi ko'p narsalarni yangiladi va takomillashtirdi: JIT kompilyatorlari, ish vaqti, ip modeli, xatolarni qayta ishlash, stek bilan ishlash, apparat uzilishlari, sinfni yuklash va boshqalar - yaxshi, siz olasiz fikr.

Eng qizig'i ular katta biznes uchun apparat - Java-ni ishga tushirish uchun superkompyuter yasaganlarida boshlandi. Bu juda innovatsion narsa bo'lib, maxsus talablarga ega bo'lgan Java uchun mo'ljallangan - past pauzada axlat yig'ish uchun xotira to'siqlarini o'qing, chegaralarni tekshirishli massivlar, virtual qo'ng'iroqlar... Eng zo'r texnologiyalardan biri apparat tranzaksiya xotirasi. 1 ta yadroning har qanday L864 qismi tranzaksiya yozishda ishtirok etishi mumkin, bu ayniqsa Java-da blokirovkalar bilan ishlash uchun juda muhim (sinxronlashtirilgan bloklar haqiqiy xotira ziddiyatlari bo'lmasa, parallel ravishda ishlashi mumkin). Ammo go'zal g'oyani qattiq haqiqat buzdi - va bu nutqda Kliff nima uchun HTM va STM ko'p tarmoqli hisoblashning amaliy ehtiyojlariga unchalik mos kelmasligini aytib beradi.

Maykl Skott - Ikki tomonlama ma'lumotlar tuzilmalari

19 gidra boshi. Dasturning ajoyib sharhi Maykl Skott - Rochester universitetining kompyuter fanlari professori, uni taqdiri u bilan bog'ladi allaqachon 34 yoshda, va o'zining Viskonsin-Madison universitetida besh yil davomida dekan bo'lgan. U parallel va taqsimlangan dasturlash va til dizayni bo'yicha tadqiqotlar olib boradi va talabalarga o'rgatadi.

Mayklni darslik tufayli butun dunyo biladi "Dasturlash tili pragmatikasi", uning so'nggi nashri nisbatan yaqinda - 2015 yilda nashr etilgan. Uning ishi "Umumiy xotirali multiprotsessorlarda kengaytiriladigan sinxronizatsiya algoritmlari" qabul qilindi Dijkstra mukofoti taqsimlangan hisoblash sohasida eng mashhur biri sifatida va ochiq yolg'on gapirish Rochester universiteti onlayn kutubxonasida. Siz uni Maykl-Skott algoritmining muallifi sifatida ham bilishingiz mumkin "Oddiy, tezkor va amaliy bloklanmaydigan va bloklanmaydigan bir vaqtda navbat algoritmlari".

Java olamiga kelsak, bu alohida holat: Dug Li bilan birgalikda u Java kutubxonalari ishlaydigan bloklanmaydigan algoritmlar va sinxron navbatlarni ishlab chiqdi. “Dual ma’lumotlar tuzilmalari” mavzusi aynan shu haqida bo‘ladi – bu tuzilmalarning Java SE 6 da joriy etilishi unumdorlikni 10 barobarga oshirdi. java.util.concurrent.ThreadPoolExecutor. Agar siz ushbu "Dual ma'lumotlar tuzilmalari" nima ekanligini oldindan qiziqtirgan bo'lsangiz, unda bu haqda ma'lumot mavjud bog'liq ish.

Maurice Herlihy - Blokcheynlar va taqsimlangan hisoblashning kelajagi

19 gidra boshi. Dasturning ajoyib sharhi Maurice Herlihy - ikkita Dijkstra mukofoti sovrindori. Birinchisi ishlash uchun mo'ljallangan "Kutishsiz sinxronizatsiya" (Braun universiteti) va ikkinchisi, yaqinroq - "Tranzaksiya xotirasi: blokirovkasiz ma'lumotlar tuzilmalari uchun arxitektura yordami" (Virjiniya texnologiya universiteti). Dijkstra mukofoti ahamiyati va ta'siri kamida o'n yil davomida namoyon bo'lgan ishlarni tan oladi va Moris bu sohadagi eng taniqli mutaxassislardan biri ekanligi aniq. Hozirda u Braun universitetida professor bo'lib ishlaydi va yutuqlari paragraflar ro'yxatiga ega.

Ushbu yakuniy nutqda Moris taqsimlangan hisoblash klassikasi nuqtai nazaridan blokcheyn taqsimlangan tizimlar nazariyasi va amaliyoti va u bilan bog'liq ko'plab muammolarni qanday soddalashtirishi haqida gapiradi. Bu konferentsiya mavzusiga bag'ishlangan ma'ruza - umuman konchilik shov-shuvi haqida emas, balki bizning bilimlarimizdan turli xil vazifalarda qanday qilib hayratlanarli darajada samarali va to'g'ri foydalanish mumkinligi haqida.

2017 yil iyul oyida Moris allaqachon SPTDC maktabiga borish uchun Rossiyaga kelgan, JUG.ru uchrashuvida ishtirok etgan va yozuvni YouTube-da ko'rish mumkin:

Asosiy dastur

Keyinchalik dasturga kiritilgan hisobotlarning qisqacha sharhi bo'ladi. Hisobotlarning ba'zilari bu erda batafsil tavsiflangan, boshqalari esa qisqaroq. Uzoq tavsiflar asosan ingliz tilidagi hisobotlarga borib taqaladi, ularda ilmiy maqolalarga havolalar, Vikipediyadagi atamalar va hokazolar kerak bo'ladi. Toʻliq roʻyxat mavjud konferentsiya veb-saytiga qarang. Saytdagi ro'yxat yangilanadi va to'ldiriladi.

Lesli Lemport - Savol-javob

19 gidra boshi. Dasturning ajoyib sharhi Lesli Lamport - taqsimlangan hisoblash bo'yicha muhim ishlar muallifi. "LaTeX" "Lamport TeX" degan ma'noni anglatadi. Aynan u 1979 yilda birinchi bo'lib kontseptsiyani kiritgan izchil izchillik, va uning maqolasi "Ko'p jarayonli dasturlarni to'g'ri bajaradigan ko'p protsessorli kompyuterni qanday qilish kerak" Dijkstra mukofotiga sazovor bo'ldi.

Bu dasturning format jihatidan eng noodatiy qismi, chunki u hatto hisobot emas, balki savol-javob sessiyasidir. Tomoshabinlarning katta qismi "Lemport nazariyasiga" asoslangan barcha turdagi asarlar, o'z maqolalari va hisobotlari bilan allaqachon tanish bo'lsa (yoki tanish bo'lishi mumkin), barcha mavjud vaqtni bevosita muloqotga sarflash muhimroqdir.

Fikr oddiy - siz YouTube-da ikkita reportajni tomosha qilasiz: "Dasturlash kodlashdan ko'ra ko'proq bo'lishi kerak" и "Agar siz dastur yozmasangiz, dasturlash tilidan foydalanmang" va kamida bitta savol tayyorlang va Lesli javob beradi.

Ushbu ikkita videoning birinchisi bizda allaqachon mavjud habro maqolasiga aylandi. Agar videoni tomosha qilish uchun bir soat vaqtingiz bo'lmasa, hammasini matn shaklida tezda o'qishingiz mumkin.

Eslatma: YouTube'da Lesli Lamportning ko'plab videolari mavjud. Misol uchun, ajoyib bor TLA+ kursi. Ushbu to'liq kursning oflayn versiyasi quyidagi manzilda mavjud muallifning bosh sahifasi, va u mobil qurilmalarda osonroq ko'rish uchun uni YouTube'ga yukladi.

Martin Kleppmann - Tarqalgan hamkorlik uchun foydalanuvchi qurilmalari bo'ylab ma'lumotlarni sinxronlash

19 gidra boshi. Dasturning ajoyib sharhi Martin Kleppmann - Kembrij universiteti tadqiqotchisi, CRDT va algoritmlarni rasmiy tekshirish bilan shug'ullanadi. Martinning kitobi "Ma'lumotlarni ko'p talab qiladigan ilovalarni loyihalash", 2017-yilda nashr etilgan, juda muvaffaqiyatli bo'ldi va uni ma'lumotlarni saqlash va qayta ishlash sohasida bestseller ro'yxatiga kiritdi. Kevin Skott, Microsoft kompaniyasining texnik direktori, dedi bir marta: “Ushbu kitob dasturiy taʼminot muhandislari uchun zarur kitob boʻlishi kerak. Bu ishlab chiquvchilarga infratuzilma va maʼlumotlar tizimlarini loyihalash va joriy etishda aqlliroq yordam berish uchun nazariya va amaliyotni birlashtirgan noyob manbadir”. Kafka yaratuvchisi va Confluent kompaniyasining texnik direktori Jey Kreps shunga o'xshash narsani aytdi.

Akademik tadqiqotlarga o'tishdan oldin Martin sanoatda ishlagan va ikkita muvaffaqiyatli startapga asos solgan:

  • LinkedIn 2012 yilda sotib olgan elektron pochtangizdagi kontaktlarning ijtimoiy profilini ko'rsatishga bag'ishlangan hisobot;
  • Go Test It - RedGate 2009 yilda sotib olgan turli brauzerlarda veb-saytlarni avtomatik ravishda sinab ko'rish xizmati.

Umuman olganda, Martin bizning asosiy fikrlarimizdan kamroq mashhur bo'lsa-da, allaqachon taqsimlangan hisoblash va sanoatni rivojlantirishga qandaydir hissa qo'shishga muvaffaq bo'ldi.

Ushbu nutqda Martin o'zining ilmiy tadqiqotiga yaqinroq mavzu haqida gapiradi. Google Docs va shunga o'xshash hujjatlarni birgalikda tahrirlash divanlarida "birgalikda tahrirlash" replikatsiya vazifasini anglatadi: har bir foydalanuvchi umumiy hujjatning o'z nusxasiga ega, keyin uni o'zgartiradi va barcha o'zgarishlar tarmoq bo'ylab qolgan qismiga yuboriladi. ishtirokchilar. Hujjatlarni oflayn rejimda o'zgartirish boshqa ishtirokchilarga nisbatan hujjatning vaqtinchalik nomuvofiqligiga olib keladi va qayta sinxronlash nizolarni hal qilishni talab qiladi. Aynan shuning uchun ular mavjud Konfliktsiz takrorlangan ma'lumotlar turlari (CRDT), aslida, juda yangi narsa bo'lib, uning mohiyati faqat 2011 yilda shakllantirilgan. Ushbu ma'ruza o'shandan beri CRDT dunyosida nima sodir bo'lganligi, eng so'nggi yutuqlar nimadan iboratligi, umuman olganda mahalliy birinchi ilovalarni yaratishga yondashuv va ochiq kodli kutubxonadan foydalanishni muhokama qiladi. Avtomatik birlashtirish ayniqsa.

Kelgusi hafta biz Habré-da Martin bilan uzoq intervyu e'lon qilamiz, bu qiziqarli bo'ladi.

Pedro Ramalhete - Kutishsiz ma'lumotlar tuzilmalari va kutishsiz tranzaksiyalar

19 gidra boshi. Dasturning ajoyib sharhi Pedro Cisco'da ishlaydi va so'nggi o'n yil davomida parallel algoritmlarni ishlab chiqdi, jumladan sinxronizatsiya mexanizmlari, blokirovkasiz va kutishsiz ma'lumotlar tuzilmalari va ushbu mavzu bo'yicha tasavvur qilishingiz mumkin bo'lgan barcha narsalar. Uning hozirgi tadqiqot va muhandislik qiziqishlari to'g'ri, kengaytiriladigan va xatolarga chidamli ilovalarni ta'minlaydigan universal konstruktsiyalar, dasturiy ta'minot tranzaksiyaviy xotirasi, doimiy xotira va shunga o'xshash texnologiyalarga qaratilgan. U, shuningdek, tor doiralarda mashhur bo'lgan blog muallifi Bir vaqtning o'zida injiqliklar.

Ko'p tarmoqli ilovalar endi parallel ma'lumotlar tuzilmalarida ishlaydi, aktyorlar o'rtasida xabarlar navbatlaridan foydalanishdan kalit-qiymat do'konlarida indekslangan ma'lumotlar tuzilmalarigacha. Ular ko'p yillar davomida Java JDK da muvaffaqiyatli ishlamoqda va ular asta-sekin C++ ga qo'shilmoqda.

Parallel ma'lumotlar strukturasini amalga oshirishning eng oddiy usuli - bu ketma-ket (bir torli) amalga oshirish bo'lib, unda usullar mutekslar bilan himoyalangan. Bu har qanday iyunda mavjud, ammo masshtablash va ishlashda aniq muammolar mavjud. Shu bilan birga, blokirovkasiz va kutishsiz ma'lumotlar tuzilmalari nafaqat xatolarni yaxshiroq engibgina qolmay, balki yaxshiroq ishlash profiliga ham ega - ammo ularni ishlab chiqish chuqur tajriba va muayyan dasturga moslashishni talab qiladi. Hamma narsani buzish uchun bitta noto'g'ri kod satri etarli.

Qanday qilib biz buni hatto mutaxassis bo'lmagan odam ham bunday ma'lumotlar tuzilmalarini loyihalashi va amalga oshirishi mumkin? Ma'lumki, har qanday ketma-ketlik algoritmidan foydalanib, ipni xavfsiz qilish mumkin universal dizayn, yoki tranzaksiya xotirasi. Birinchidan, ular ushbu muammoni hal qilish uchun kirish to'siqlarini kamaytirishi mumkin. Biroq, ikkala yechim ham odatda samarasiz amalga oshirilishiga olib keladi. Pedro ushbu dizaynlarni qanday qilib samaraliroq qilishga muvaffaq bo'lganliklari va ularni algoritmlaringiz uchun qanday ishlatishingiz haqida gapirib beradi.

Xeydi Xovard - Tarqalgan konsensusni ozod qilish

19 gidra boshi. Dasturning ajoyib sharhi Xeydi Xovard, xuddi Martin kabi, Kembrij universitetida taqsimlangan tizimlar bo'yicha tadqiqotchi. Uning ixtisosligi - izchillik, xatolarga chidamlilik, ishlash va taqsimlangan konsensus. U Paxos algoritmini umumlashtirishi bilan mashhur Moslashuvchan Paxos.

Eslatib o'tamiz, Paxos Lesli Lamport ishiga asoslangan ishonchsiz kompyuterlar tarmog'ida konsensus muammosini hal qilish uchun protokollar oilasi. Shunday qilib, bizning ba'zi ma'ruzachilarimiz dastlab boshqa ma'ruzachilarimiz tomonidan taklif qilingan muammolar ustida ishlamoqda - va bu ajoyib.

Bir nechta xostlar o'rtasida konsensusni topish qobiliyati - murojaat qilish, etakchini tanlash, blokirovka qilish yoki muvofiqlashtirish - zamonaviy taqsimlangan tizimlarda asosiy masala. Paxos endi konsensus muammolarini hal qilishning asosiy usuli bo'lib, uning atrofida turli amaliy ehtiyojlar uchun algoritmni kengaytirish va optimallashtirish bo'yicha ko'plab tadqiqotlar olib borilmoqda.

Ushbu nutqda biz Paxosning nazariy asoslarini qayta ko'rib chiqamiz, asl talablarni yumshatamiz va algoritmni umumlashtiramiz. Biz Paxos ko'plab konsensus yondashuvlari orasida faqat bitta variant ekanligini va spektrdagi boshqa nuqtalar ham yaxshi taqsimlangan tizimlarni yaratish uchun juda foydali ekanligini ko'ramiz.

Aleks Petrov - Vaqtinchalik replikatsiya va arzon kvorumlar yordamida saqlash xarajatlaringizni kamaytiring

19 gidra boshi. Dasturning ajoyib sharhi Aleks - ma'lumotlar bazasi va saqlash tizimlari bo'yicha mutaxassis, va biz uchun eng muhimi, bu erda ishlovchi Kassandra. Hozirda u O'Reyli bilan birgalikda "Ma'lumotlar bazasining ichki qismi" kitobi ustida ishlamoqda.

bilan tizimlar uchun yakuniy izchillik (ruscha terminologiyada - "so'nggi izchillik"), tugun ishdan chiqqandan yoki tarmoq bo'linib ketgandan so'ng, siz quyidagi dilemmani hal qilishingiz kerak: yo so'rovlarni bajarishda davom eting, izchillikni yo'qoting yoki ularni bajarishdan bosh torting va mavjudligini qurbon qiling. Bunday tizimda kvorumlar, tugunlarning bir-biriga o'xshash kichik to'plamlari va kamida bitta tugun eng so'nggi qiymatni o'z ichiga olishini ta'minlash yaxshi chekka yechim bo'lishi mumkin. Siz eng so'nggi qiymatlar bilan javob berishda nosozliklar va ba'zi tugunlarga ulanish yo'qolishidan omon qolishingiz mumkin.

Biroq, har bir narsaning o'z narxi bor. Kvorumni takrorlash sxemasi saqlash xarajatlarini oshirishni anglatadi: muammo yuzaga kelganda etarli nusxalar mavjudligini ta'minlash uchun ortiqcha ma'lumotlar bir vaqtning o'zida bir nechta tugunlarda saqlanishi kerak. Ma'lum bo'lishicha, siz barcha nusxalarda barcha ma'lumotlarni saqlashingiz shart emas. Agar siz ma'lumotlarni faqat tugunlarning bir qismida saqlasangiz va nosozliklarni qayta ishlash stsenariylari uchun maxsus tugunlardan (Transient Replica) foydalansangiz, xotira yukini kamaytirishingiz mumkin.

Hisobot davomida biz ko'rib chiqamiz Guvoh nusxalari, ishlatiladigan replikatsiya sxemasi Tarmoqli и mega do'kon, va bu kontseptsiyani Apache Kassandrada amalga oshirish chaqirdi Vaqtinchalik replikatsiya va arzon kvorumlar.

Dmitriy Vyukov - Goroutinlar ochiq

19 gidra boshi. Dasturning ajoyib sharhi Dmitriy Google kompaniyasining ishlab chiqaruvchisi bo'lib, C/C++ va Go - Address/Memory/ThreadSanitizer va Linux yadrosi uchun shunga o'xshash vositalarni dinamik sinovdan o'tkazish ustida ishlaydi. Go dasturiga kengaytiriladigan gorutin rejalashtiruvchisi, tarmoq so‘rovchisi va parallel axlat yig‘uvchisi qo‘shildi. U ko'p ish zarralari bo'yicha mutaxassis, o'nlab yangi bloklanmaydigan algoritmlarning muallifi va egasidir. Qora kamar Intel.

Endi hisobotning o'zi haqida bir oz. Go tili gorutinlar (engil iplar) va kanallar (FIFO navbatlari) ko'rinishida multithreading uchun mahalliy yordamga ega. Ushbu mexanizmlar foydalanuvchilarga zamonaviy ko'p tarmoqli ilovalarni yozishni juda oson va yoqimli qiladi va bu sehrga o'xshaydi. Biz tushunganimizdek, bu erda sehr yo'q. Ushbu nutqda Dmitriy Go rejalashtiruvchisining nozik tomonlarini o'rganadi va ushbu "sehr" ni amalga oshirish sirlarini ko'rsatadi. Birinchidan, u rejalashtiruvchining asosiy komponentlari haqida umumiy ma'lumot beradi va u qanday ishlashini aytib beradi. Keyinchalik, biz to'xtash / to'xtash strategiyasi va blokirovka tizimi qo'ng'iroqlarini boshqarish kabi individual jihatlarni batafsil ko'rib chiqamiz. Va nihoyat, Dmitriy rejalashtiruvchining mumkin bo'lgan yaxshilanishlari haqida bir oz gapirib beradi.

Dmitriy Bugaichenko - Ehtimoliy eskizlar va boshqalar bilan taqsimlangan grafik tahlilini tezlashtirish

19 gidra boshi. Dasturning ajoyib sharhi Dmitriy universitet va ilmiy jamoatchilik bilan aloqani yo'qotmasdan deyarli 9 yil davomida autsorsingda ishladi. Odnoklassniki-da katta ma'lumotlarni tahlil qilish uning uchun nazariy tayyorgarlik va ilmiy asoslarni real, talab qilinadigan mahsulotlarni ishlab chiqish bilan uyg'unlashtirish uchun noyob imkoniyat bo'ldi.

Tarqalgan grafik tahlili qiyin vazifa bo'lib kelgan va shunday bo'lib qolmoqda: qo'shni cho'qqining ulanishlari haqida ma'lumot olish zarurati tug'ilganda, ma'lumotlar ko'pincha mashinalar o'rtasida uzatilishi kerak, bu esa bajarish vaqti va tarmoq infratuzilmasi yuklanishiga olib keladi. Ushbu ma'ruzada biz ehtimollik ma'lumotlar tuzilmalari yoki ijtimoiy tarmoqdagi do'stlik grafigining simmetriyasi kabi faktlardan foydalangan holda qanday qilib muhim qayta ishlash tezligiga erishish mumkinligini ko'rib chiqamiz. Bularning barchasi Apache Spark-dagi kod misollari bilan tasvirlangan.

Denis Rystsov - Vaqtinchalik replikatsiya va arzon kvorumlar yordamida saqlash xarajatlaringizni kamaytiring

19 gidra boshi. Dasturning ajoyib sharhi Denis - ishlab chiquvchi Kosmos DB, izchillik modellari, konsensus algoritmlari va taqsimlangan tranzaktsiyalarni tekshirish bo'yicha mutaxassis. Hozirda u Microsoft’da ishlaydi, undan oldin esa Amazon va Yandex’ning taqsimlangan tizimlarida ishlagan.

Ushbu ma'ruzada biz so'nggi bir necha yil ichida ixtiro qilingan, shartli yangilanishni qo'llab-quvvatlaydigan har qanday ma'lumotlar do'konida mijoz tomonidan amalga oshirilishi mumkin bo'lgan taqsimlangan tranzaksiya protokollarini ko'rib chiqamiz (taqqoslash va o'rnatish). Xulosa shuki, hayot ikki fazali majburiyat bilan tugamaydi, tranzaktsiyalar har qanday ma'lumotlar bazalari ustiga qo'shilishi mumkin - dastur darajasida, lekin turli protokollar (2PC, Percolator, RAMP) turli xil kelishuvlarga ega va bizga berilmaydi. tekinga.

Aleksey Zinovyev - Hamma ML algoritmlari uni taqsimlangan osmonga aylantira olmaydi

19 gidra boshi. Dasturning ajoyib sharhi Aleksey (zaleslav) uzoq vaqtdan beri ma'ruzachi va boshqa konferentsiyalarda dastur qo'mitalari a'zosi. EPAM Systems’da amaliyotchi trener va 2012 yildan beri Hadoop/Spark va boshqa katta ma’lumotlar bilan do‘st.

Ushbu ma'ruzada Aleksey o'zining Apache Spark ML, Apache Mahout, Apache Flink ML bilan ishlash tajribasi va Apache Ignite ML ni yaratish tajribasi asosida taqsimlangan rejimda bajarish uchun klassik mashinani o'rganish algoritmlarini moslashtirish muammolari haqida gapiradi. Aleksey, shuningdek, ushbu ramkalarda taqsimlangan ML algoritmlarini amalga oshirish haqida gapiradi.

Va nihoyat, Yandex-dan Yandex ma'lumotlar bazasi haqida ikkita hisobot.

Vladislav Kuznetsov - Yandex ma'lumotlar bazasi - biz qanday qilib nosozliklarga chidamliligini ta'minlaymiz

19 gidra boshi. Dasturning ajoyib sharhi Vladislav - tarqatilgan platformalar guruhida Yandex-ning ishlab chiqaruvchisi. Yandex ma'lumotlar bazasi gorizontal ravishda kengaytiriladigan, geo-tarqatilgan, xatolarga chidamli DBMS bo'lib, disklar, serverlar, raftlar va ma'lumotlar markazlarining ishdan chiqishiga barqarorlikni yo'qotmasdan bardosh bera oladi. Xatolarga chidamliligini ta'minlash uchun taqsimlangan konsensusga erishish uchun xususiy algoritm, shuningdek, hisobotda batafsil muhokama qilinadigan bir qator texnik echimlar qo'llaniladi. Hisobot DBMS ishlab chiquvchilari uchun ham, DBMS asosidagi amaliy yechimlarni ishlab chiquvchilar uchun ham qiziqarli bo'lishi mumkin.

Semyon Checherinda - YDBda taqsimlangan tranzaktsiyalar

19 gidra boshi. Dasturning ajoyib sharhi Semyon Yandex-dagi taqsimlangan platformalar guruhining ishlab chiqaruvchisi bo'lib, YDB o'rnatilishidan ko'p ijarachilarga foydalanish imkoniyati ustida ishlamoqda.

Yandex ma'lumotlar bazasi OLTP so'rovlari uchun mo'ljallangan va tranzaksiya tizimi uchun ACID talablariga javob beradi. Ushbu hisobotda biz YDB tranzaksiya tizimi asosidagi tranzaktsiyalarni rejalashtirish algoritmini ko'rib chiqamiz. Keling, tranzaktsiyalarda qaysi sub'ektlar ishtirok etishini, tranzaktsiyalarga global tartibni kim belgilashini, tranzaktsiyaning atomligi, ishonchliligi va qat'iy izolyatsiya darajasiga qanday erishilganini ko'rib chiqaylik. Misol tariqasida umumiy muammodan foydalanib, keling, ikki fazali majburiyatlar va deterministik tranzaksiyalardan foydalangan holda tranzaktsiyalarni amalga oshirishni ko'rib chiqaylik. Keling, ularning farqlarini muhokama qilaylik.

Keyin nima?

Konferensiya dasturi yangi ma’ruzalar bilan to‘ldirishda davom etmoqda. Xususan, bizdan hisobot kutamiz Nikita Koval (ndkoval) JetBrains va Oleg Anastasyev (m0nstermind) Odnoklassniki kompaniyasidan. Nikita Kotlin jamoasida koroutinlar uchun algoritmlar ustida ishlaydi, Oleg esa Odnoklassniki platformasida yuqori yuklangan tizimlar uchun arxitektura va yechimlarni ishlab chiqadi. Bundan tashqari, yana 1 ta shartli bo'sh joy mavjud, hozirda dastur qo'mitasi nomzodlar bilan ishlamoqda.

Hydra konferensiyasi 11-12 iyul kunlari Sankt-Peterburgda bo‘lib o‘tadi. Chiptalar mavjud rasmiy veb-saytida sotib olish. Iltimos, onlayn chiptalar mavjudligiga e'tibor bering - agar biron sababga ko'ra shu kunlarda Sankt-Peterburgga borolmasangiz.

Hydrada ko'rishguncha!

Manba: www.habr.com

a Izoh qo'shish