DAS_2023_1/senkin_alexander_lab_8
2023-12-05 23:15:17 +04:00
..
README.md senkin_alexander_lab_8 is ready 2023-12-05 23:15:17 +04:00

Лабораторная работа №8 - Как Вы поняли, что называется распределенной системой и как она устроена?

Задание: Написать небольшое эссе (буквально несколько абзацев) своими словами (пожалуйста не пользуйтесь гуглом :) ) на тему "Устройство распределенных систем". А помогут Вам в этом вопросы из списка:

  • Зачем сложные системы (например, социальная сеть ВКонтакте) пишутся в "распределенном" стиле, где каждое отдельное приложение (или сервис) функционально выполняет только ограниченный спектр задач?
  • Для чего были созданы системы оркестрации приложений? Каким образом они упрощают / усложняют разработку и сопровождение распределенных систем?
  • Для чего нужны очереди обработки сообщений и что может подразумеваться под сообщениями?
  • Какие преимущества и недостатки распределенных приложений существуют на Ваш взгляд?
  • Целесообразно ли в сложную распределенную систему внедрять параллельные вычисления? Приведите примеры, когда это действительно нужно, а когда нет.

Эссе

Распределенные системы - это такие системы, в которых программный продукт разбит на несколько сервисов, зачастую взаимодействующих друг с другом.

Распределенные системы набирают популярность, потому что приложения в наше время сильно разрастаются и их становится все труднее поддерживать, масштабировать, разобраться в старом коде. Для этого стали пользвоваться микросервисной архитектурой, которая решает эти проблемы.

Микросервисная архитектура имеет плюсы и минусы. Из плюсов опять же упрощение поддержки продукта, его масштабирования и легче прийти новому человеку на проект, за счет более читабильного кода. Также это повышенная отказоустойчивость и производительность, так как можно развернуть много экземпляров одного сервиса, можно развернуть и экземпляры монолита, но он будет съедать много ресурсов, в отличие от сервисов. Из минусов можно выделить сложность разработки и ее дороговизна, нет смысла разрабатывать маленькое приложение или маленькой команде распределенное приложение.

Из популярных оркестраторов можно выделить kubernetes. Он отлично справляется с задачей создания, поддержания распределенного приложения за счет развертывания контейнеров. Также он удобен для поддержания работоспособности системы и распределения нагрузки, за счет его функций(не буду их описывать).

Сложно сказать, когда стоит а когда не стоит внедрять параллельные вычисления в распределенное приложение, так как все познается с опытом, и в некоторых моментах остается только с помощью практики выяснять какой способ выбрать. Зачастую нужно внедрять параллелизм при подключении клиентов на сервисы, при работе с брокерами также можно подключение вынести в отдельный поток.

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