image

Мы продолжаем публиковать лекции курса «Проектирование высоконагруженных систем», который читается студентам Санкт-Петербургского Политехнического университета командой инженеров из Одноклассников в рамках двухлетней программы «Java-разработчик высоконагруженных приложений» проекта Технополис (совместный проект Mail.Ru Group и СПбПУ). В 2017 году были прочитаны и выложены 10 лекций (30 часов видео), но тема Highload настолько обширна, что за один семестр невозможно охватить всё. Мы лишь ненадолго погрузились в основные аспекты Highload-разработки, каждый из которых достоин отдельного курса. В этом году мы продолжаем закрывать белые пятна и представляем вашему вниманию набор из шести лекций на новые темы: начинаем с параллельных вычислений и livecoding первого этапа студенческого курсового проекта, после чего погружаемся в средства мониторинга и диагностики JVM, а потом переходим к проблемам отказоустойчивости. А после лекции о продвинутых алгоритмах, актуальных в высоконагруженных проектах, завершаем цикл лекцией о существующих подходах к репликации и об их применимости к разным задачам.

Первые десять лекций.

Список новых лекций:

  1. Actor Model. Future. Reactive Streams (Вадим Цесько incubos)
  2. Livecoding второго этапа проекта (Вадим Цесько incubos)
  3. Мониторинг и диагностика JVM (Андрей Паньгин apangin)
  4. Site Reliability Engineering (Антон Иванов keyplayer)
  5. «Современные» структуры данных (Дмитрий Щитинин dormidoncheg)
  6. Репликация (Дмитрий Щитинин dormidoncheg)


Лекция 11. Actor Model. Future. Reactive Streams (Вадим Цесько incubos)



Презентация
Видео на канале Технострим

В лекции рассматриваются современные подходы к организации параллельных вычислений, набирающие популярность в последнее время: Actor Model на основе передачи сообщений в реализации Akka; абстрактные Future/Promise, комбинаторы и callback’и для организации асинхронной обработки данных при IO; а также раскрывается суть Reactive Streams для потоковой обработки данных с back pressure. Приведены многочисленные примеры использования подходов в существующих системах, а также ссылки для самостоятельного изучения.

Лекция 12. Livecoding второго этапа проекта (Вадим Цесько incubos)



Курсовой проект
Видео на канале Технострим

Livecoding базового решения проекта, который студенты Технополиса должны выполнить в этом году. Аналогично первому занятию, с единственным принципиальным отличием: на этот раз мы перешли на высокопроизводительный веб-сервер из one-nio. Также в этот раз мы записали видео с более подробной демонстрацией реализации компонентов.

Лекция 13. Мониторинг и диагностика JVM (Андрей Паньгин apangin)



Презентация
Видео на канале Технострим

Лекция знакомит со средствами для наблюдения за Java-приложением и анализа типичных проблем: дедлоков, утечек памяти, узких мест производительности. Рассматриваются как стандартные утилиты из состава JDK, так и популярное стороннее ПО, разбираются возможности Java-профайлеров. Показывается, как JMX, JVM TI и прочие интерфейсы помогают в разработке собственных инструментов мониторинга и диагностики.

Лекция 14. Site Reliability Engineering (Антон Иванов keyplayer)



Презентация
Видео на канале Технострим

Лекция посвящена основам написания отказоустойчивого кода. Разбираются типичные ошибки, которые на практике приводят к падению высоконагруженных систем. В первой части рассмотрены проблемы, которые возникают на уровне сервиса: пулы ресурсов, их перегрузка, медленный старт и graceful shutdown. Во второй части переходим на уровень межсервисного взаимодействия, подробно рассматриваются виды таймаутов, методики балансировки и проблемы ретраев. В заключительной части затронуты вопросы мониторинга и реакций на инциденты.

Лекция 15. «Современные» структуры данных (Дмитрий Щитинин dormidoncheg)



Презентация
Видео на канале Технострим

Лекция посвящена структурам данных, которые, как правило, не рассматриваются в классических курсах, но эффективно применяются на практике в высоконагруженных распределенных системах. Зачастую это вероятностные структуры данных, компактные и быстрые, но дающие приближенный результат. Так, например, при помощи HyperLogLog можно оценить количество различных элементов в датасете из миллиардов элементов, затратив на это не более килобайта, а результат будет отличаться от точного всего на несколько процентов. Отдельный раздел посвящен подходам к вычислению квантилей, рассмотрены их сильные и слабые стороны.

Лекция 16. Репликация (Дмитрий Щитинин dormidoncheg)



Презентация
Видео на канале Технострим

Репликация наряду с шардированием лежит в основе высоконагруженных отказоустойчивых распределенных систем. Репликация с одним выделенным лидером широко применяется в классических RDBMS. Конфигурация с несколькими выделенными лидерами может встречаться с системах, работающих в нескольких ДЦ, а также возникает в задачах коллаборативного редактирования. Репликация без выделенного лидера лежит в основе NoSQL баз данных, таких как Cassandra, Voldemort, Riak и др. В лекции рассмотрен каждый подход, область применения, сильные и слабые стороны, а также ключевые подробности реализации.



Плейлист всех лекций находится по ccылке, а также на Youtube.

Курсовой проект лежит здесь.
Различные варианты решений можно посмотреть среди закрытых pull request'ов.

Трансляции и записи видео других курсов проекта Технополис можно найти в официальной группе проекта в ОК.

Напоминаем также, что на канале Технострим размещены актуальные лекции и мастер-классы о программировании и анализе данных от IT-специалистов из всех образовательных проектов Mail.Ru Group — Техноатом, Технопарк, Технополис, Техносфера и Технотрек.

Комментарии (0)