forked from Alexey/DAS_2024_1
Merge pull request 'kashin_maxim_lab_8' (#128) from kashin_maxim_lab_8 into main
Reviewed-on: Alexey/DAS_2024_1#128
This commit is contained in:
commit
a3938f3051
69
kashin_maxim_lab_8/readme.md
Normal file
69
kashin_maxim_lab_8/readme.md
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
# Кашин Максим ПИбд-42
|
||||||
|
|
||||||
|
# Устройство распределенных систем
|
||||||
|
|
||||||
|
## Введение
|
||||||
|
Распределенные системы становятся все более важными в современных технологиях. Они обеспечивают возможность построения сложных приложений, таких как социальные сети, где отдельные сервисы выполняют ограниченные задачи. В этом эссе мы рассмотрим причины создания распределенных систем, роль оркестрации приложений, использование очередей сообщений, а также преимущества и недостатки таких систем.
|
||||||
|
|
||||||
|
## 1. Зачем создаются распределенные системы?
|
||||||
|
Распределенные системы создаются для решения следующих задач:
|
||||||
|
|
||||||
|
| **Проблема** | **Решение с помощью распределенных систем** |
|
||||||
|
|------------------------------------|-------------------------------------------------------------|
|
||||||
|
| Сложность обновлений и масштабирования | Разделение на модули с ограниченными задачами |
|
||||||
|
| Высокие требования к доступности | Обеспечение отказоустойчивости за счет дублирования сервисов |
|
||||||
|
| Быстрые изменения требований | Гибкость в добавлении и удалении сервисов |
|
||||||
|
|
||||||
|
### Пример:
|
||||||
|
ВКонтакте использует распределенные системы для обработки миллионов пользователей одновременно. Каждая служба отвечает за определенные функции (например, обработка сообщений, хранение медиафайлов), что позволяет обновлять их независимо друг от друга.
|
||||||
|
|
||||||
|
## 2. Системы оркестрации приложений
|
||||||
|
Системы оркестрации приложений, такие как Kubernetes, созданы для управления распределенными сервисами. Их преимущества включают:
|
||||||
|
|
||||||
|
| **Преимущества** | **Недостатки** |
|
||||||
|
|---------------------------------------|---------------------------------------|
|
||||||
|
| Автоматизация развертывания | Сложность в обучении новых сотрудников |
|
||||||
|
| Масштабируемость | Зависимость от платформы оркестрации |
|
||||||
|
| Управление зависимостями между сервисами | Трудности в отладке и мониторинге |
|
||||||
|
|
||||||
|
### Пример:
|
||||||
|
Использование Kubernetes позволяет автоматически масштабировать сервисы в зависимости от нагрузки, но требует знания специфичных команд и конфигураций.
|
||||||
|
|
||||||
|
## 3. Очереди обработки сообщений
|
||||||
|
Очереди сообщений, такие как RabbitMQ или Apache Kafka, используются для асинхронного обмена данными между сервисами. Сообщениями могут быть:
|
||||||
|
|
||||||
|
| **Тип сообщения** | **Описание** |
|
||||||
|
|----------------------------------|------------------------------------|
|
||||||
|
| Уведомления | Сообщения о событиях (например, новое сообщение от пользователя) |
|
||||||
|
| Запросы | Запросы на выполнение определенных операций |
|
||||||
|
| Результаты обработки | Ответы на выполненные запросы |
|
||||||
|
|
||||||
|
### Пример:
|
||||||
|
Система уведомлений в социальной сети использует очереди сообщений для отправки уведомлений пользователям о новых событиях, таких как лайки или комментарии.
|
||||||
|
|
||||||
|
## 4. Преимущества и недостатки распределенных приложений
|
||||||
|
### Преимущества:
|
||||||
|
- Высокая доступность: Устойчивость к сбоям за счет дублирования сервисов.
|
||||||
|
- Масштабируемость: Легкость в добавлении новых ресурсов.
|
||||||
|
- Параллельная обработка: Возможность выполнения нескольких задач одновременно.
|
||||||
|
|
||||||
|
### Недостатки:
|
||||||
|
- Сложности в отладке и тестировании: Необходимость отслеживания взаимодействий между сервисами.
|
||||||
|
- Проблемы безопасности: Увеличение количества точек доступа и потенциальных уязвимостей.
|
||||||
|
- Управление состоянием: Сложности в поддержании согласованности данных.
|
||||||
|
|
||||||
|
## 5. Параллельные вычисления в распределенных системах
|
||||||
|
Внедрение параллельных вычислений целесообразно, когда:
|
||||||
|
|
||||||
|
| **Ситуация** | **Рекомендация** |
|
||||||
|
|-----------------------------------|-------------------------------------|
|
||||||
|
| Обработка больших объемов данных | Использовать параллельные вычисления |
|
||||||
|
| Выполнение ресурсоемких задач | Применять распределенные вычисления |
|
||||||
|
| Небольшие задачи | Избегать параллельности из-за накладных расходов |
|
||||||
|
|
||||||
|
### Примеры:
|
||||||
|
- **Необходимость**: Обработка потоков данных в реальном времени для аналитики.
|
||||||
|
- **Нецелесообразно**: Простые операции, такие как обработка небольших файлов.
|
||||||
|
|
||||||
|
## Заключение
|
||||||
|
Распределенные системы представляют собой мощный инструмент для создания сложных приложений, обеспечивая гибкость, масштабируемость и устойчивость. Однако их внедрение требует внимательного анализа требований и подходов к разработке. Понимание преимуществ и недостатков поможет в эффективном использовании распределенных архитектур.
|
Loading…
Reference in New Issue
Block a user