DAS_2024_1/kashin_maxim_lab_8/readme.md
2024-10-27 20:19:04 +04:00

70 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Кашин Максим ПИбд-42
# Устройство распределенных систем
## Введение
Распределенные системы становятся все более важными в современных технологиях. Они обеспечивают возможность построения сложных приложений, таких как социальные сети, где отдельные сервисы выполняют ограниченные задачи. В этом эссе мы рассмотрим причины создания распределенных систем, роль оркестрации приложений, использование очередей сообщений, а также преимущества и недостатки таких систем.
## 1. Зачем создаются распределенные системы?
Распределенные системы создаются для решения следующих задач:
| **Проблема** | **Решение с помощью распределенных систем** |
|------------------------------------|-------------------------------------------------------------|
| Сложность обновлений и масштабирования | Разделение на модули с ограниченными задачами |
| Высокие требования к доступности | Обеспечение отказоустойчивости за счет дублирования сервисов |
| Быстрые изменения требований | Гибкость в добавлении и удалении сервисов |
### Пример:
ВКонтакте использует распределенные системы для обработки миллионов пользователей одновременно. Каждая служба отвечает за определенные функции (например, обработка сообщений, хранение медиафайлов), что позволяет обновлять их независимо друг от друга.
## 2. Системы оркестрации приложений
Системы оркестрации приложений, такие как Kubernetes, созданы для управления распределенными сервисами. Их преимущества включают:
| **Преимущества** | **Недостатки** |
|---------------------------------------|---------------------------------------|
| Автоматизация развертывания | Сложность в обучении новых сотрудников |
| Масштабируемость | Зависимость от платформы оркестрации |
| Управление зависимостями между сервисами | Трудности в отладке и мониторинге |
### Пример:
Использование Kubernetes позволяет автоматически масштабировать сервисы в зависимости от нагрузки, но требует знания специфичных команд и конфигураций.
## 3. Очереди обработки сообщений
Очереди сообщений, такие как RabbitMQ или Apache Kafka, используются для асинхронного обмена данными между сервисами. Сообщениями могут быть:
| **Тип сообщения** | **Описание** |
|----------------------------------|------------------------------------|
| Уведомления | Сообщения о событиях (например, новое сообщение от пользователя) |
| Запросы | Запросы на выполнение определенных операций |
| Результаты обработки | Ответы на выполненные запросы |
### Пример:
Система уведомлений в социальной сети использует очереди сообщений для отправки уведомлений пользователям о новых событиях, таких как лайки или комментарии.
## 4. Преимущества и недостатки распределенных приложений
### Преимущества:
- Высокая доступность: Устойчивость к сбоям за счет дублирования сервисов.
- Масштабируемость: Легкость в добавлении новых ресурсов.
- Параллельная обработка: Возможность выполнения нескольких задач одновременно.
### Недостатки:
- Сложности в отладке и тестировании: Необходимость отслеживания взаимодействий между сервисами.
- Проблемы безопасности: Увеличение количества точек доступа и потенциальных уязвимостей.
- Управление состоянием: Сложности в поддержании согласованности данных.
## 5. Параллельные вычисления в распределенных системах
Внедрение параллельных вычислений целесообразно, когда:
| **Ситуация** | **Рекомендация** |
|-----------------------------------|-------------------------------------|
| Обработка больших объемов данных | Использовать параллельные вычисления |
| Выполнение ресурсоемких задач | Применять распределенные вычисления |
| Небольшие задачи | Избегать параллельности из-за накладных расходов |
### Примеры:
- **Необходимость**: Обработка потоков данных в реальном времени для аналитики.
- **Нецелесообразно**: Простые операции, такие как обработка небольших файлов.
## Заключение
Распределенные системы представляют собой мощный инструмент для создания сложных приложений, обеспечивая гибкость, масштабируемость и устойчивость. Однако их внедрение требует внимательного анализа требований и подходов к разработке. Понимание преимуществ и недостатков поможет в эффективном использовании распределенных архитектур.