Ve dnech 11-12 července se v Petrohradě uskuteční konference , zaměřená na vývoj paralelních a distribuovaných systémů. Výhodou Hydry je, že spojuje skvělé vědce (které obvykle lze najít pouze na zahraničních vědeckých konferencích) a známé praktikující inženýry do jednoho velkého programu na pomezí vědy a praxe.
Hydra je jednou z našich nejdůležitějších konferencí za posledních několik let. Připravovala se na ni velmi důkladně, byl proveden výběr přednášejících a příspěvků. Minulý týden o tom s ředitelem společnosti JUG.ru Group, Alexejem Fedorovem ().
Jsme o třech významných účastnících, zakladatelích teorie distribuovaných systémů - Leslie Lamportovi, Maurice Herlihym a Michaelu Scottovi. Nyní je čas podívat se podrobně na celý program!

Motivace
Pokud se zabýváte programováním, tak či onak se setkáváte s vícevláknovostí a distribuovanými výpočty. Odborníci v příslušných oblastech s nimi pracují přímo, ale distribuovanost se na nás neustále dívá: v každém vícejadrovém počítači nebo distribuované službě najdete něco, co současně provádí výpočty.
Existuje mnoho konferencí, které odhalují určité aspekty aplikovaného programování. Na druhé straně spektra máme speciální vědecké školy, které ve formátu přednášek odhalují obrovské objemy složité teorie. Například paralelně s Hydrou probíhá v Petrohradě . Na konferenci Hydra jsme se snažili spojit drsnou praxi, vědu a vše, co je na jejich pomezí.
Zamyslete se nad tímto: žijeme v úžasné době, kdy můžete osobně potkat zakladatele oblasti vědy a inženýrství, kterou se zabýváme. Fyzičtí vědci nemohou potkat ani Newtona, ani Einsteina - vlak už odjel. Ale vedle nás stále žijí ti, kdo vytvořili základy teorie distribuovaných systémů, vymysleli populární programovací jazyky a poprvé to všechno přetvořili do funkčních prototypů. Tito lidé nezanechali svou práci na půli cesty, právě teď se zabývají aktuálními problémy na celosvětově známých univerzitách a společnostech a jsou největšími zdroji znalostí a zkušeností v současnosti.
Na druhou stranu, příležitost se s nimi setkat obvykle zůstává čistě teoretická: málokdo z nás může neustále sledovat veřejné akce na nějaké univerzitě v Rochesteru, aby pak mohl rychle vyrazit do USA a zpět na přednášku k Michaelu Scottovi. Navštívit všechny účastníky Hydra by stálo pořádnou sumu, nemluvě o ztraceném čase (i když to zní jako zajímavý úkol).
Na druhou stranu máme spoustu předních inženýrů, kteří právě teď pracují na aktuálních problémech distribuovaných systémů, a ti určitě mají co říct. Ale problém je ten — oni pracují, a jejich čas je drahý. Ano, pokud jsi zaměstnanec Microsoftu, Google nebo JetBrains, šance potkat jednoho z známých řečníků na interní akci se výrazně zvyšuje, ale jinak — ne, to se nestává každý den.
Takže konference Hydra plní důležitý úkol, který většina z nás nemůže udělat sama — v jednom místě a v jednom čase spojuje lidi, jejichž myšlenky nebo komunikace mohou změnit váš život. Připouštím, že zdaleka ne všichni potřebují distribuované systémy, nějaké složité fundamentální záležitosti. Můžete po celý život programovat CRUD aplikace v PHP a být docela šťastní. Ale pro ty, kteří to potřebují — to je vaše šance.
Od prvního oznámení konference Hydra na Habrú uplynulo už dost času. Během té doby byla odvedena obrovská práce — a teď máme seznam téměř všech přednášek. Žádné mdlé jednoprvkové algoritmy, jen čistý distribuovaný hardcore! Pojďme přestat s obecnými slovy a podívejme se, co nyní máme na stole.
Úvodní přednášky
Úvodní přednášky začínají a končí dny konference. Obvykle smysl úvodní přednášky je nastavit celkového ducha a směr konference. Závěrečná přednáška shrnuje a vysvětluje, jak s nabytými znalostmi a dovednostmi v průběhu konference žít. Začátek a konec: to, co si zapamatujeme nejlépe, a má zvláštní význam.
Cliff Click —
Cliff je legenda světa Javy. Na konci 90. let napsal pro svou dizertační práci dokument s názvem , která se po chvíli stala základem pro HotSpot JVM Server Compiler. O dva roky později už pracoval ve společnosti Sun Microsystems na JVM a ukázal celému světu, že JIT má právo na existenci. Celý tento příběh o tom, že Java je jedním z nejrychlejších moderních runtime s nejchytřejšími a nejrychlejšími optimalizacemi, začal právě s Cliffem Clickem. Na začátku se mělo za to, že pokud je něco dostupné statickému kompilátoru, nemá smysl to ani zkoušet JIT-ovat. Díky práci Cliffa a jeho týmu začaly být všechny nové jazyky vytvářeny s myšlenkou na JIT-kompilaci jako výchozí nastavení. Bezpochyby to byla práce ne pro jednoho člověka, ale Cliff v ní hrál velmi důležitou roli.
V úvodním keynote představí Cliff své další podnikání — , in-memory platformu pro distribuované a škálovatelné strojové učení pro průmyslové využití. Přesněji řečeno — o distribuovaném úložišti pár „klíč-hodnota“ uvnitř ní. Je to velmi rychlé úložiště s mnoha zajímavými vlastnostmi (přesný seznam je v ), které umožňují používat podobná řešení v matematice streamování velkých dat.
Další přednáška, se kterou vystoupí Cliff — . Další část jeho biografie — deset let , kde aktualizoval a zlepšil mnoho aspektů hardwaru a technologického stacku Azul: JIT-kompilátory, runtime, model vláken, zpracování chyb, práce se zásobníkem, hardwarová přerušení, načítání tříd a tak dále — no, chápete.
Nejzajímavější část začala, když vytvořili hardware pro velký byznys — superpočítač pro běh Java. Byla to docela inovativní věc, konkrétně navržená pro Java, která má zvláštní požadavky — paměťové bariéry pro čtení pro nízko-pauzové garbage collection, pole s kontrolou hranic, virtuální volání… Jednou z nejzajímavějších technologií byla hardwarová transakční paměť. Celý L1 jakéhokoli z 864 jader mohl účastnit transakčního zápisu, což je obzvlášť důležité pro práci s blokacemi v Java (synchronized bloky mohou pracovat paralelně, dokud nedojde k reálnému konfliktu v paměti). Ale krásná myšlenka se rozpadla na drsnou realitu — a v této přednášce Cliff vysvětlí, proč HTM a STM příliš dobře nevyhovují praktickým potřebám vícethermálních výpočtů.
Michael Scott —
— profesor počítačových věd na Univerzitě v Rochesteru, se kterým osud spojil jeho , a na své alma mater Wisconsin–Madison byl děkanem pět let. Zaměřuje se na výzkum paralelního a distribuovaného programování a design jazyků a vyučuje to studenty.
Celý svět zná Michaela díky učebnici , poslední vydání vyšlo relativně nedávno — v roce 2015. Jeho práce obdržela jako jedna z nejznámějších v oblasti distribuovaných výpočtů a v online knihovně Rochesterovy univerzity. Také ho můžete znát jako autora toho slavného algoritmu Michael-Scott z .
Pokud jde o svět Javy, zde je situace zvláštní: spolu s Dougem Leou vyvinuli tyto neblokující algoritmy a synchronní fronty, na kterých fungují knihovny Javy. O tomto a bude keynote „Dvojité datové struktury“ — implementace těchto struktur v Java SE 6 umožnila desetinásobné zlepšení výkonu java.util.concurrent.ThreadPoolExecutor. Pokud vás dopředu zajímá, co jsou tyto „Dvojité datové struktury“, budiž zde .
Maurice Herlihy —
— držitel dvou Dijkstraových cen. První — za práci na (Brown University), a druhá, novější — (Virginia Tech University). Dijkstraova cena se uděluje za práce, jejichž význam a vliv byly patrné po dobu alespoň deseti let, a je zřejmé, že Maurice je jedním z nejznámějších odborníků v oboru. V současné době pracuje jako profesor na Brownově univerzitě a má řadu úspěchů, které by zabraly celý odstavec.
V této závěrečné keynote Maurice promluví o teorii a praxi blockchainových distribuovaných systémů z pohledu klasiky distribuovaných výpočtů a o tom, jak to zjednodušuje řadu souvisejících problémů. Tento přednáška se výhradně věnuje tématu konference — rozhodně ne o miningovém hype, ale spíše o tom, jak naše znalosti lze překvapivě efektivně a relevantně využít v různých úlohách.
V červenci 2017 už Maurice přijel do Ruska na školu SPTDC, zúčastnil se meetupu JUG.ru, a záznam si můžete prohlédnout na YouTube:

