Распределённые системы — различия между версиями
Danlark (обсуждение | вклад) |
|||
Строка 25: | Строка 25: | ||
Телеграм-чат курса: https://t.me/joinchat/BgsrQlVlFUEaky--RdkyEQ | Телеграм-чат курса: https://t.me/joinchat/BgsrQlVlFUEaky--RdkyEQ | ||
− | GitHub репозиторий: | + | GitHub репозиторий: https://github.com/osukhoroslov/hse-ds-2020 |
== План курса == | == План курса == | ||
Строка 35: | Строка 35: | ||
Будет 15 лекций, примерный план лекций таков: | Будет 15 лекций, примерный план лекций таков: | ||
− | # Введение. Распределенные системы. Примеры, преимущества, особенности, требования | + | # Введение. Распределенные системы. Примеры, преимущества, особенности, требования. |
# Варианты взаимодействия между процессами. Обмен сообщениями. Синхронные и асинхронные операции. Гарантии доставки, сохранение порядка. Модель запрос-ответ, RPC, идемпотентность. | # Варианты взаимодействия между процессами. Обмен сообщениями. Синхронные и асинхронные операции. Гарантии доставки, сохранение порядка. Модель запрос-ответ, RPC, идемпотентность. | ||
# Дизайн прикладного протокола, сериализация данных. Эволюция протокола HTTP, стиль REST. WebSockets. Bidirectional streaming в gRPC. | # Дизайн прикладного протокола, сериализация данных. Эволюция протокола HTTP, стиль REST. WebSockets. Bidirectional streaming в gRPC. | ||
Строка 63: | Строка 63: | ||
Планируется от 6 до 8 домашних заданий. За каждое задание вы получите оценку, среднее по всем домашним заданиям будет составлять 0.7 от итоговой оценки. | Планируется от 6 до 8 домашних заданий. За каждое задание вы получите оценку, среднее по всем домашним заданиям будет составлять 0.7 от итоговой оценки. | ||
− | === | + | === Проверочные работы === |
− | + | На лекциях будут регулярно проводиться небольшие проверочные работы по материалам прошлых занятий. Среднее по всем проверочным работам будет составлять 0.3 от итоговой оценки. | |
=== Экзамен === | === Экзамен === | ||
− | Экзамена не будет, оценки выставляются по домашним заданиям и | + | Экзамена не будет, оценки выставляются по домашним заданиям и проверочным работам. |
=== Итоговая оценка за курс === | === Итоговая оценка за курс === | ||
− | Итог = 0.7 * ДЗ + 0.3 * | + | Итог = 0.7 * ДЗ + 0.3 * ПР |
ДЗ – средняя оценка за домашние задания | ДЗ – средняя оценка за домашние задания | ||
− | + | ПР — средняя оценка за проверочные работы | |
Округление арифметическое только в финальной оценке. | Округление арифметическое только в финальной оценке. | ||
Автоматы не предусмотрены. | Автоматы не предусмотрены. |
Версия 12:00, 4 сентября 2020
Содержание
О курсе
Курс для студентов 3 курса в 1-2 модулях специализации РС.
Лектор: Сухорослов Олег Викторович
Семинарист: Новиков Глеб
Семинары проходят онлайн по пятницам (9:30-10:50) у группы 185
Ссылка на регулярную Zoom-конференцию: TODO
Семинарист: Орлов Никита
Семинары проходят на Покровке по вторникам (11:10-12:30) у группы 186.
Семинарист: Кутенин Данила
Приглашённый гость, возможный семинарист у межкампусной группы, если таковая наберётся.
Полезные ссылки
Телеграм-канал курса: https://t.me/hse_ds_course_2020
Телеграм-чат курса: https://t.me/joinchat/BgsrQlVlFUEaky--RdkyEQ
GitHub репозиторий: https://github.com/osukhoroslov/hse-ds-2020
План курса
- Может меняться
Лекции
Будет 15 лекций, примерный план лекций таков:
- Введение. Распределенные системы. Примеры, преимущества, особенности, требования.
- Варианты взаимодействия между процессами. Обмен сообщениями. Синхронные и асинхронные операции. Гарантии доставки, сохранение порядка. Модель запрос-ответ, RPC, идемпотентность.
- Дизайн прикладного протокола, сериализация данных. Эволюция протокола HTTP, стиль REST. WebSockets. Bidirectional streaming в gRPC.
- Взаимодействия в группе. Многоадресная рассылка (multicast). Гарантии и варианты реализации. Оверлейные сети. Распространение информации. Epidemic protocols, gossip, anti-entropy, rumor spreading.
- Непрямое взаимодействие. Message queue, pubsub, DSM, tuple space.
- Отказы. Обнаружение отказов. Свойства детектора отказов. Примеры реализации детектора. Сервис group membership.
- Именование и поиск. Типы и варианты реализации. Поиск в локальной сети. DNS. Поиск в P2P-системах. DHT.
- Высоконагруженные сервисы. Масштабирование. Репликация сервисов, балансировка нагрузки. Шардинг, consistent hashing и другие подходы.
- Распределенные вычисления. Параллельная обработка запросов на кластере, закон Амдала, stragglers. Пакетная обработка данных, модель MapReduce.
- Репликация данных. Варианты реализации (один лидер, несколько лидеров, кворумные чтения и запись). Согласованность, линеаризуемость, другие модели и гарантии.
- Порядок событий. Физические и логические часы. Обнаружение конфликтов. Version vectors. CRDT.
- Обзор некоторых классических распределенных алгоритмов. Mutual exclusion, consistent snapshots, leader election.
- Безопасность в распределенных системах. Безопасный рандом. Криптография, симметричное и асимметричное шифрование. Электронные подписи, MAC. Криптографические хеш-функции. PKI, цифровые сертификаты. Примеры: Kerberos, TLS.
- Координация и консенсус. Примеры задач, сводимых к консенсусу. Total Order Broadcast. 2PC. Задача консенсуса. FLP Impossibility. Обзор алгоритмов консенсуса, Paxos, Raft. Практические реализации, ZooKeeper.
- Византийские отказы, BFT, блокчейн
Семинары
Семинары будут направлены на практические применения лекционного материала – разборы реально существующих систем, промышленных решений.
Все лекции и семинары будут записаны в репозитории в markdown вместе с другими материалами.
Домашние задания
Домашние задания направлены на реализацию того или иного куска лекционного/семинарского материала с уже подготовленным framework для тестирования и запуска. Основной язык нашего курса будет Python.
Планируется от 6 до 8 домашних заданий. За каждое задание вы получите оценку, среднее по всем домашним заданиям будет составлять 0.7 от итоговой оценки.
Проверочные работы
На лекциях будут регулярно проводиться небольшие проверочные работы по материалам прошлых занятий. Среднее по всем проверочным работам будет составлять 0.3 от итоговой оценки.
Экзамен
Экзамена не будет, оценки выставляются по домашним заданиям и проверочным работам.
Итоговая оценка за курс
Итог = 0.7 * ДЗ + 0.3 * ПР
ДЗ – средняя оценка за домашние задания
ПР — средняя оценка за проверочные работы
Округление арифметическое только в финальной оценке.
Автоматы не предусмотрены.