11-12 juuli toimub Peterburis konverents , mis on pühendatud paralleelsete ja jaotatud süsteemide arendamisele. Hydra eripära on see, et see toob kokku suurepärased teadlased (keda tavaliselt leidub ainult välismaistel teaduskonverentsidel) ja tuntud praktikud insenerid, luues suure programmi teaduse ja praktika piiril.
Hydra on üks meie kõige olulisemaid konverentse viimase paarikümne aasta jooksul. Sellele eelnes väga tõsine ettevalmistus, esinejate ja ettekannete valik. Eelmisel nädalal ilmus ettevõtte JUG.ru Group direktoriga, Aleksei Fedoroviga ().
Meie kolme olulise osaleja, jaotatud süsteemide teooria alusepanija — Leslie Lamporti, Maurice Herlihy ja Mike Scottiga. On aeg rääkida kogu programmist lähemalt!

Motivatsioon
Kui tegelete programmeerimisega, siis paratamatult puutute kokku mitme lõime ja jaotatud arvutustega. Vastava ala spetsialistid töötavad nendega otse, ent jaotatus vaatab meile mitmel pool näkku: igas mitme tuumalises arvutis või jaotatud teenuses leidub midagi, mis teostab arvutusi paralleelselt.
On mitmeid konverentse, mis käsitlevad erinevaid rakendusprogrammimise aspekte. Teiselt poolt on meil spetsiaalsed teaduskoolid, mis loengute formaadis käsitlevad tohutul hulgal keerulist teooriat. Näiteks toimub koos Hydraga Peterburis . Konverentsil Hydra püüdsime kokku tuua nii ranget praktikat, teadust kui ka kõike, mis nende vahepeal asub.
Mõelge sellele: elame imeliselt ajal, mil on võimalik isiklikult kohtuda teaduse ja inseneritehnika aluste loojatega, millega me tegeleme. Füüsikud ei kohtuks ei Newtoni ega Einsteini — rong on läinud. Kuid meie kõrval elavad endiselt need, kes lõid jaotatud süsteemide teooria alused, mõtlesid välja populaarsed programmeerimiskeeled ja viidi esmakordselt ellu töötavad prototüübid. Need inimesed ei ole oma tööd pooleli jätnud, nad tegelevad praegu aktuaalsete ülesannetega tuntud ülikoolides ja ettevõtetes ning on tänase päeva kõige suuremad teadmiste ja kogemuste allikad.
Teiselt poolt jääb nende kohtumine tavaliselt puhtalt teoreetiliseks: harva suudab keegi meist pidevalt jälgida avalikke üritusi mõnes Rochesteri ülikoolis, et seejärel USAsse kiirustada ja tagasi loengule Michael Scottile. Kohtumine kõigi Hydra osalejatega oleks kulukas, rääkimata kulutatud ajast (kuigi see kõlab nagu huvitav ülesanne).
Teiselt poolt on meil palju tippinseneride, kes töötavad praegu aktuaalsete jaotussüsteemide probleemide kallal, ja neil on kindlasti midagi rääkida. Kuid probleem on — nad kasutavad, ja nende aeg on kallis. Jah, kui sa oled Microsofti, Google'i või JetBrainsi töötaja, suureneb tõenäosus, et kohtad ühte tuntud esinejat siseüritusel — aga üldiselt — ei juhtu see iga päev.
Seega täidab Hydra konverents olulist ülesannet, mida enamik meist ise teha ei saa — ühendab ühes kohas ja samal ajal inimesi, kelle ideed või suhtlemine võivad teie elu muuta. Ma tunnistan, et mitte kõik ei vaja jaotussüsteeme, mingeid keerulisi fundamentaalseid asju. Võib elada elu lõpuni PHP-s CRUD-e programmeerides ja olla täiesti õnnelik. Kuid kellele need on vajalikud — see on teie võimalus.
Esimesest Hydra konverentsi teadaandest Habré on möödunud juba piisavalt palju aega. Selle aja jooksul on tehtud tohutult tööd — ja nüüd on meil peaaegu kõikide ettekannete nimekiri. Ei mingit väsinud üheahelalisi algoritme, ainult puhas jaotatud hardcore! Lõpetame üldiste sõnadega ja vaatame, mis meil nüüd käes on.
Keynote'id
Keynote'id avavad ja lõpetavad konverentsipäevi. Tavaliselt avava keynote'i mõte on seada konverentsi üldine vaim ja suund. Lõppev keynote tõmbab joone alla ja selgitab, kuidas me peame elama konverentsi päevadel omandatud teadmiste ja oskustega. Algus ja lõpp: see, mis jääb paremini meelde, ja üldiselt on sellel suur tähendus.
Cliff Click —
Cliff on Java-maailma legend. 90ndate lõpus kirjutas ta oma doktoritööd nimega , mis hiljem sai aluseks HotSpot JVM Server Compiler. Kaks aastat hiljem töötas ta juba Sun Microsystemsis JVM-i kallal ja näitas kogu maailmale, et JIT-l on litsents eksisteerida. Kogu see lugu, et Java on üks kiiremaid kaasaegseid jooksutöid koos kõige nutikamate ja kiiremate optimeerimisega, tulenebki Cliff Clickist. Alguses arvati, et kui midagi on staatiliselt kompilaatorile kättesaadav, pole mõtet isegi JIT-i proovida. Cliffi ja tema meeskonna töö tõttu hakkasid kõik uued keeled tekkima JIT-kompilatsiooni idee ümber vaikimisi. See oli kindlasti töö, mis ei olnud üksi inimese teha, kuid Cliff mängis selles väga olulist rolli.
Cliff räägib oma avamiskõnes oma teisest ettevõtmisest — , mälus olev platvorm jaotatud ja skaleeritava masinaõppe jaoks tööstuslikuks kasutamiseks. Täpsemalt — jaotatud „võti-väärtus” laopidamine selle sees. See on väga kiire laohoidla, millel on palju huvitavaid omadusi (täpne loend on ), mis võimaldavad selliste lahenduste kasutamist suurandmete voogedastuse matemaatikas.
Veel üks ettekande, millega Cliff esineb — . Teine osa tema biograafiast — kümme aastat , kus ta uuendas ja parandas palju asju Azuli riistvara ja tehnoloogiate virnas: JIT-kompilaatorid, jooksutööd, lõngamudel, veahaldus, töötlus roboti, klasside laadimine jne — noh, te saite aru.
Kõige huvitavam osa algas siis, kui nad tegid äririistvara — superarvuti Java käitamiseks. See oli üsna innovatiivne asi, mis oli spetsiaalselt Java jaoks kohandatud, millel olid erilised nõudmised — mälubarjäärid madala viivitusega prügikoristamiseks, piiritletud massiivid, virtuaalsed kutsed… Üks ägedamaid tehnoloogiaid on riistvaraline tehinguline mälu. Iga L1 mis tahes 864 tuumas võis osaleda tehingu kirjutamises, mis on eriti oluline Java lukustusprobleemide lahendamiseks (sünkroniseeritud plokid võivad töötada paralleelselt seni, kuni ei esine tegelikku mälukonflikti). Kuid ilus idee purunes karmi reaalsuse tõttu — ja selles ettekandes räägib Cliff, miks HTM ja STM ei sobi väga hästi mitme lõimearvutuse praktiliste vajaduste jaoks.
Michael Scott —
— professor Computer Science Rochesteri Ülikoolis, kellega saatus ühendab teda , samas kui tema koduülikoolis Wisconsin–Madison oli ta dekaan viie aasta jooksul. Ta tegeleb uurimistöödega parallelse ja jaotatud programmeerimise alal ning õpetab seda tudengitele.
Kogu maailm tunneb Michaelit tänu õpikule , mille viimane väljaanne ilmus suhteliselt hiljuti — 2015. aastal. Tema töö saanud ühe tuntuma tööna jaotatud arvutuste valdkonnas ning Rochesteri Ülikooli veebiraamatukogus. Samuti võite teada teda kui selle Michael-Scott algoritmi autori, mis on .
Mis puutub Java maailma, siis siin on olukord eriline: koos Doug Leaga disainis ta need mittesünkroonitud algoritmid ja sünkroonitud järjekorrad, millel töötavad Java raamatukogud. Just sellest räägitakse alapealkirjas «Kaksikordne andmestruktuur» — nende struktuuride integreerimine Java SE 6-s lubas saavutada kümnekordse tõusu jõudluses java.util.concurrent.ThreadPoolExecutor. Kui olete varem huvitatud, millised need on «Kaksikordne andmestruktuur», siis selle kohta on olemas .
Maurice Herlihy —
— Dijkstra auhinna saaja. Esimene — töö eest (Brown University), ja teine, uuem — (Virginia Tech University). Dijkstra auhind antakse tööde eest, mille tähtsus ja mõju on olnud nähtavad vähemalt kümme aastat, ja on ilmne, et Maurice on üks tuntumaid spetsialiste alal. Praegu töötab ta professorina Brown Ülikoolis ja tal on palju saavutusi, mis mahuksid tervele lõigule.
Selles lõppkõnes räägib Maurice plokiahelate jaotatud süsteemide teooriast ja praktikast klassikalise jaotatud arvutamise vaatepunktist ning kuidas see lihtsustab paljusid seotud probleeme. See ettekande teema puutub rangelt konverentsi teemasse — see ei ole põhjalik kaevandamishüpe, vaid pigem see, kuidas meie teadmisi saab üllatavalt tõhusalt ja asjakohaselt kasutada väga erinevaid ülesandeid silmas pidades.
Juulis 2017 külastas Maurice juba Venemaad SPTDC koolis, osales JUG.ru koosolekul ning salvestust on võimalik vaadata YouTube'is:

