DAS_2024_1/kosheev_maksim_lab_8/READMY.md

3.9 KiB
Raw Blame History

Устройство распределенных систем

Распределенные системы — это архитектура, в которой задачи выполняются не одним большим приложением, а множеством небольших сервисов. Каждое из них отвечает за определенную функцию: авторизацию, обработку данных, отправку сообщений и так далее. Такой подход особенно важен для больших и сложных проектов, таких как социальная сеть ВКонтакте. Здесь разделение на сервисы позволяет масштабировать систему: если, например, сервис обработки изображений упдаёт, то это не заденет остальную програм и его можно запустить на дополнительных серверах, не трогая остальные части системы.

Зачем нужны системы оркестрации?

Когда распределенных сервисов становится много, управлять ими вручную становится сложно. Системы оркестрации, такие как Kubernetes, автоматизируют этот процесс: они запускают приложения, следят за их состоянием и помогают быстро заменять упавшие части. Это упрощает разработку и сопровождение, позволяя сосредоточиться на коде, а не на инфраструктуре.

Очереди обработки сообщений

Очереди сообщений нужны для того, чтобы сервисы могли обмениваться информацией. Например, один сервис обрабатывает заказ, а другой — отправляет уведомление покупателю. Очередь (RabbitMQ или Kafka) помогает передать сообщение об этом заказе. Такие очереди делают систему более надежной: если один из сервисов временно недоступен, сообщение остается в очереди, и его обработают позже.

Преимущества и недостатки

Плюсы распределенных приложений очевидны: они легко масштабируются, проще в поддержке, и каждая часть системы может развиваться независимо. Но есть и минусы: сложнее наладить взаимодействие между сервисами, возрастает количество потенциальных точек отказа, а разработка требует более высокой квалификации.

Параллельные вычисления в распределенных системах

Параллельные вычисления полезны, когда нужно одновременно обрабатывать большие объемы данных. Например, при выдаче результатов поиска в поисковой системе или обработке миллионов изображений для социальных сетей. Однако не всегда параллельность оправдана. Если задача последовательная, как, например, генерация отчетов, параллельные вычисления только усложнят код.1