Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
До конференции по распределённым системам Hydra осталось менее трёх недель, программа уже готова, и пришло время рассказать о ней Хабру. Под катом — описания всех докладов, а для начала скажем общее:
- Конференция объединяет IT-индустрию и академический мир: среди спикеров есть и авторы научных статей, и те, у кого результаты этих статей используются в продакшне.
- В этот раз, кроме докладов, в программе три продолжительных воркшопа. Так что будут не только рассуждения со слайдами, но и наглядная практическая работа.
- В программе есть и про distributed, и про concurrency, но перевес в сторону распределённого. Зато все воркшопы актуальны для тех, кто ближе к параллельному программированию.
- Конференция в целом англоязычная, на русском будет только один доклад.
- Такая конференция неизбежно хардкорная, но несколько докладов будут в формате «введения» и не требуют предварительной подготовки. Впрочем, немногие готовы вникать в эти темы даже на поверхностном уровне. Так что это, скажем так, «введение в хардкор»!
Оглавление
— Воркшопы
— Доклады (concurrency)
— Доклады (distributed)
— Напоследок
Воркшопы
«Lincheck: Testing concurrency on the JVM», Мария Соколова
Главное преимущество фреймворка Lincheck в том, что он предоставляет простой и декларативный способ писать тесты для многопоточных алгоритмов. Вместо описания, как выполнять тест, вы сообщаете, что нужно тестировать: указываете все требующие проверки операции вместе с условием корректности (по умолчанию это линеаризуемость (linearizability)) и ограничениями (например, «single consumer» для очередей).
Во время воркшопа будут показаны шаги работы с инструментом. Не погружаясь глубоко в детали реализации фреймворка, Мария продемонстрирует примеры проектов с различными проблемами при многопоточном программировании и покажет, как разбираться с ними с помощью Lincheck. Проекты будут на Kotlin, но поскольку он лаконичен и прост для понимания, зрителям будет несложно перенести опыт использования Lincheck на любой другой JVM-язык (например, Java или Scala).
«TLA+ in action», Markus Kuppe
Цель воркшопа — показать разработчикам параллельных и распределенных систем, как моделировать алгоритмы с помощью TLA+. Вдохновившись EWD998 (письмом Дейкстры, где описан подход Шмуэля Сафры (Shmuel Safra) к обнаружению прерываний), Маркус Куппе со зрителями разработает и проверит алгоритм обнаружения прерываний.
Основное внимание будет сфокусировано на применении TLA+, а не самом языке TLA+. Другими словами, семинар будет в стиле видеокурса Лампорта и представит TLA+ по ходу дела. В конце семинара будет написана спецификация EWD998, проверены свойства безопасности (safety) и живучести (liveness) и не только. Формат будет близок докладу «Weeks of Debugging Can Save You Hours of TLA+», но дополнен практическим опытом использования.
«Java Concurrency Stress (JCStress)», Алексей Шипилёв
Java-разработчики отлично знают Алексея: по его докладам и текстам многие познавали внутренние нюансы Java-платформы. Теперь он впервые выступит на Hydra.
JCStress — это подпроект OpenJDK, состоящий из тестового фреймворка и набора тестов, помогающих проверять корректность поддержки конкурентной работы в JVM, библиотеках классов и железе. В докладе Алексей расскажет, какие тесты возможно проводить, рассмотрит классические примеры параллелизма на реальном железе, поговорит о том, как проект использует Hotspot-специфичные вещи для увеличения точности тестов, и рассмотрит, как реальные проекты используют его для тестирования параллелизма.
Доклады (concurrency)
«Data parallelism from a multicore perspective», Maurice Herlihy
В докладе рассмотрено, как использовать многопоточность и детальную синхронизацию для структурирования вычислений вроде map-reduce на многоядерных процессорах. Доклад предполагает некоторое знакомство с синтаксисом Java, но сами вопросы будут рассмотрены, начиная с азов.
Кстати, недавно мы сделали текстовую расшифровку доклада Мориса с прошлогодней Hydra. Там было введение в транзакционную память, так что тоже можно узнать что-то про concurrency и современные многоядерные реалии.
«Designing fast lock-free algorithms by understanding cache coherence dynamics», Adam Morrison
У доклада несколько задач:
— Представить когерентность кэша MESI;
— Показать, что lock-free алгоритмы не быстрее, чем основанные на блокировке;
— Объяснить, почему это происходит (из-за динамики когерентности кэша);
— Показать, как использовать безотказные атомарные примитивы вместо CAS в качестве способа ускорения lock-free алгоритмов.
Для этих целей будет обсуждаться проблема проектирования многопоточной FIFO-очереди: Адам начнёт с простого алгоритма, основанного на блокировках, перейдёт к lock-free алгоритму (который плохо масштабируется), и, наконец, алгоритму LCRQ, основанному на примитиве fetch-and-add.
«Co-designing Raft + thread-per-core execution model for the Kafka-API», Alex Gallego
Алекс — основатель и глава Vectorized, где работают над Redpanda: альтернативой Apache Kafka, использующей алгоритм Raft для решения задач консенсуса.
Зачем понадобилась эта альтернатива? Заново изобретать колесо полезно в том случае, если дороги принципиально изменились. Redpanda спроектирована для современного железа, выглядящего совершенно не как 10 лет назад. NVMe-диски в 1000 раз быстрее старых HDD. У облачных компьютеров стало в 30 раз больше ядер. Сетевая пропускная способность тоже возросла на порядки.
В докладе будут рассмотрены уроки, извлечённые из разработки такого проекта с нуля.
Доклады (distributed)
«Distributed systems showdown — TLA+ vs real code», Jack Vanlightly
Распределённые системы — сложные штуки, способные приводить к ошибкам самыми неожиданными способами. Как нам быть уверенными, что система отвечает нашим требованиям по доступности, согласованности, масштабируемости, задержкам и так далее?
Инструмент Jepsen был создан для проверки таких требований. Но на реализацию, которую можно проверить, могут уходить человекогоды.
Моделирование с помощью TLA+ позволяет проверять до того, как писать реальный код. Оно используется во многих известных проектах. Но люди вечно спрашивают, как перейти от абстрактной спецификации TLA+ к имплементации.
В ходе доклада Джек сравнит моделирование на TLA+ и на Java с Jepsen/Maelstorm, разобравшись с преимуществами и недостатками обоих подходов.
«Algorithms for practical distributed agreement», Naama Ben-David
Алгоритмы консенсуса лежат в основе многих надёжных сервисов. Они обеспечивают согласованную работу нескольких машин вопреки асинхронности, сбоям и вредоносным атакам. Наама в докладе будет отстаивать позицию, что при проектировании алгоритмов консенсуса важно оптимизировать всё как для лучшего, так и для худшего сценария с точки зрения производительности.
Она опишет теоретическую модель, отражающую поведение и затраты сетей центров обработки данных, где зачастую выполняются алгоритмы согласования, и покажет последние результаты, которые доказуемо улучшают время работы алгоритмов согласования как в лучшем, так и в худшем случае.
«Theoretical and practical worlds of failure detectors», Lena Hall
Обнаружение сбоев является неотъемлемой частью практически любой функционирующей распределенной системы. Эффективность такого обнаружения зависит от множества аспектов.
Из этого выступления аудитория узнает о теоретических основах детекторов отказов (failure detectors): базовых концепциях, важнейших свойствах и различиях в гарантиях. Лена Холл из Microsoft продемонстрирует приложения обнаружения сбоев на практике и покажет детали их реализации в некоторых известных распределенных системах.
Спикер считает, что важно делать контент доступным и понятным для зрителей любого уровня, поэтому доклад не требует каких-либо предварительных знаний.
«Simplifying global-scale strong consistency», Andras Gerlits.
Используемые сейчас горизонтально масштабируемые глобально распределённые системы с сильной согласованностью становятся все более сложными. Либо они требуют обслуживания экспертами высокого уровня, либо предоставляются в качестве услуги, что приводит к вендор-локу и потенциально космическим ценам. Они также нуждаются по крайней мере в трёх репликах для надежной работы в случае сбоев узлов, и им либо необходима тщательная синхронизация часов, либо они плохо масштабируются географически. Их трудно отладить, если возникнут неполадки. Отслеживание проблем на нескольких компьютерах является сложной задачей, и добавление её к рабочей нагрузке инженера — большая проблема.
Предлагаемый Андрасом алгоритм устанавливает модель согласованности между независимыми консенсусными группами, поэтому узлам в кластере для достижения желаемого состояния достаточно, чтобы их журналы событий были воспроизведены до определенного смещения. Этот подход означает, что нам достаточно всего лишь одного надёжного инстанса (но можно и больше), а в случае сбоя узла достаточно перезапустить инстанс для возобновления операций. Устанавливая новый тип логических часов, мы позволяем узлам, расположенным ближе друг к другу, быстрее сообщать об изменениях, а более удалённым — делать это медленнее и большими партиями. Андрас покажет, как это позволяет создать более гибкую модель глобального распределения.
Для решения в алгоритме используется исключительно event sourcing, так что разработчикам это не в новинку. Это также значит, что становится куда проще совместно разворачивать узлы с микросервисами, объединяя их вместе для упрощения жизни разработчика.
«What we talk about when we talk about distributed systems», Alvaro Videla
Распределенные системы — сложная тема. Исследований множество, но новичку зачастую трудно понять, с чего начать: зачастую даже названия работ звучат непонятно. И тогда не поймёшь, насколько что-то соответствует твоим интересам, пока в этом не разберёшься.
Поэтому для тех, кто только начинает, Альваро постарается обрисовать основные концепции распределенных систем, чтобы заинтересованный человек мог иметь четкое представление о том, как начать собственное изучение. В этом выступлении спикер рассмотрит различные модели: асинхронные распределенные системы против синхронных; обмен сообщениями против коммуникации с помощью общей памяти; детекторы сбоев и проблемы с выбором лидеров; консенсус и различные виды репликации.
Также Альваро рассмотрит серию книг по распределенным системам, чтобы рекомендовать лучшие в зависимости от конкретных тем, в которых хочется разобраться, и проблем, которые хочется решить. Цель выступления — заложить фундамент для того, чтобы дальше можно было узнать больше о распределенных системах.
«CAP Theorem — two decades and few clouds later», Mike Kowalski
«Согласованность, доступность, устойчивость к разделению — выберите два» — это одновременно и доказанная теорема, и огромное упрощение. Классифицировать системы как CP, CA и AP уже недостаточно в свете настраиваемой согласованности и облачных сервисов, рекламирующих себя как «почти CAP». Что осталось от знаменитой теоремы в 2021-м?
Спикер предлагает погрузиться в теорему CAP неакадемическим способом, чтобы определить ее практические последствия. Во время сессии Майк пройдётся по популярным инструментам вроде Cassandra, Kafka и AWS S3, чтобы определить их место в серой зоне CAP-треугольника. Аудитория получит обзор возможных трейд-оффов и их последствий — причём не только для трёх исходных свойств.
«Fearless global transactions with CockroachDB», Nathan VanBenschoten
Современные приложения быстро переходят к глобально распределённым архитектурам, чтобы обеспечить доступ с низкой задержкой для своих пользователей. Это создает всё большую нагрузку на системы хранения данных, используемые в этих глобальных приложениях. Чтобы справляться с этим, многие современные системы хранения данных жертвуют целостностью данных и резко ограничивают выразительность моделей данных. Работа с этими ограничениями ложится на плечи разработчиков приложений, что доставляет сложностей и приводит к ошибкам.
В этом докладе мы обсудим CockroachDB: масштабируемую, глобально распределённую NewSQL-базу данных, призванную лучше обслуживать приложения следующего поколения. В докладе будет рассмотрена архитектура CockroachDB, построенная по принципу shared-nothing и вдохновлённая Spanner от Google. Далее будут показаны новые мультирегиональные объекты CockroachDB, добавленные в его последнем релизе. Наконец, завершится разговор обсуждением оптимизаций производительности, сделанных в CockroachDB для ускорения глобальных транзакций, включая новый атомарный протокол коммита и расширение своей транзакционной модели для работы с глобальными данными (которые в основном читают, а не пишут).
«The official ten-year retrospective of NewSQL databases», Andy Pavlo
В 2011-м Мэттью Аслетт ввёл понятие «NewSQL» для обозначения растущей категории высокопроизводительных реляционных СУБД для обработки транзакций в реальном времени (OLTP). Эти системы возникли как ответ на NoSQL-движение. И за прошедшие десять лет многое изменилось: большинство оригинальных NewSQL DBMS ещё существуют, но возникли новые, а тем временем заметные системы из числа NoSQL приняли принципы NewSQL.
В этом докладе Энди сначала обсудит истоки движения NewSQL и его влияние на рынок СУБД. Затем расскажет о системах, которые были частью первоначальной классификации NewSQL, а затем о том, как развивались и эти системы, и категория в целом. Это обсуждение призвано разобраться, является ли понятие «NewSQL» осмысленным способом обозначить возможности системы или это просто маркетинговая ерунда. Вторая часть доклада будет посвящена тому, остаётся ли NewSQL актуальным термином сегодня. Мы также рассмотрим, как могут выглядеть СУБД для OLTP в предстоящем десятилетии.
«Serverless nature of Yandex Database», Андрей Фомичев
Кто-то подумает тут «про serverless уже сто раз слышал» — но в контексте баз данных у этого понятия появляется много нового. Сначала доклад описывает архитектуру распределённой NewSQL СУБД Yandex Database (об этой архитектуре на Hydra ранее уже говорили подробнее): на чём она основана, из каких компонентов состоит, что именно позволяет ей быть распределённой и горизонтально масштабируемой.
Эта архитектура вдохновила создание на её основе продукта под названием Yandex Database Serverless. Кому он может быть нужен, как он стал возможен, что у него общего с обычной Yandex Database, а какие технические решения их разделяют? Доклад может быть интересен и разработчикам баз данных, и их пользователям, и интересующимся темой serverless.
«The Hitchhiker's Guide to Distributed Transactions», Irfan Sharif
За последние годы, благодаря растущему интересу к распределённым транзакциям, появилось много проектов, как академических, так и прикладных. Одним из главных предметов исследований по этой теме явлется минимизация накладных расходов в отношении производительности. Разные системы решают эту проблему по-разному — от ограничений транзакционной модели до повышения задержки при чтении.
Этот доклад рассматривает различные подходы, используемые для достижения атомарности транзакций как в академических системах (Carousel, MDCC, SLOG, TAPIR), так и индустриальных (Spanner, CockroadDB, OceanVista). Мы исследуем, как каждая система по-своему подходит к транзакционной модели и протоколу репликации, достигая минимальной задержки для атомарного коммита: одного round-trip между дата-центрами.
«Building scalable and flexible cluster managers using declarative programming», Lalith Suresh
Современные системы управления кластерами постоянно сталкиваются с задачами комбинаторной оптимизации: в связи с балансированием нагрузки, размещение, планирование и конфигурация. Подход к решению этих задач по принципу ad-hoc затрудняет развитие системы со временем и добавление новых фич, приводя к большим сложностям.
В этом докладе Лалит представит Declarative Cluster Managers (DCM) — общий подход к построению систем управления кластерами, который делает их производительными и легко расширяемые. В случае с DCM разработчики определяют поведение такой системы с помощью высокоуровневого декларативного языка вроде SQL, и отдают на откуп компилятору сгенерировать эффективную реализацию. Спикер на примере реальных систем вроде Kubernetes покажет, как DCM существенно снижают порог входа при построении масштабируемых и расширяемых систем управления кластерами.
Доклад будет построен как туториал и доступен широкому кругу зрителей, предварительные знания не потребуются.
Напоследок
Напоминаем, что просто смотреть доклады — это ещё не всё: например, ценна возможность задать свой вопрос спикеру. Во время доклада можно писать их в чате, а после его завершения в Zoom запускается «дискуссионная зона», где можно обсудить всё голосом. Основной язык общения на конференции — английский, но если вам сложно сформулировать вопрос на нём, участники конференционной команды вам помогут (например, переведут спикеру написанное в чате по-русски).
Кроме спикеров, можно будет пообщаться и с другими участниками, найдя близких по духу: в чате конференции или на её виртуальной площадке, где можно «подойти» к другому зрителю и увидеть его по видеосвязи.
Вся информация вроде точного расписания докладов — на сайте конференции, билеты — там же.
Встретимся на Hydra 15-18 июня!