19 na ulo ng hydra. Mahusay na pangkalahatang-ideya ng programa

Isang kumperensya ang magaganap sa Hulyo 11-12 sa St. Petersburg Haydra, na nakatuon sa pagbuo ng parallel at distributed system. Ang trick ng Hydra ay pinagsasama nito ang mga cool na siyentipiko (na kadalasang matatagpuan lamang sa mga dayuhang siyentipikong kumperensya) at mga sikat na nagsasanay na mga inhinyero sa isang malaking programa sa intersection ng agham at pagsasanay.

Ang Hydra ay isa sa aming pinakamahalagang kumperensya sa mga nakaraang taon. Naunahan ito ng napakaseryosong paghahanda, pagpili ng mga tagapagsalita at mga ulat. Noong nakaraang linggo tungkol dito Lumabas ang interview ni Khabro kasama ang direktor ng JUG.ru Group, Alexey Fedorov (23derevo).

Kami nasabi na tungkol sa tatlong mahahalagang kalahok, ang mga tagapagtatag ng teorya ng mga ipinamamahaging sistema - Leslie Lamport, Maurice Herlihy at Michael Scott. Oras na para pag-usapan nang mas detalyado ang buong programa!

19 na ulo ng hydra. Mahusay na pangkalahatang-ideya ng programa

Pagganyak

Kung ikaw ay kasangkot sa programming, kung gayon sa isang paraan o iba pa ay nakikipag-ugnayan ka sa multithreading at distributed computing. Ang mga eksperto sa mga nauugnay na larangan ay direktang nakikipagtulungan sa kanila, ngunit hindi malinaw, ang pamamahagi ay tumitingin sa amin mula sa lahat ng dako: sa anumang multi-core na computer o distributed na serbisyo mayroong isang bagay na nagsasagawa ng mga kalkulasyon nang magkatulad.

Mayroong maraming mga kumperensya na sumasaklaw sa iba't ibang aspeto ng application programming. Sa kabilang panig ng spectrum, mayroon kaming mga dalubhasang siyentipikong paaralan na nagpapakita ng napakaraming kumplikadong teorya sa format ng panayam. Halimbawa, kahanay sa Hydra sa St. Petersburg mayroong paaralan ng SPTDC. Sa kumperensya ng Hydra, sinubukan naming pagsama-samahin ang malupit na kasanayan, agham, at lahat ng bagay sa kanilang intersection.

Isipin ito: nabubuhay tayo sa isang kamangha-manghang panahon kung saan makikita mo nang personal ang mga tagapagtatag ng larangan ng agham at inhinyero na ating pinag-aaralan. Ang mga physicist ay hindi makakatagpo ni Newton o Einstein - umalis na ang tren. Ngunit sa tabi namin nakatira pa rin ang mga lumikha ng mga pundasyon ng teorya ng mga ipinamamahaging sistema, nag-imbento ng mga sikat na programming language, at sa unang pagkakataon ay isinama ang lahat ng ito sa mga gumaganang prototype. Ang mga taong ito ay hindi huminto sa kanilang mga trabaho sa kalagitnaan, sila ay nagtatrabaho ngayon sa mga mabibigat na isyu sa mga kilalang unibersidad at kumpanya sa mundo, at sila ang pinakadakilang pinagmumulan ng kaalaman at karanasan ngayon.

Sa kabilang banda, ang pagkakataong makilala sila ay karaniwang nananatiling puro teoretikal: iilan sa atin ang maaaring patuloy na sumusubaybay sa mga pampublikong kaganapan sa ilang Unibersidad ng Rochester, at pagkatapos ay magmadali sa USA at bumalik para sa isang lecture kasama si Michael Scott. Ang pagbisita sa lahat ng miyembro ng Hydra ay nagkakahalaga ng isang maliit na kapalaran, hindi mabibilang ang kailaliman ng nasayang na oras (bagaman ito ay parang isang kawili-wiling paghahanap).

Sa kabilang banda, mayroon kaming maraming nangungunang mga inhinyero na nagtatrabaho sa pagpindot sa mga problema sa mga distributed system sa ngayon, at tiyak na marami silang sasabihin. Ngunit narito ang problema - sila Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, at ang kanilang oras ay mahalaga. Oo, kung ikaw ay isang empleyado ng Microsoft, Google o JetBrains, ang posibilidad na makilala ang isa sa mga sikat na tagapagsalita sa isang panloob na kaganapan ay tumataas nang husto, ngunit sa pangkalahatan, hindi, hindi ito nangyayari araw-araw.

