Бакалавриат
2022/2023
Распределенные системы
Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Лучший по критерию «Новизна полученных знаний»
Статус:
Курс по выбору (Прикладная математика и информатика)
Направление:
01.03.02. Прикладная математика и информатика
Где читается:
Факультет компьютерных наук
Когда читается:
3-й курс, 1, 2 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для всех кампусов НИУ ВШЭ
Язык:
русский
Кредиты:
5
Контактные часы:
60
Программа дисциплины
Аннотация
Дисциплина нацелена на изучение принципов и технологий распределенных вычислений, знакомство с различными классами распределенных систем и получение практических навыков разработки распределенных приложений. Дисциплина состоит из двух частей. Первая часть посвящена базовым принципам, механизмам и технологиями построения распределенных систем, типовым проблемам и методам их решения. Вторая часть рассматривает различные классы распределенных систем и приложений, особенности их архитектуры, принципы и детали реализации. Дисциплина имеет практическую направленность и включает домашние задания по реализации распределенных приложений.
Цель освоения дисциплины
- Изучение принципов и технологий построения распределенных систем.
- Знакомство с различными классами распределенных систем и приложений.
- Получение практических навыков разработки распределенных приложений.
Планируемые результаты обучения
- Студент владеет базовыми механизмами и технологиями разработки распределенных приложений.
- Студент знает особенности различных классов распределенных систем и используемые при их реализации подходы.
- Студент знает принципы построения распределенных систем, модели программирования и методы решения типовых задач.
- Студент знает проблематику распределенных вычислений, области применения и виды распределенных систем.
- Студент умеет применять полученные знания на практике и обосновывать выбор метода решения поставленной задачи.
Содержание учебной дисциплины
- Введение в распределенные вычисления.
- Сетевое взаимодействие, стек TCP/IP и сокеты.
- Обмен сообщениями между процессами, протоколы и форматы данных.
- Промежуточное ПО, удаленные вызовы процедур и методов.
- Протокол HTTP, архитектурный стиль REST и веб-сервисы.
- Непрямое взаимодействие между процессами (очереди, publish-subscribe, мультикаст, общая память).
- Базовые механизмы (именование, поиск, обнаружение отказов, распространение информации).
- Обеспечение безопасности в распределенных системах.
- Распределенные системы хранения данных, репликация и согласованность данных.
- Консенсус и координация распределенных процессов.
- Децентрализованные распределенные системы, одноранговые сети, блокчейн.
- Параллельные вычисления, распределенные вычислительные системы и приложения.
- Распределенная обработка данных, MapReduce, модель dataflow.
- Облачные вычисления.
- Сервис-ориентированная архитектура, микросервисы.
- Современные практики и инструменты разработки распределенных систем и приложений.
Элементы контроля
- Домашние задания
- Проверочные работыПроверочные работы проводятся регулярно (раз в 1-2 недели) на лекциях
Промежуточная аттестация
- 2022/2023 учебный год 2 модуль0.7 * Домашние задания + 0.3 * Проверочные работы
Список литературы
Рекомендуемая основная литература
- Coulouris, G. F. (2012). Distributed Systems : Concepts and Dessign, Fifth Edition (Vol. Fifth edition, International edition). Harlow: Pearson Education. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1418002
- Tanenbaum, A. S., & Steen, M. van. (2014). Distributed Systems: Pearson New International Edition : Principles and Paradigms (Vol. 2nd ed). Harlow, Essex: Pearson. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1418515
Рекомендуемая дополнительная литература
- Burns, B. (2018). Designing Distributed Systems : Patterns and Paradigms for Scalable, Reliable Services (Vol. First edition). Sebastopol, CA: O’Reilly Media. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1713745
- Kleppmann, M. (2017). Designing Data-Intensive Applications : The Big Ideas Behind Reliable, Scalable, and Maintainable Systems. Sebastopol, CA: O’Reilly Media. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1487643
- Petrov, A., & O’Reilly for Higher Education (Firm). (2019). Database Internals : A Deep Dive Into How Distributed Data Systems Work (Vol. First edition). Sebastopol, CA: O’Reilly Media. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=2250514