Hlavní program
Následovat bude stručný přehled přednášek zařazených do programu. Některé přednášky jsou zde popsány podrobně, jiné stručněji. Dlouhá popisy byly většinou přiděleny anglickým přednáškám, které vyžadují odkazy na vědecké práce, termíny na Wikipedii atd. Úplný seznam můžete . Seznam na webu bude aktualizován a doplňován.
Leslie Lamport —
Leslie Lamport je autorem zásadních prací v distribuovaném výpočtu. se překládá jako «Lamport TeX». To on poprvé, už v roce 1979, zavedl pojem , a jeho článek získal Dijkstraovu cenu.
To je nejneobvyklejší část programu, protože to není ani přednáška, ale sezení otázek a odpovědí. Když je značná část publika již obeznámena (nebo se může seznámit) se všemi možnými pracemi založenými na «Lamportově teorii», jeho vlastními články a přednáškami, je velmi důležité využít veškerý dostupný čas na přímou komunikaci.
Myšlenka je jednoduchá — zhlédnete na YouTube dvě přednášky: a a připravíte si alespoň jeden dotaz, na který Leslie odpoví.
První z těchto dvou videí jsme už . Pokud nemáte hodinu času na sledování videa, můžete si to rychle přečíst v textové podobě.
Na vědomí: na YouTube je mnohem více videí s Lesliem Lamportem. Například existuje skvělý . Offline verze celého tohoto kurzu je na , a na YouTube ho zveřejnil pro pohodlnější zhlédnutí na mobilních zařízeních.
Martin Kleppmann —
Martin Kleppmann je výzkumník na Univerzitě v Cambridge, který pracuje na CRDT a formální verifikaci algoritmů. Kniha Martina , publikovaná v roce 2017, se ukázala jako velmi úspěšná a dostala se na seznamy bestsellerů v oblasti ukládání a zpracování dat. Kevin Scott, CTO ve společnosti Microsoft, : „Tato kniha by měla být nezbytná pro inženýry vývojáře. Je to vzácný zdroj, který spojuje teorii a praxi, pomáhá vývojářům lépe navrhovat a realizovat infrastrukturu a systémy zpracování dat.“ Něco podobného říkal i tvůrce Kafky a CTO Confluent, Jay Kreps.
Před zahájením akademického výzkumu Martin pracoval v průmyslu a stal se spoluzakladatelem dvou úspěšných startupů:
- Rapportive, zaměřeného na zobrazení sociálního profilu kontaktů z vaší e-mailové pošty, který LinkedIn koupil v roce 2012;
- Go Test It, služba pro automatizované testování webových stránek v různých prohlížečích, kterou RedGate koupil v roce 2009.
Celkově vzato, Martin je sice méně známý než naši keynote speakři, ale již přispěl k rozvoji distribuovaných výpočtů i průmyslu.
V této přednášce bude Martin hovořit o tématu, které je mu bližší k jeho akademickému výzkumu. V Google Docs a podobném softwaru pro spolupráci na dokumentech znamená „spolupráce“ úlohu replikace: každý uživatel má vlastní replikovaný dokument, který poté upravuje, a všechny změny se šíří po síti ostatním účastníkům. Změny dokumentů offline vedou k dočasné nekonzistenci dokumentu vůči ostatním účastníkům, a znovu-synchronizace vyžaduje řešení konfliktů. Pro toto existují (CRDT), v podstatě docela nová věc, jejíž podstata byla formulována teprve v roce 2011. V této přednášce se diskutuje, co se od té doby stalo ve světě CRDT, jaké jsou nejnovější úspěchy, a diskutuje se přístup k vytváření aplikací local-first obecně a použití open-source knihovny specificky.
Příští týden zveřejníme na Habru velký rozhovor s Martinem, bude to zajímavé.
Pedro Ramalhete —
Pedro pracuje ve společnosti Cisco a vyvíjí paralelní algoritmy už asi deset let, včetně mechanismů synchronizace, lock-free a wait-free datových struktur, a všeho, co si můžete na toto téma představit. Jeho současné vědecké a inženýrské zájmy jsou zaměřeny na univerzální konstrukce, software transakční paměť, persistentní paměť a podobné technologie, které umožňují vytvářet správné, škálovatelné a odolné aplikace. A také je autorem široce známého blogu v úzkých kruzích. .
Na paralelních datových strukturách dnes pracuje většina vícetrhu aplikací, počínaje používáním front zpráv mezi aktéry a konče indexovanými datovými strukturami v key-value úložištích. V Java JDK fungují úspěšně již mnoho let, a do C++ se pomalu přidávají.
Nejjednodušší způsob, jak realizovat paralelní datovou strukturu, je sekvenční (jedno vláknová) implementace, kde jsou metody chráněny mutexy. To je dostupné jakémukoli juniorovi, ale má zřejmé problémy se škálovatelností a výkonem. Zároveň však, lock-free a wait-free datové struktury nejen lépe zvládají chyby, ale mají také lepší profil výkonnosti — avšak jejich vývoj vyžaduje hlubokou odbornost a přizpůsobení konkrétnímu způsobu použití. Jediný špatný řádek kódu stačí, aby to všechno zkolabovalo.
Jak udělat, aby i ne-expert mohl navrhovat a implementovat takové datové struktury? Je známo, že jakýkoli sekvenční algoritmus lze učinit vláknově bezpečným buďto , nebo transakční pamětí. Tyto přístupy mohou snížit vstupní práh pro řešení této úlohy. Nicméně, obě řešení obvykle vedou k neefektivní implementaci. Pedro poví o tom, jak se jim podařilo učinit tyto konstrukce efektivnějšími a jak je lze použít pro vlastní algoritmy.
Heidi Howard —
Heidi Howard — stejně jako Martin, je výzkumnicí v oblasti distribuovaných systémů na Cambridgeské univerzitě. Její specializace zahrnuje konzistenci, odolnost, výkon a distribuovaný konsensus. Je nejvíce známá zobecněním algoritmu Paxos nazvaným .
Připomínáme, že — rodina protokolů pro řešení konsenzu v síti nespolehlivých výpočetních uzlů, jejíž základy byly položeny pracemi Leslieho Lamporta. Někteří naši přednášející tedy pracují na problémech, které původně navrhli jiní naši přednášející — a to je skvělé.
Možnost dosáhnout konsenzu mezi několika hostiteli — při adresaci, výběru lídra, zablokování nebo koordinaci — je základní otázkou moderních distribuovaných systémů. Paxos je nyní hlavním způsobem, jak řešit úlohy nalezení konsenzu, a kolem něj se provádí mnoho výzkumů zaměřených na rozšíření a optimalizaci algoritmu pro různé praktické potřeby.
V této prezentaci přehodnotíme teoretický základ Paxos, oslabením původních požadavků a zobecněním algoritmu. Uvidíme, že Paxos je vlastně jen jedním z možností v široké škále přístupů k konsenzu, a že další body v tomto spektru jsou také velmi užitečné pro budování dobrých distribuovaných systémů.
Alex Petrov —
Alex je odborník na databáze a úložné systémy, a co je pro nás nejdůležitější — committer v . Společně s O’Reillym právě pracuje na knize Database Internals.
Pro systémy s (v české terminologii – „konsistencí nakonec“), po pádu uzlu nebo rozdělení sítě, je třeba vyřešit následující dilema: buď pokračovat ve zpracování požadavků, na úkor konsistence, nebo odmítnout jejich zpracování a obětovat dostupnost. V takovém systému kvóra, překrývající podmnožiny uzlů a zajišťující, že alespoň jeden uzel bude obsahovat nejnovější hodnotu, se mohou stát dobrým hraničním řešením. Můžete přežít selhání a ztrátu připojení k některým uzlům, přičemž budete i nadále odpovídat nejnovějšími hodnotami.
Evidentně má všechno svou cenu. Kvórumová schéma replikace znamená vyšší náklady na ukládání: je nutné uchovávat redundantní data na několika uzlech současně, aby bylo zajištěno dostatečné množství dostupných kopií v případě problémů. Ukazuje se, že není nutné uchovávat všechna data na všech replikách. Zátěž na úložiště lze snížit, pokud uchováváte data pouze na části uzlů, a pro scénáře zpracování chyb použít speciální uzly (Transient Replica).
Během prezentace se zaměříme na , schéma replikace používané v a , a implementaci tohoto konceptu v Apache Cassandra pod názvy .
Dmitry Vyukov —
Dmitry je vývojář v Googlu, který pracuje na dynamickém testování C/C++ a Go — Address/Memory/ThreadSanitizer a podobných nástrojích pro jádro Linuxu. Přispěl k rozšířitelnému plánovači gorutin, síťovému polleru a paralelnímu sběrači odpadků v Go. Je odborníkem na vícerozměrnost, autorem desítky nových bezblokovacích algoritmů a držitelem Intel.
Teď trochu o samotné prezentaci. V jazyce Go existuje nativní podpora vícerozměrnosti v podobě gorutin (lehkých vláken) a kanálů (FIFO front). Díky těmto mechanismům je pro uživatele velmi snadné a příjemné psát moderní vícerozměrné aplikace, což vypadá jako magie. Jak chápeme, žádná magie zde není. V této prezentaci se Dmitry podívá na detaily fungování plánovače Go a ukáže tajemství realizace této „magie“. Na začátku poskytne přehled hlavních komponent plánovače a vysvětlí, jak funguje. Poté se podíváme podrobněji na jednotlivé aspekty, jako jsou strategie parkování/rozparkování a zpracování blokujících systémových volání. Nakonec Dmitry také poví něco o možných vylepšeních v plánovači.
Dmitry Bugaychenko —
Dmitry téměř 9 let pracoval v outsourcingu, přičemž neztratil kontakt s univerzitou a vědeckým prostředím. Analýza velkých dat v Odnoklassnikách se pro něj stala jedinečnou příležitostí spojit teoretickou přípravu a vědecký základ s vývojem skutečných, žádaných produktů.
Distribuovaná analýza grafů byla a zůstává složitým úkolem: když vznikne potřeba získat informace o vazbách sousedního vrcholu, často je třeba převádět data mezi stroji, což vede ke zvýšení doby provádění a zátěži síťové infrastruktury. V této prezentaci uvidíme, jak lze dosáhnout významného zrychlení zpracování pomocí pravděpodobnostních datových struktur nebo faktů, jako je symetričnost grafu přátelství v sociální síti. To vše je ilustrováno příklady kódu v Apache Spark.
Denis Ryscov —
Denis je vývojář , odborník v oblasti ověřování konzistencí modelů, v konsenzuálních algoritmech a v distribuovaných transakcích. Nyní pracuje v Microsoftu, a předtím se zabýval distribuovanými systémy v Amazonu a Yandexu.
V této prezentaci se seznámíme s protokoly distribuovaných transakcí, které byly vyvinuty v posledních několika letech, které je možné implementovat na straně klienta nad jakýmkoli úložištěm dat podporujícím podmíněné aktualizace (compare and set). Podstatou je, že život nekončí dvoufázovým potvrzením; transakce lze přidat nad jakékoli databáze — na úrovni aplikace, ale různé protokoly (2PC, Percolator, RAMP) mají různé obchodní ústupky a nejsou nám dávány zadarmo.
Alexej Zinovjev —
Alexej () je naším dlouholetým řečníkem a členem programových výborů na jiných konferencích. Praktikující lektor ve společnosti EPAM Systems a s Hadoop/Spark a další velkými daty se přátelí od roku 2012.
V této prezentaci Alexej poví o problémech přizpůsobení klasických algoritmů strojového učení pro provádění v distribuovaném režimu na základě svých zkušeností s Apache Spark ML, Apache Mahout, Apache Flink ML a zkušenostmi s vytvářením Apache Ignite ML. Alexej také poví o implementaci distribuovaných ML algoritmů v těchto rámcích.
A na závěr — dvě prezentace od společnosti Yandex o Yandex Database.
Vladislav Kuzněcov —
Vladislav je vývojář v Yandexu v týmu distribuovaných platforem. Yandex Database je horizontálně škálovatelná geo-distribuovaná odolná databáze, která odolává selhání disků, serverů, stojanů a datových center bez narušení konzistence. Pro zajištění odolnosti proti selhání se používá vlastní algoritmus pro dosažení distribuovaného konsensu, stejně jako řada technických řešení, která jsou podrobně projednána v přednášce. Přednáška může být zajímavá jak pro vývojáře databází, tak pro vývojáře aplikačních řešení založených na databázích.
Semen Čechorin
Semen je vývojář v týmu distribuovaných platforem v Yandexu a pracuje na možnosti víceseznamového využití instalace YDB.
Yandex Database je určena pro OLTP dotazy a splňuje požadavky ACID pro transakční systém. V přednášce se podíváme na algoritmus plánování transakcí, který tvoří základ transakčního systému YDB. Prozkoumáme, jaké entity se podílejí na transakcích, kdo určuje globální pořadí transakcí, jak se dosahuje atomického chování transakcí, spolehlivost a přísná úroveň izolace. Na příkladu běžného úkolu si ukážeme realizace transakcí pomocí dvoufázového potvrzení a deterministických transakcí. Probereme jejich rozdíly.
Co dál?
Program konference se stále doplňuje novými přednáškami. Zejména očekáváme přednášku od Nikita Kovalenko () z JetBrains a Oleg Anastáziev () ze společnosti Odnoklassniki. Nikita se věnuje algoritmům pro korutiny v týmu Kotlin, zatímco Oleg vyvíjí architekturu a řešení pro vysoce zatížené systémy na platformě společnosti Odnoklassniki. Kromě toho je zde ještě 1 podmíněně prázdný slot, který je v současnosti ve vyjednávání s uchazeči programovým výborem.
Konference Hydra se bude konat 11-12. července v Petrohradě. Vstupenky je možné . Upozorňujeme na možnost online vstupenek — pokud se z nějakého důvodu nemůžete těchto dnů dostavit osobně do Petrohradu.
Uvidíme se na Hydře!
Zdroj: habr.com