Sa ganitong paraan, nagagawa ng Hydra Conference ang isang mahalagang gawain na hindi kayang gawin ng karamihan sa atin nang mag-isa - sa isang lugar at sa isang pagkakataon, pinagsasama-sama nito ang mga tao na may mga ideya o pakikipag-ugnayan na maaaring makapagpabago ng iyong buhay. Inaamin ko na hindi lahat ay nangangailangan ng mga distributed system o ilang kumplikadong pangunahing bagay. Maaari kang magprogram ng mga CRUD sa PHP sa buong buhay mo at manatiling ganap na masaya. Ngunit kung sino ang nangangailangan nito, ito na ang iyong pagkakataon.

Medyo mahabang panahon na ang lumipas mula noong unang anunsyo ng Hydra conference sa HabrΓ©. Sa panahong ito, maraming gawain ang nagawa - at ngayon ay mayroon na kaming listahan ng halos lahat ng mga ulat. Walang matamlay na single-threaded algorithm, puro hardcore lang ang ipinamahagi! Tapusin natin ang mga pangkalahatang salita at tingnan kung ano ang nasa ating mga kamay ngayon.

Keynotes

Ang mga pangunahing tono ay nagsisimula at nagtatapos sa mga araw ng kumperensya. Kadalasan ang punto ng pambungad na tono ay ang itakda ang pangkalahatang diwa at direksyon ng kumperensya. Ang pangwakas na keynote ay gumuhit ng isang linya at nagpapaliwanag kung paano tayo mabubuhay sa kaalaman at kasanayang nakuha sa panahon ng kumperensya. Ang simula at ang wakas: kung ano ang pinakamahusay na naaalala, at sa pangkalahatan, ay nadagdagan ang kahalagahan.

Cliff Click Ang H2O distributed K/V algorithm

19 na ulo ng hydra. Mahusay na pangkalahatang-ideya ng programa Ang Cliff ay isang alamat sa mundo ng Java. Noong huling bahagi ng dekada 90, para sa kanyang PhD thesis, sumulat siya ng isang papel na pinamagatang "Pagsasama-sama ng Mga Pagsusuri, Pagsasama-sama ng Mga Pag-optimize", na pagkaraan ng ilang panahon ay naging batayan para sa HotSpot JVM Server Compiler. Pagkalipas ng dalawang taon, nagtatrabaho na siya sa Sun Microsystems sa JVM at ipinakita sa buong mundo na may karapatang umiral ang JIT. Ang buong kuwentong ito tungkol sa kung paano ang Java ay isa sa pinakamabilis na modernong runtime na may pinakamatalino at pinakamabilis na pag-optimize ay nagmula sa Cliff Click. Sa simula pa lang, pinaniniwalaan na kung ang isang bagay ay naa-access sa isang static na compiler, hindi mo na kailangang subukang i-jit ito. Salamat sa gawain ni Cliff at ng koponan, ang lahat ng mga bagong wika ay nagsimulang malikha gamit ang ideya ng JIT compilation bilang default. Siyempre, ito ay hindi isang trabaho ng isang tao, ngunit si Cliff ay gumanap ng isang napakahalagang papel dito.

Sa pambungad na keynote, sasabihin ni Cliff ang tungkol sa kanyang iba pang pagsisikap - H20, isang in-memory na platform para sa distributed at scalable machine learning para sa mga pang-industriyang application. O mas tiyak, tungkol sa distributed storage ng mga key-value pairs sa loob nito. Ito ay isang napakabilis na imbakan na may maraming kawili-wiling mga katangian (ang eksaktong listahan ay nasa paglalarawan), na nagpapahintulot sa paggamit ng mga katulad na solusyon sa matematika ng malaking data streaming.

Ang isa pang ulat na ibibigay ni Cliff ay - Ang karanasan sa Azul Hardware Transactional Memory. Ang isa pang bahagi ng kanyang talambuhay - sampung taon Nagtatrabaho sa Azul, kung saan nag-update at nagpahusay siya ng maraming bagay sa Azul hardware at technology stack: JIT compiler, runtime, thread model, error handling, stack handling, hardware interrupts, class loading, at iba pa at iba pa - well, makukuha mo ang idea.

