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