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