5.4 KiB
Лабораторная работа №8 - Как Вы поняли, что называется распределенной системой и как она устроена?
Задание: Написать небольшое эссе (буквально несколько абзацев) своими словами (пожалуйста не пользуйтесь гуглом :) ) на тему "Устройство распределенных систем". А помогут Вам в этом вопросы из списка:
- Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач?
- Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение распределенных систем?
- Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?
- Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?
- Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры, когда это действительно нужно, а когда нет.
Эссе
Распределенные системы - это такие системы, в которых программный продукт разбит на несколько сервисов, зачастую взаимодействующих друг с другом.
Распределенные системы набирают популярность, потому что приложения в наше время сильно разрастаются и их становится все труднее поддерживать, масштабировать, разобраться в старом коде. Для этого стали пользвоваться микросервисной архитектурой, которая решает эти проблемы.
Микросервисная архитектура имеет плюсы и минусы. Из плюсов опять же упрощение поддержки продукта, его масштабирования и легче прийти новому человеку на проект, за счет более читабильного кода. Также это повышенная отказоустойчивость и производительность, так как можно развернуть много экземпляров одного сервиса, можно развернуть и экземпляры монолита, но он будет съедать много ресурсов, в отличие от сервисов. Из минусов можно выделить сложность разработки и ее дороговизна, нет смысла разрабатывать маленькое приложение или маленькой команде распределенное приложение.
Из популярных оркестраторов можно выделить kubernetes. Он отлично справляется с задачей создания, поддержания распределенного приложения за счет развертывания контейнеров. Также он удобен для поддержания работоспособности системы и распределения нагрузки, за счет его функций(не буду их описывать).
Сложно сказать, когда стоит а когда не стоит внедрять параллельные вычисления в распределенное приложение, так как все познается с опытом, и в некоторых моментах остается только с помощью практики выяснять какой способ выбрать. Зачастую нужно внедрять параллелизм при подключении клиентов на сервисы, при работе с брокерами также можно подключение вынести в отдельный поток.
При работе с микросервисной архитектурой часто приходится прибегать к использованию брокеров сообщений. Они помогают в общении сервисов друг с другом. С помощью брокеров мы можем сделать так, чтобы от одного сервиса сообщения доходили до нескольких сервисов за раз. В качестве сообщений может подрузамеваться какая-то информация, которая передается через брокер.