Merge pull request 'karamushko_maxim_lab_8' (#400) from karamushko_maxim_lab_8 into main
Reviewed-on: #400
This commit is contained in:
commit
16523bb0ff
38
karamushko_maxim_lab_8/README.md
Normal file
38
karamushko_maxim_lab_8/README.md
Normal file
@ -0,0 +1,38 @@
|
||||
# Лабораторная работа №8 - Устройство распределенных систем
|
||||
## ПИбд-42 || Карамушко Максим
|
||||
|
||||
### Задание:
|
||||
Написать небольшое эссе (буквально несколько абзацев) своими словами.
|
||||
|
||||
1. Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где каждое отдельное
|
||||
приложение (или сервис) функционально выполняет только ограниченный спектр задач?
|
||||
2. Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение
|
||||
распределенных систем?
|
||||
3. Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?
|
||||
4. Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?
|
||||
5. Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры, когда это
|
||||
действительно нужно, а когда нет.
|
||||
|
||||
|
||||
### Эссе на тему: "Про устройство распределенных систем"
|
||||
|
||||
Распределенные системы представляют собой сложный, но крайне важный подход в разработке современных приложений. Такие проекты, как мессенджер Мессенджер, требуют высокой производительности, надежности и возможности масштабирования. Эти задачи особенно актуальны в условиях растущей нагрузки, и именно распределенная архитектура помогает их решать. Каждый компонент такой системы выполняет строго определенную функцию: например, аутентификация пользователей, рекомендации контента или управление медиафайлами. Ключевым преимуществом этого подхода является то, что сбой одного из сервисов не приводит к полной остановке всей системы — остальные модули продолжают работать в штатном режиме.
|
||||
|
||||
Одним из инструментов, которые существенно облегчают управление распределенными системами, являются системы оркестрации приложений. Эти технологии позволяют эффективно координировать взаимодействие между отдельными сервисами, а также автоматизировать процессы их развертывания, обновления и масштабирования. Среди самых популярных инструментов можно выделить Kubernetes и Docker Swarm. Однако внедрение таких систем требует высокого уровня подготовки команды разработчиков, поскольку усложняет общую структуру проекта.
|
||||
|
||||
Важной частью распределенных систем являются очереди обработки сообщений. Они обеспечивают асинхронное взаимодействие между сервисами, передавая данные и запросы в удобной форме. Использование очередей позволяет разгрузить основные сервисы, оптимизировать управление потоком данных и избежать перегрузки системы. Наиболее известными инструментами для реализации очередей являются RabbitMQ и Apache Kafka.
|
||||
|
||||
#### Преимущества распределенных систем:
|
||||
- Отказоустойчивость. Система продолжает работать, даже если отдельные компоненты выходят из строя.
|
||||
- Масштабируемость. Добавление новых ресурсов позволяет легко увеличивать производительность.
|
||||
- Балансировка нагрузки. Данные и запросы распределяются между несколькими серверами или узлами, что улучшает общую эффективность.
|
||||
|
||||
#### Недостатки распределенных систем:
|
||||
- Сложность разработки. Проектирование и реализация распределенной системы требуют больше времени и ресурсов, чем создание монолитной системы.
|
||||
- Задержки взаимодействия. Монолитные системы имеют преимущество в скорости передачи данных между компонентами, так как всё происходит в рамках одного процесса.
|
||||
- Высокие организационные затраты. Разработка, тестирование и поддержка распределенных систем требуют дополнительных усилий и инвестиций.
|
||||
|
||||
Особое место в распределенных системах занимает применение параллельных вычислений. Этот подход может быть эффективным, если задачи независимы друг от друга и требуют высокой производительности, например, в обработке больших данных или сложных математических расчетах. Однако для небольших задач или операций, требующих строгой последовательности, таких как рекурсивное вычисление факториала, параллельные вычисления могут стать источником проблем и замедления.
|
||||
|
||||
#### Вывод
|
||||
Распределенные системы являются неотъемлемой частью современной ИТ-инфраструктуры. Они обеспечивают высокую производительность и надежность, что делает их оптимальным выбором для многих приложений. Однако успех их внедрения напрямую зависит от грамотного проектирования. Важно учитывать как преимущества, так и недостатки, чтобы выбрать подходящую архитектуру для конкретного проекта. Этот выбор становится залогом создания качественного продукта, способного выдерживать высокие нагрузки и обеспечивать стабильную работу даже в условиях сложных вызовов.
|
Loading…
Reference in New Issue
Block a user