7.8 KiB
Лабораторная работа №8
Задание
Написать небольшое эссе (буквально несколько абзацев) своими словами (пожалуйста не пользуйтесь гуглом :) ) на тему "Устройство распределенных систем". А помогут Вам в этом вопросы из списка:
- Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач?
- Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение распределенных систем?
- Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?
- Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?
- Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры, когда это действительно нужно, а когда нет.
Результат
Зачем сложные системы пишутся в "распределенном" стиле.
Причина для этого очень проста и заключается в том, что распределенный стиль используется для повышения гибкости, масштабируемости и отказоустройчивости системы. Каждая функциональная часть системы выносится в отдельный сервис, что позволяет:
- Масштабировать именно те компоненты, которые наиболее нагружены, без необходимости увеличивать ресурсы для всей системы;
- Разделять ответственность между командами разработки: каждая команда работает над своим сервисом, что ускоряет процесс разработки и внедрения изменений;
- Повышать отказоустойчивость: если один сервис выходит из строя, это не нарушает работу всей системы, другие сервисы продолжают работать.
Например, тотже ВКонтакте может разделять сервисы для хранения фотографий, обработку сообщений и прочее.
Для чего были созданы системы оркестрации сообщений.
Системы оркестрации (например, Kubernetes) автоматизируют развертывание, масштабирование и управление контейнерами. Это особенно полезно в распределенных системах, где необходимо управлять множеством взаимодействующих сервисов. Оркестраторы помогают:
- Автоматически перезапускать или перемещать сервисы при сбоях;
- Упрощать масштабирование сервисов при увеличении нагрузки;
- Упрощать обновление и откат изменений;
- Мониторить состояние всех контейнеров и сервисов.
Системы оркестрации позволяют быстрее и проще развертывать и поддерживать сложные системы, но также требуют опыта для настройки и сопровождения.
Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями.
Сообщения — это данные или события, которые передаются между сервисами для выполнения задач.
Очереди сообщений (например, RabbitMQ, Kafka) используются для асинхронного взаимодействия между сервисами. Тем самым очереди позволяют:
- Обеспечить надёжность передачи данных между сервисами даже при временных сбоях;
- Разделить большие задачи на более мелкие и обрабатывать их параллельно;
- Оптимизировать производительность, разгружая основные сервисы от частых операций ввода-вывода.
Например, сообщение может представлять собой запрос на отправку уведомления, сохранение данных или запуск какой-либо задачи.
Какие преимущества и недостатки распределенных приложений существуют.
Распределённые приложения обладают преимуществами, такими как масштабируемость, отказоустойчивость и гибкость.
Каждый сервис можно развивать независимо, подбирая для него оптимальные технологии. Это ускоряет разработку и внедрение изменений.
Однако такие системы сложнее разрабатывать и поддерживать, требуя точного управления взаимодействием между сервисами и сложной отладки. Дополнительно возрастают расходы на инфраструктуру и оркестрацию, так как нужны системы мониторинга и очереди сообщений.
Целесообразно ли внедрять параллельные вычисления в сложную распределенную систему.
Параллельные вычисления могут быть полезны, когда задачи могут выполняться независимо и параллельно, например:
- Анализ данных и машинное обучение;
- Потоковая обработка данных, в которых система работает с частыми событиями (обработка транзакций и прочее).
Однако параллельные вычисления могут быть излишними для задач, которые:
- Содержат много зависимостей и требуют синхронизации;
- Тяжелы для разделения на независимые части, то есть все идет последовательно и следующая часть зависит от результатов предыдущей.