💻
Подготовка к собеседованию
  • Оглавление
  • Архитектурные вопросы
    • Как избавиться от монолитности приложения?
    • Модульность VS Микросервисы
    • Микросервисы VS Монолит
    • Web services, RESTfull, SOAP
    • Распределенные системы
    • Вопросы по микросервисам
    • Разложение монолита
  • Языки программирования
    • Императивные и декларативные языки программирования
    • Функциональное программирование
  • Коммуникация
    • Основы WEB
    • Уровни модели OSI
    • IP
    • TCP
    • UDP
    • TCP и UDP – в чем разница?
    • TCP/IP
    • Приложения TCP / IP
    • ICMP
    • HTTP
    • HTTP/1.1 vs HTTP/2
    • Разница между HTTP и HTTPS
    • URL и URI - в чем различие?
    • SSL
    • TLS
    • Web Sockets
    • SOAP vs REST vs GraphQL vs RPC
    • DNS
    • Как работает интернет
  • среда выполнения
    • Процессы, потоки,нити
  • Алгоритмы
    • Алгоритмы и структуры данных
  • БД
    • Основы БД
    • Транзакции
    • Нормализация БД
    • SQL
  • Брокеры сообщений
    • Введение в kafka
    • kafka
    • 5 вещей, о которых должен знать любой разработчик Apache Kafka
  • Парадигмы проектирования
    • 10 важнейших принципов разработки программного обеспечения
    • Принципы для разработки: KISS, DRY, YAGNI, BDUF, SOLID, APO и бритва Оккама
  • Highload
    • За двумя зайцами погонишься — чеклист для HighLoad системы гуглить будешь
Powered by GitBook
On this page

Was this helpful?

  1. Архитектурные вопросы

Распределенные системы

PreviousWeb services, RESTfull, SOAPNextВопросы по микросервисам

Last updated 4 years ago

Was this helpful?

В распределённых системах используется и распределённое состояние приложений. В соответствии с в любой реализации распределённых вычислений возможно обеспечить не более двух из трёх следующих свойств: (consistency), (availability) и (partition tolerance) (первые буквы английских наименований этих свойств и сформировали акроним CAP). Получается, что для того чтобы сделать свою реализацию распределённой системы устойчивой к отказам, необходимо выбирать между доступностью информации и согласованностью данных. Если мы выберем доступность информации — то, в итоге, в нашем распоряжении окажется то, что называют «согласованностью в конечном счёте» (eventual consistency). То есть — данные будут согласованными, но лишь через некоторое время после последнего обновления. А если выбрать согласованность данных — это окажет воздействие на производительность, так как возникнет необходимость в синхронизации и изоляции операций записи данных во всей распределённой системе. (event sourcing) — это концепция, в соответствии с которой состояние бизнес-сущностей, таких, как заказ или клиент, хранится в виде последовательности событий, изменяющих состояние. Это обеспечивает доступность информации вместо согласованности данных. В результате можно применять очень просто устроенные операции записи, но выполнение операций чтения при этом усложняется, так как в том случае, если такие операции распространяются на несколько сервисов, для их выполнения может потребоваться использование особой модели чтения данных. Для организации коммуникаций в распределённой системе может использоваться брокер, но можно обойтись и без него. Системы, в которых нет брокера, широко известны. Самая известная из них — это, пожалуй, система обмена данными, реализованная в рамках протокола HTTP. Системы, в которых используется брокер, как можно судить из их названия, обладают особой сущностью-брокером, находящейся между отправителем и получателем сообщения. Брокер разделяет отправителя и получателя, позволяя организовывать синхронный и асинхронный обмен данными. Это улучшает отказоустойчивость системы, так как потребитель сообщения не обязательно должен быть доступен в момент отправки сообщения. Коммуникации, основанные на использовании брокера, кроме того, позволяют независимо масштабировать системы, занимающиеся отправкой и получением сообщений. материал, содержащий некоторые сведения по вопросу выбора технологии для организации синхронного и асинхронного обмена данными в распределённых системах.

теоремой CAP
согласованность данных
доступность информации
устойчивость к разделению
Порождение событий
Вот