Nagsimula ang pinakakawili-wiling bahagi nang gumawa sila ng hardware para sa isang malaking negosyo - isang supercomputer na magpapatakbo ng Java. Ito ay isang medyo makabagong bagay, partikular na iniakma para sa Java, na may mga espesyal na kinakailangan - basahin ang mga hadlang sa memorya para sa mababang pag-pause ng koleksyon ng basura, mga array na may hangganan na pagsuri, mga virtual na tawag... Isa sa mga pinaka-cool na teknolohiya ay hardware transactional memory. Ang buong L1 ng alinman sa 864 na mga core ay maaaring lumahok sa transaksyonal na pagsulat, na lalong mahalaga para sa pagtatrabaho sa mga lock sa Java (ang mga naka-synchronize na bloke ay maaaring gumana nang magkatulad hangga't walang tunay na salungatan sa memorya). Ngunit ang magandang ideya ay nadurog ng malupit na katotohanan - at sa pag-uusap na ito ay sasabihin sa iyo ni Cliff kung bakit ang HTM at STM ay hindi masyadong angkop para sa mga praktikal na pangangailangan ng multi-threaded computing.

Michael Scott - Dalawang istruktura ng data

19 na ulo ng hydra. Mahusay na pangkalahatang-ideya ng programa Michael Scott - Propesor ng Computer Science sa Unibersidad ng Rochester, kung saan ikinonekta siya ng kapalaran 34 taong gulang na, at sa kanyang tahanan University of Wisconsin–Madison, siya ay dean sa loob ng limang taon. Siya ay nagsasaliksik at nagtuturo sa mga mag-aaral tungkol sa parallel at distributed programming at language design.

Kilala ng buong mundo si Michael salamat sa aklat-aralin "Programming Language Pragmatics", ang pinakabagong edisyon kung saan ay nai-publish kamakailan - noong 2015. Trabaho niya "Mga algorithm para sa scalable na pag-synchronize sa shared-memory multiprocessors" natanggap Dijkstra Prize bilang isa sa pinakatanyag sa larangan ng distributed computing at lantarang nagsisinungaling sa University of Rochester Online Library. Maaaring kilala mo rin siya bilang may-akda ng mismong Michael-Scott algorithm mula sa "Simple, Mabilis, at Praktikal na Hindi Bina-block at Bina-block ang Mga Algorithm ng Kasabay na Queue".

Tulad ng para sa mundo ng Java, ito ay isang espesyal na kaso: kasama si Doug Lea, binuo niya ang mga hindi naka-block na algorithm at magkakasabay na mga pila kung saan gumagana ang mga library ng Java. Ito ay eksakto kung ano ang magiging pangunahing tono ng "Dual data structures" - ang pagpapakilala ng mga istrukturang ito sa Java SE 6 ay nagpabuti ng pagganap ng 10 beses java.util.concurrent.ThreadPoolExecutor. Kung ikaw ay nagtataka nang maaga kung ano ang mga "Dual na istruktura ng data" na ito, kung gayon mayroong impormasyon tungkol dito kaugnay na gawain.

Maurice Herlihy - Blockchain at ang hinaharap ng distributed computing

19 na ulo ng hydra. Mahusay na pangkalahatang-ideya ng programa Maurice Herlihy - nagwagi ng dalawang Dijkstra Prize. Ang una ay para sa trabaho "Wait-Free Synchronization" (Brown University), at ang pangalawa, mas kamakailan - "Transactional Memory: Architectural Support para sa Lock-Free Data Structure" (Virginia Tech University). Kinikilala ng Dijkstra Prize ang trabaho na ang kahalagahan at epekto ay nakikita nang hindi bababa sa sampung taon, at si Maurice ay malinaw na isa sa mga pinakakilalang eksperto sa larangan. Kasalukuyan siyang nagtatrabaho bilang isang propesor sa Brown University at may talata-mahabang listahan ng mga nagawa.

Sa closing keynote na ito, tatalakayin ni Maurice ang teorya at praktika ng blockchain distributed systems mula sa punto ng view ng classics ng distributed computing at kung paano nito pinapasimple ang maraming kaugnay na problema. Ito ay isang ulat na eksklusibo sa paksa ng kumperensya - hindi sa lahat tungkol sa pagmimina hype, ngunit sa halip tungkol sa kung paano ang aming kaalaman ay maaaring magamit sa kamangha-manghang epektibo at naaangkop na may kaugnayan sa iba't ibang mga gawain.

Noong Hulyo 2017, pumunta na si Maurice sa Russia upang dumalo sa paaralan ng SPTDC, lumahok sa JUG.ru meetup, at mapapanood ang recording sa YouTube:

Pangunahing programa

Susunod ay magkakaroon ng maikling pangkalahatang-ideya ng mga ulat na kasama sa programa. Ang ilan sa mga ulat ay inilarawan dito nang detalyado, ang iba ay mas maikli. Ang mahahabang paglalarawan ay pangunahing napunta sa mga ulat sa wikang Ingles na nangangailangan ng mga link sa mga siyentipikong papel, termino sa Wikipedia, at iba pa. Ang buong listahan ay magagamit tingnan sa website ng kumperensya. Ang listahan sa website ay ia-update at pupunan.

Leslie Lamport - Q&A

19 na ulo ng hydra. Mahusay na pangkalahatang-ideya ng programa Si Leslie Lamport ang may-akda ng mga seminal na gawa sa distributed computing. "LaTeX" ay nangangahulugang "Lamport TeX". Siya ang unang nagpakilala ng konsepto noong 1979 pare-pareho ang pagkakapare-pareho, at ang kanyang artikulo "Paano Gumawa ng Multiprocessor Computer na Tamang Nagsasagawa ng Mga Multiprocess na Programa" nakatanggap ng Dijkstra Prize.

Ito ang pinaka-hindi pangkaraniwang bahagi ng programa sa format, dahil hindi ito kahit isang ulat, ngunit isang sesyon ng tanong at sagot. Kapag ang isang makabuluhang bahagi ng madla ay pamilyar na (o maaaring maging pamilyar) sa lahat ng uri ng mga gawa batay sa "teorya ni Lamport", ang kanyang sariling mga artikulo at ulat, mas mahalaga na gugulin ang lahat ng magagamit na oras sa direktang komunikasyon.

Ang ideya ay simple - nanonood ka ng dalawang ulat sa YouTube: "Ang Programming ay Dapat Higit pa sa Pag-coding" ΠΈ "Kung Hindi Ka Nagsusulat ng Programa, Huwag Gumamit ng Programming Language" at maghanda ng kahit isang tanong, at sinasagot ni Leslie.

Ang una sa dalawang video na ito ay mayroon na kami naging habro article. Kung wala kang isang oras ng oras upang panoorin ang video, maaari mong mabilis na basahin ang lahat ng ito sa text form.

Tandaan: Marami pang Leslie Lamport na video sa YouTube. Halimbawa, mayroong isang mahusay kursong TLA+. Available ang offline na bersyon ng buong kursong ito sa home page ng may-akda, at in-upload niya ito sa YouTube para sa mas madaling panonood sa mga mobile device.

Martin Kleppmann - Pag-sync ng data sa mga device ng user para sa distributed collaboration

19 na ulo ng hydra. Mahusay na pangkalahatang-ideya ng programa Si Martin Kleppmann ay isang mananaliksik sa University of Cambridge na nagtatrabaho sa CRDT at pormal na pag-verify ng mga algorithm. Ang libro ni Martin "Pagdidisenyo ng Data-Intensive Application", na inilathala noong 2017, ay napatunayang napakatagumpay at napunta ito sa mga listahan ng bestseller sa larangan ng pag-iimbak at pagproseso ng data. Kevin Scott, CTO sa Microsoft, kapag sinabi: β€œAng aklat na ito ay dapat na kailangan ng mga software engineer. Ito ay isang bihirang mapagkukunan na pinagsasama ang teorya at kasanayan upang matulungan ang mga developer na mas matalino sa pagdidisenyo at pagpapatupad ng imprastraktura at mga sistema ng data." Ang lumikha ng Kafka at CTO ng Confluent, si Jay Kreps, ay nagsabi ng katulad na bagay.

Bago lumipat sa akademikong pananaliksik, nagtrabaho si Martin sa industriya at nagtatag ng dalawang matagumpay na start-up:

  • Rapportive, nakatuon sa pagpapakita ng social profile ng mga contact mula sa iyong email, na binili ng LinkedIn noong 2012;
  • Go Test It, isang serbisyo para sa awtomatikong pagsubok sa mga website sa iba't ibang browser, na binili ng RedGate noong 2009.

Sa pangkalahatan, si Martin, bagama't hindi gaanong sikat kaysa sa aming mga keynote, ay nakapagbigay na ng ilang kontribusyon sa pagpapaunlad ng distributed computing at sa industriya.

Sa pag-uusap na ito, tatalakayin ni Martin ang isang paksang mas malapit sa kanyang akademikong pananaliksik. Sa Google Docs at mga katulad na mga sofa sa co-editing ng dokumento, ang "collaborative na pag-edit" ay tumutukoy sa isang gawaing pagtitiklop: ang bawat user ay may sariling kopya ng nakabahaging dokumento, na pagkatapos ay binago nila, at lahat ng mga pagbabago ay ipinapadala sa buong network sa iba pang bahagi ng mga kalahok. Ang mga pagbabago sa mga dokumentong offline ay humahantong sa pansamantalang hindi pagkakapare-pareho ng dokumento kaugnay ng iba pang mga kalahok, at ang muling pag-synchronize ay nangangailangan ng paghawak ng salungatan. Iyon mismo ang kanilang umiiral Mga Uri ng Data na Kinulit na Walang Salungatan (CRDT), sa katunayan, ay isang medyo bagong bagay, ang kakanyahan nito ay nabuo lamang noong 2011. Tinatalakay ng pag-uusap na ito kung ano ang nangyari mula noon sa mundo ng CRDT, kung ano ang mga pinakahuling pag-unlad, ang diskarte sa paglikha ng mga local-first application sa pangkalahatan at ang paggamit ng open source library Automerge sa partikular.

Sa susunod na linggo ay maglalathala kami ng mahabang panayam kay Martin sa HabrΓ©, ito ay magiging kawili-wili.

Pedro Ramalhete - Mga istruktura ng data na walang paghihintay at mga transaksyong walang paghihintay

19 na ulo ng hydra. Mahusay na pangkalahatang-ideya ng programa Nagtatrabaho si Pedro sa Cisco at bumuo ng parallel algorithm sa nakalipas na sampung taon o higit pa, kabilang ang mga mekanismo ng pag-synchronize, lock-free at wait-free na mga istruktura ng data at lahat ng maiisip mo sa paksang ito. Ang kanyang kasalukuyang mga interes sa pananaliksik at engineering ay nakatuon sa Universal Constructions, Software Transactional Memory, Persistent Memory at mga katulad na teknolohiya na nagpapagana ng tama, nasusukat at fault-tolerant na mga application. Siya rin ang may-akda ng isang blog na kilala sa mga makitid na bilog Concurrency Freaks.

Karamihan sa mga multithreaded na application ay tumatakbo na ngayon sa mga parallel na istruktura ng data, mula sa paggamit ng mga pila ng mensahe sa pagitan ng mga aktor hanggang sa mga na-index na istruktura ng data sa mga tindahan ng key-value. Matagumpay silang nagtatrabaho sa Java JDK sa loob ng maraming taon, at dahan-dahan silang idinaragdag sa C++.

Ang pinakasimpleng paraan upang ipatupad ang isang parallel na istraktura ng data ay isang sequential (single-threaded) na pagpapatupad kung saan ang mga pamamaraan ay protektado ng mga mutex. Maa-access ito sa anumang Hunyo, ngunit may mga malinaw na problema sa pag-scale at pagganap. Kasabay nito, ang mga istruktura ng data na walang lock at walang paghihintay ay hindi lamang nakakaharap nang mas mahusay sa mga error, ngunit mayroon ding mas mahusay na profile sa pagganap - gayunpaman, ang kanilang pag-unlad ay nangangailangan ng malalim na kadalubhasaan at pagbagay sa isang partikular na aplikasyon. Ang isang maling linya ng code ay sapat na upang masira ang lahat.

Paano natin ito magagawa na kahit na ang isang hindi eksperto ay maaaring magdisenyo at magpatupad ng mga naturang istruktura ng data? Ito ay kilala na ang anumang sequential algorithm ay maaaring gawing ligtas ang thread gamit ang alinman unibersal na disenyo, o transactional memory. Sa isang bagay, maaari nilang ibaba ang hadlang sa pagpasok sa paglutas ng problemang ito. Gayunpaman, ang parehong mga solusyon ay karaniwang humahantong sa hindi epektibong pagpapatupad. Pag-uusapan ni Pedro kung paano nila nagawang gawing mas mahusay ang mga disenyong ito at kung paano mo magagamit ang mga ito para sa iyong mga algorithm.

Heidi Howard - Pagpapalaya sa ipinamahagi na pinagkasunduan

19 na ulo ng hydra. Mahusay na pangkalahatang-ideya ng programa Si Heidi Howard ay, tulad ni Martin, isang distributed systems researcher sa University of Cambridge. Ang kanyang mga specialty ay consistency, fault tolerance, performance at distributed consensus. Kilala siya sa kanyang generalization ng Paxos algorithm na tinatawag Flexible Paxos.

Manariwa sa diwa na Paxos ay isang pamilya ng mga protocol para sa paglutas ng problema ng consensus sa isang network ng mga hindi mapagkakatiwalaang mga computer, batay sa gawain ni Leslie Lamport. Kaya, ang ilan sa aming mga tagapagsalita ay gumagawa ng mga problema na orihinal na iminungkahi ng aming iba pang mga tagapagsalita - at ito ay kahanga-hanga.

Ang kakayahang makahanap ng pinagkasunduan sa maraming hostβ€”para sa pagtugon, halalan ng pinuno, pagharang, o koordinasyonβ€”ay isang pangunahing isyu sa mga modernong distributed system. Ang Paxos na ngayon ang pangunahing paraan upang malutas ang mga problema ng pinagkasunduan, at maraming pananaliksik ang nangyayari sa paligid nito upang palawakin at i-optimize ang algorithm para sa iba't ibang praktikal na pangangailangan.

Sa pag-uusap na ito, muli nating babalikan ang teoretikal na batayan ng Paxos, i-relax ang mga orihinal na kinakailangan at gawing pangkalahatan ang algorithm. Makikita natin na ang Paxos ay isa lamang opsyon sa isang malaking hanay ng mga consensus approach, at ang iba pang mga punto sa spectrum ay lubhang kapaki-pakinabang para sa pagbuo ng mahusay na mga distributed system.

Alex Petrov β€” Bawasan ang iyong mga gastos sa storage gamit ang Transient Replication at Cheap Quorums

19 na ulo ng hydra. Mahusay na pangkalahatang-ideya ng programa Si Alex ay isang database at storage systems specialist, at higit sa lahat para sa amin, isang committer sa Cassandra. Kasalukuyan siyang nagtatrabaho sa isang libro, Database Internals, kasama si O'Reilly.

Para sa mga system na may tuluyang pagkakapare-pareho (sa terminolohiya ng Ruso - "ultimate consistency"), pagkatapos mag-crash ang node o split network, kailangan mong lutasin ang sumusunod na dilemma: ipagpatuloy ang pagpapatupad ng mga kahilingan, pagsasakripisyo ng pare-pareho, o tumanggi na isagawa ang mga ito at isakripisyo ang availability. Sa ganoong sistema, ang mga korum, magkakapatong na mga subset ng mga node at pagtiyak na kahit isang node ay naglalaman ng pinakakamakailang halaga, ay maaaring maging isang mahusay na solusyon sa gilid. Maaari kang makaligtas sa mga pagkabigo at pagkawala ng koneksyon sa ilang mga node habang tumutugon pa rin sa mga pinakabagong halaga.

Gayunpaman, ang lahat ay may sariling presyo. Ang isang quorum replication scheme ay nangangahulugang tumaas na mga gastos sa storage: ang mga redundant na data ay dapat na nakaimbak sa maraming node nang sabay-sabay upang matiyak na may sapat na mga kopyang available kapag may nangyaring problema. Lumalabas na hindi mo kailangang iimbak ang lahat ng data sa lahat ng mga replika. Maaari mong bawasan ang pagkarga sa storage kung mag-iimbak ka ng data sa bahagi lamang ng mga node, at gumamit ng mga espesyal na node (Transient Replica) para sa mga sitwasyon sa paghawak ng pagkabigo.

Sa panahon ng pag-uulat ay isasaalang-alang namin Mga Replika ng Saksi, ang replication scheme na ginamit sa Spanner ΠΈ mega store, at ang pagpapatupad ng konseptong ito sa Apache Cassandra ay tinatawag na Lumilipas na Pagtitiklop at Mga Murang Korum.

Dmitry Vyukov - Nalantad ang mga Goroutine

19 na ulo ng hydra. Mahusay na pangkalahatang-ideya ng programa Si Dmitry ay isang developer sa Google na nagtatrabaho sa dynamic na pagsubok para sa C/C++ at Go - Address/Memory/ThreadSanitizer, at mga katulad na tool para sa Linux kernel. Nag-ambag sa Go isang scalable goroutine scheduler, isang network poller, at isang parallel na kolektor ng basura. Siya ay isang dalubhasa sa multithreading, ang may-akda ng isang dosenang bagong non-blocking algorithm at siya ang may-ari ng Itim na sinturon Intel.

Ngayon ng kaunti tungkol sa ulat mismo. Ang wika ng Go ay may katutubong suporta para sa multithreading sa anyo ng mga goroutine (light threads) at channels (FIFO queues). Ginagawang napakadali at kasiya-siya ng mga mekanismong ito para sa mga user na magsulat ng mga modernong multi-threaded na application, at mukhang magic. Sa pagkakaintindi natin, walang magic dito. Sa pag-uusap na ito, susuriin ni Dmitry ang mga intricacies ng Go scheduler at ipapakita ang mga lihim ng pagpapatupad ng "magic" na ito. Una, magbibigay siya ng pangkalahatang-ideya ng mga pangunahing bahagi ng scheduler at sasabihin sa iyo kung paano ito gumagana. Susunod, titingnan natin ang mga indibidwal na aspeto tulad ng diskarte sa pag-park/unparking at paghawak ng mga blocking system na tawag. Sa wakas, magsasalita ng kaunti si Dmitry tungkol sa mga posibleng pagpapabuti sa scheduler.

Dmitry Bugaichenko - Pinapabilis ang distributed graph analysis na may probabilistic sketch at higit pa

19 na ulo ng hydra. Mahusay na pangkalahatang-ideya ng programa Si Dmitry ay nagtrabaho sa outsourcing sa halos 9 na taon nang hindi nawawala ang pakikipag-ugnay sa unibersidad at sa komunidad ng siyensya. Ang malaking pagsusuri ng data sa Odnoklassniki ay naging isang natatanging pagkakataon para sa kanya na pagsamahin ang teoretikal na pagsasanay at pang-agham na pundasyon sa pagbuo ng mga tunay, in-demand na mga produkto.

Ang distributed graph analysis ay naging mahirap at nananatiling mahirap na gawain: kapag kinakailangan upang makakuha ng impormasyon tungkol sa mga koneksyon ng isang kalapit na vertex, ang data ay madalas na kailangang ilipat sa pagitan ng mga makina, na humahantong sa pagtaas ng oras ng pagpapatupad at pagkarga sa imprastraktura ng network. Sa pag-uusap na ito, makikita natin kung paano ka makakakuha ng makabuluhang bilis ng pagproseso sa pamamagitan ng paggamit ng mga probabilistikong istruktura ng data o mga katotohanan tulad ng simetrya ng graph ng pagkakaibigan sa isang social network. Ang lahat ng ito ay inilalarawan sa mga halimbawa ng code sa Apache Spark.

Denis Rystsov - Bawasan ang iyong mga gastos sa storage gamit ang Transient Replication at Cheap Quorums

19 na ulo ng hydra. Mahusay na pangkalahatang-ideya ng programa Denis - developer Cosmos DB, isang dalubhasa sa pagsuri sa mga modelo ng pagkakapare-pareho, mga algorithm ng pinagkasunduan, at mga ipinamamahaging transaksyon. Kasalukuyan siyang nagtatrabaho sa Microsoft, at bago iyon nagtrabaho siya sa mga distributed system sa Amazon at Yandex.

Sa pag-uusap na ito, titingnan natin ang mga ipinamahagi na protocol ng transaksyon na naimbento sa nakalipas na ilang taon, na maaaring ipatupad sa panig ng kliyente sa itaas ng anumang data store na sumusuporta sa conditional update (ihambing at itakda). Ang bottom line ay ang buhay ay hindi nagtatapos sa isang two-phase commit, ang mga transaksyon ay maaaring idagdag sa itaas ng anumang mga database - sa antas ng aplikasyon, ngunit ang iba't ibang mga protocol (2PC, Percolator, RAMP) ay may iba't ibang mga tradeoff at hindi ibinigay sa amin libre.

Alexey Zinoviev - Hindi lahat ng ML algorithm ay nakapasok sa distributed heaven

19 na ulo ng hydra. Mahusay na pangkalahatang-ideya ng programa Alexei (zaleslaw) ay isang matagal nang tagapagsalita at miyembro ng mga komite ng programa sa iba pang mga kumperensya. Nagsasanay ng tagapagsanay sa EPAM Systems, at naging kaibigan ni Hadoop/Spark at iba pang malalaking data mula noong 2012.

Sa pag-uusap na ito, tatalakayin ni Alexey ang tungkol sa mga problema sa pag-aangkop ng mga classical machine learning algorithm para sa pagpapatupad sa distributed mode batay sa kanyang karanasan sa pagtatrabaho sa Apache Spark ML, Apache Mahout, Apache Flink ML at ang karanasan sa paglikha ng Apache Ignite ML. Magsasalita din si Alexey tungkol sa pagpapatupad ng mga distributed ML algorithm sa mga framework na ito.

At sa wakas, dalawang ulat mula sa Yandex tungkol sa Yandex Database.

Vladislav Kuznetsov - Yandex Database - kung paano namin tinitiyak ang fault tolerance

19 na ulo ng hydra. Mahusay na pangkalahatang-ideya ng programa Si Vladislav ay isang developer sa Yandex sa distributed platform group. Ang Yandex Database ay isang pahalang na scalable, geo-distributed, fault-tolerant na DBMS na makatiis sa kabiguan ng mga disk, server, rack at data center nang hindi nawawala ang consistency. Para matiyak ang fault tolerance, ginagamit ang isang proprietary algorithm para sa pagkamit ng distributed consensus, pati na rin ang ilang teknikal na solusyon, na tinalakay nang detalyado sa ulat. Maaaring maging interesado ang ulat sa parehong mga developer ng DBMS at mga developer ng mga solusyon sa application batay sa DBMS.

Semyon Checherinda - Ibinahagi ang mga transaksyon sa YDB

19 na ulo ng hydra. Mahusay na pangkalahatang-ideya ng programa Si Semyon ay isang developer sa distributed platform group sa Yandex, nagtatrabaho sa posibilidad ng multi-tenant na paggamit ng YDB installation.

Ang Yandex Database ay idinisenyo para sa mga query sa OLTP at sumusunod sa mga kinakailangan ng ACID para sa isang transactional system. Sa ulat na ito, isasaalang-alang namin ang algorithm ng pag-iiskedyul ng transaksyon na sumasailalim sa sistema ng transaksyon ng YDB. Tingnan natin kung aling mga entity ang lumalahok sa mga transaksyon, na nagtatalaga ng pandaigdigang kaayusan sa mga transaksyon, kung paano nakakamit ang atomicity ng transaksyon, pagiging maaasahan, at isang mahigpit na antas ng paghihiwalay. Gamit ang isang karaniwang problema bilang halimbawa, tingnan natin ang mga pagpapatupad ng transaksyon gamit ang mga two-phase commit at mga deterministikong transaksyon. Pag-usapan natin ang kanilang pagkakaiba.

Ano ang susunod?

Ang programa ng kumperensya ay patuloy na napupuno ng mga bagong ulat. Sa partikular, inaasahan namin ang isang ulat mula sa Nikita Koval (ndkoval) mula sa JetBrains at Oleg Anastasyev (m0nstermind) mula sa kumpanyang Odnoklassniki. Gumagana si Nikita sa mga algorithm para sa mga coroutine sa Kotlin team, at si Oleg ay bumuo ng arkitektura at mga solusyon para sa mga high-load system sa Odnoklassniki platform. Bilang karagdagan, mayroong 1 pang may kondisyong walang laman na slot, ang komite ng programa ay nakikipagtulungan sa mga kandidato para dito ngayon.

Ang Hydra conference ay magaganap sa Hulyo 11-12 sa St. Petersburg. Available ang mga tiket pagbili sa opisyal na website. Mangyaring bigyang pansin ang pagkakaroon ng mga Online na tiket - kung sa ilang kadahilanan ay hindi ka makapunta sa St. Petersburg sa mga araw na ito.

See you sa Hydra!

Pinagmulan: www.habr.com

Magdagdag ng komento