Peamine programm
Edasi saab olema väike ülevaade ettekannetest, mis on programmi kaasatud. Osa ettekannetest on siin detailselt kirjeldatud, osa - lühemalt. Pikad kirjeldused on peamiselt ingliskeelsete ettekannete omad, mis vajavad viiteid teadustöödele, termineid Vikipeedias ja nii edasi. Täielikku nimekirja saab . Nimekiri veebilehel uuendatakse ja täiendatakse.
Leslie Lamport —
Leslie Lamport on uute aluste rajaja hajutatud arvutustes. tähendab «Lamport TeX». Just tema tutvustas esmakordselt 1979. aastal mõistet , ning tema artikkel saadi Dijkstra auhind.
See on programmiformaadilt kõige ebatavalisem osa, kuna see pole isegi ettekanne, vaid küsimuste ja vastuste sessioon. Kui enamik publikust on juba tuttavad (või saavad tutvuda) erinevate töödega, mis põhinevad „Lamporti teoorial”, tema enda artiklite ja ettekannetega, on väga oluline kulutada kogu saadaval olev aeg otse suhtlemiseks.
Idee on lihtne - vaatate YouTube'is kahte ettekannet: ja ja valmistate ette vähemalt ühe küsimuse, millele Leslie vastab.
Esimene neist kahest videost on me juba . Kui teil pole videot vaadata tund aega, saate seda kiiresti lugeda tekstina.
Märkus: YouTube'is on palju rohkem videoid Leslie Lamportiga. Näiteks on olemas suurepärane . Kõik selle kursuse offline-versioon on autori , ja YouTube'is on see mugavama vaate jaoks mobiilseadmetes üles laaditud.
Martin Kleppmann —
Martin Kleppmann on Cambridge'i ülikooli teadlane, kes töötab CRDT ja algoritmide formaalse tõendamise kallal. Marti raamat , mis ilmus 2017. aastal, osutus väga edukaks ja jõudis andmete salvestamise ja töötlemise valdkonna bestsellerite nimekirja. Kevin Scott, Microsofti CTO, : „See raamat peaks olema kohustuslik insener-arendajatele. See on haruldane ressurss, mis ühendab teooria ja praktika, aidates arendajatel targemalt projekteerida ja ellu viia infrastruktuuri ja andmetöötlussüsteeme.” Midagi sarnast ütles ka Kafka looja ja Confluenti CTO Jay Kreps.
Enne kui Martin hakkas tegelema akadeemiliste uurimistöödega, töötas ta tööstuses ja oli kahe eduka idufirma kaasasutaja.
- Rapportive, mis oli pühendatud teie e-posti kontaktide sotsiaalsete profiilide kuvamisele, mille LinkedIn ostis 2012. aastal;
- Go Test It, teenus veebilehtede automaatseks testimiseks erinevates brauserites, mille RedGate ostis 2009. aastal.
Üldiselt on Martin, kuigi vähem tuntud kui meie peaesinejad, suutnud panustada nii hajutatud arvutuste arendusse kui ka tööstusesse.
Selles ettekandes räägib Martin teemast, mis on rohkem seotud tema akadeemiliste uurimistöödega. Google Docsis ja sarnastes tarkvarades, mis võimaldavad koostööd dokumentide redigeerimisel, tähendab „koostöö redigeerimine” replikatsiooni ülesannet: igal kasutajal on oma replik ühises dokumendis, mida nad seejärel muudavad, ja kõik muudatused saadetakse üle võrgu teistele osalejatele. Dokumentide muudatused offline-režiimis toovad kaasa ajutise järjepidevuse puudumise dokumendi suhtes teiste osalejate seas ning uuesti sünkroonimine nõuab konfliktide lahendamist. Just selleks on olemas (CRDT), mis on sisuliselt üsna uus asi, mille sisu formuleeriti vaid 2011. aastal. Selles ettekandes arutatakse, mida on alates sellest ajast CRDT maailmas toimunud, millised on kõige hiljutisemad saavutused, arutatakse lähenemist kohalikele rakendustele ja avatud lähtekoodiga teegi eriti kasutamise üle.
Järgmisel nädalal avaldame Habbres suure intervjuu Martiniga, see on huvitav.
Pedro Ramalhete —
Pedro töötab Cisco's ja on viimased kümme aastat arendanud paralleelseid algoritme, sealhulgas sünkroniseerimise mehhanisme, lukustamata ja ooteta andmestruktuure ning kõike, mida saate sellel teemal ette kujutada. Tema praegused teadus- ja insenerihuvide kipuvad olema Universaalsete Konstruktsioonide, Tarkvaralise Tehingulise Mäluga, Püsiva Mäluga ja sarnaste tehnoloogiatega, mis võimaldavad ellu viia korrektseid, skaleeritavaid ja talitlushäireteta rakendusi. Ja veel on ta autor laialdaselt tuntud kitsastes ringkondades blogis .
Enamik multitegutsevaid rakendusi töötab praegu paralleelsete andmestruktuuridega, alates sõnumijärjekordade kasutamisest aktorite vahel kuni indeksitud andmestruktuurideni võtme-väärtuse salvestustes. Java JDK-s töötavad need edukalt juba mitu aastat ja C++-s lisanduvad need järk-järgult.
Kõige lihtsam viis paralleelse andmestruktuuri rakendamiseks on järjestikune (ühethreads) versioon, kus meetodid on kaitstud muteeksidega. See on kõigile algajatele kergesti kättesaadav, kuid tal on ilmseid probleeme skaleerimise ja jõudlusega. Samal ajal suudavad lukustamata ja ootevabad andmestruktuurid mitte ainult paremini tegeleda vigadega, vaid neil on ka efektiivsem jõudlusprofiil — siiski on nende arendamiseks vajalik sügav ekspertiis ja kohandamine konkreetse rakenduse jaoks. Üks vale koodireade võib kõike rikkuda.
Kuidas teha nii, et isegi mitteekspert saaks selliseid andmestruktuure disainida ja rakendada? On teada, et iga järjestikuse algoritmi saab muuta lõimeteadlikuks kas , või tehingumälu abil. Üks neist võimalustest võib vähendada takistust selle probleemi lahendamiseks. Kuid mõlemad lahendused viivad tavaliselt ebaefektiivse rakenduse loomiseni. Pedro räägib sellest, kuidas neil õnnestus need konstruktsioonid tõhusamaks muuta ja kuidas neid enda algoritmides kasutada.
Heidi Howard —
Heidi Howard, nagu ka Martin, on jaotatud süsteemide uurija Cambridge'i ülikoolis. Tema eriala on järjepidevus, tõrkekindlus, jõudlus ja jaotatud konsensus. Ta on kõige tuntum Paxose algoritmi üldistamise järgi, mida tuntakse kui .
peamine — protokollide perekond, mis lahendab konsensuse probleemi ebausaldusväärsete arvutite võrgus, mis põhineb Leslie Lamporti töödel. Seega töötavad mõned meie esinejad ülesannete kallal, mille algselt pakkusid teised meie esinejad — ja see on imeline.
Mitme hosti vahel konsensi leidmine - aadresside, liidri valimise, blokeerimise või koordineerimise osas - on kaasaegsete jaotatud süsteemide põhiline küsimus. Paxos on praegu peamine meetod konsensuse leidmise probleemide lahendamiseks ning selle ümber käib palju uurimistööd, mille eesmärk on laiendada ja optimeerida algoritmi erinevate praktiliste vajaduste rahuldamiseks.
Selles ettekandes vaatame üle Paxose teoreetilise aluse, leevendades algseid nõudeid ja üldistades algoritmi. Näeme, et Paxos on tegelikult vaid üks variant tohutu konsensuse lähenemisviiside spektris ning et selle spektri teised punktid on samuti äärmiselt kasulikud hea jaotatud süsteemi ehitamiseks.
Alex Petrov -
Alex on andmebaaside ja salvestussüsteemide ekspert ning meie jaoks on oluline, et ta on committer . Koos O'Reillyga töötab ta praegu raamatu
Süsteemide jaoks (vene keeles - "lõppkokkuvõttes järjepidevus"), pärast sõlme kokku kukkumist või võrgu jagunemist, tuleb lahendada järgmine dilemma: kas jätkata päringute täitmist, ohverdades järjepidevuse, või keelduda nende täitmisest ja ohverdada kättesaadavus. Sellises süsteemis võivad kvootidega kattuvad alamkogud, mis tagavad, et vähemalt ühes sõlmes on kõige uuem väärtus, olla hea piirangulahendus. Saame taluda tõrkeid ja ühenduse kadumist teatud sõlmede puhul, jätkates samal ajal kõige värskemate väärtuste vastamist.
Kuid iga asi tuleb oma hinna eest. Kvootide replikatsiooniskeem tähendab suurenenud salvestamiskulusid: on vajalik hoida liikmesriikides liigset teavet, et tagada piisava hulga kergesti kätte saadavaid koopiaid probleemi tekkimisel. Selgub, et pole vajalik hoida kõiki andmeid kõigis replikates. Andmete hoidmist on võimalik vähendada, kui hoida neid vaid osades sõlmedes ning tõrkeolukordade käsitlemiseks kasutada spetsiaalseid sõlmi (ajutine replikatsioon).
Ettekande käigus arutame , replikatsiooniskeemi, mida kasutatakse ja , ja selle kontseptsiooni rakendust Apache Cassandra's nime all .
Dmitry Vyukov -
Dmitri on Google'is töötav arendaja, kes tegeleb C/C++ ja Go dünaamilise testimisega - Address/Memory/ThreadSanitizer ning sarnaste tööriistadega Linuxi tuumas. Ta on andnud panuse Go-sse skaleeritava goroutine'i plaani, võrgupolleri ja paralleelse prügikoristaja loomisel. Ta on ekspert mitme tahkete operatsioonide vallas, on loonud tosin uut mittesünkroonitud algoritmi ja on omanik Intel.
Nüüd veidi doklaadi enda kohta. Keeles Go on olemas sisemine tugi mitme tahke protsesside jaoks goroutine'ide (kergete niitide) ja kanalite (FIFO järjekordade) vormis. Tänu nendele mehhanismidele on kasutajatel väga lihtne ja mugav kirjutada kaasaegseid mitme tahke rakendusi ning see tundub nagu maagia. Nagu me mõistame, pole siin mingit maagiat. Selles ettekandes sukeldub Dmitri Go plaani üksikasjadesse ja näitab selle "maagia" rakendamise saladusi. Alustuseks annab ta ülevaate plaani põhikomponentidest, räägib, kuidas see töötab. Edasi uurime lähemalt individuaalseid aspekte, nagu parkimise ja vabastamise strateegiad ning blokeerivate süsteemikutsungite töötlemine. Lõpuks räägib Dmitri veidi võimalike täiustuste kohta plaanis.
Dmitri Bugaitšenko -
Dmitri on töötanud peaaegu 9 aastat allhankes, säilitades samal ajal kontakti ülikooli ja teadusmaailmaga. Suurte andmete analüüs Oduklassikates oli tema jaoks ainulaadne võimalus liita teoreetilised teadmised ja teaduslik alus reaalses ja nõutud toote arendamisse.
Jaotatud graafide analüüs on olnud ja jääb keeruliseks ülesandeks: kui on vajalik teave naabervertu sõlmede suhete kohta, tuleb sageli andmeid edastada masinate vahel, mis suurendab täitmise aega ja koormust võrguinfrastruktuurile. Selles ettekandes näeme, kuidas saab olulist töötlemise kiirus kasu tõenäosuslikest andmestruktuuridest või faktidest, nagu sotsiaalvõrgustiku sõprade graafi sümmeetria. Kõike seda illustreeritakse koodi näidetega Apache Spark'is.
Denis Rõtsov -
Denis on arendaja , ekspert mudelite järjepidevuse kontrollimises, konsensusalgoritmides ja jaotatud tehingutes. Praegu töötab ta Microsoftis, enne seda töötas jaotatud süsteemide alal Amazonis ja Yandexis.
Selles ettekandes tutvume viimastel aastatel välja töötatud jaotatud tehingute protokollidega, mida saab kliendipoolt rakendada mis tahes andmebaasi peal, mis toetab tingimuslikku uuendamist (compare and set). Oluline on, et elu ei lõppe kahefaasilise kinnitamisega; tehinguid saab lisada mis tahes andmebaaside kohale — rakendustasandil, kuid erinevatel protokollidel (2PC, Percolator, RAMP) on erinevad kaubanduslikud kompromissid ja need ei ole tasuta.
Aleksandr Zinovjev —
Aleksandr () — meie pikaajaline esineja ja programmikomiteede liige teistel konverentsidel. Praktiseeriv koolitaja ettevõttes EPAM Systems ja Hadoop / Sparkiga ja muude big data lahendustega tegeleb ta alates 2012. aastast.
Selles ettekandes räägib Aleksandr klassikaliste masinõppe algoritmide kohandamise probleemidest jaotatud režiimides rakendamise kohta, tuginedes oma kogemustele Apache Spark ML, Apache Mahout, Apache Flink ML ja Apache Ignite ML loomisel. Samuti räägib Aleksandr nendes raamistikudes jaotatud masinõppe algoritmide rakendamisest.
Ja lõpuks — kaks ettekannet Yandexilt teemal Yandex Database.
Vladislav Kuznetsov —
Vladislav on arendaja Yandexis jaotatud platvormide grupis. Yandex Database on horisontaalselt skaleeritav geograafia ja talitlushäiretega suhtlusandmebaas, mis talub ketaste, serverite, riiulite ja andmekeskuste rikkeid ilma järjepidevust rikkumata. Talitlushäirete taluvuse tagamiseks kasutatakse oma konsensuse saavutamise algoritmi, samuti rida tehnilisi lahendusi, mis on kõikehõlmavad ettekandes. See ettekande võib huvi pakkuda nii andmebaasi arendajatele kui ka andmebaasi alusel rakenduste arendajatele.
Semen Checherinda —
Semen on arendaja Yandexi jaotatud platvormide grupis, kes töötab YDB installeerimise mitme kasutaja kasutamise võimaluste nimel.
Yandex Database on loodud OLTP-päringute jaoks ja vastab ACID nõuetele tehingusüsteemile. Ettekandes käsitleme tehingute planeerimise algoritmi, mis on YDB tehingusüsteemi aluseks. Uurime, millised üksused osalevad tehingutes, kes määrab tehingutele globaalse järjekorra, kuidas saavutatakse tehingute atomraalsus, usaldusväärsus ja range isoleerimise tase. Tutvustame tehingute rakendusi kaheastmelise kinnituse ja määratletud tehingute kaudu, kasutades laialdaselt levinud probleemi näidet. Arutame nende erinevusi.
Mis edasi?
Konverentsi kava jätkab uute ettekannetega täitmist. Eriti ootame ettekannet Nikita Kovalilt () JetBrains'ist ja Oleg Anastasjevi () firmast Odnoklassniki. Nikita tegeleb korutineid käsitlevate algoritmidega Kotlin'i meeskonnas, samas kui Oleg arendab arhitektuuri ja lahendusi suure koormuse süsteemide jaoks Odnoklassniki platvormil. Lisaks on veel 1 tinglikult tühi koht, mille kandidaatidega töötab praegu programmikomitee.
Konverents Hydra toimub 11.-12. juulil Peterburis. Pileteid saab . Juhime tähelepanu Online-piletite olemasolule — kui te ei saa mingil põhjusel Peterburi sel päevadel reaalajas kohale tulla.
Kohtume Hydral!
Allikas: habr.com
