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