Способ общения микросервисов для самых маленьких

Jul 16, 2024

Способ общения микросервисов для самых маленьких

Введение

  • Лектор: Дмитрий Литвин
  • В статье обсуждаются различные способы общения микросервисов.
  • Ссылка на оригинальную статью будет в описании видео.

Мероприятие Avito All Day Long

  • Организатор: Авито
  • Дата и место: 20 июля, центр событий РБК, Москва
  • Программа: доклады, дискуссии, квиз, автопати, демо-станции
  • Темы: платформенные инструменты, формулировка вопросов, решение конфликтов
  • Регистрация по ссылке в описании

Микросервисная архитектура

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

Задача двух генералов

  • Иллюстрирует проблему доставки сообщений между микросервисами через сеть
  • В общем случае, доставка сообщения между двумя сервисами через сеть не решаема

Виды общения микросервисов

Синхронные способы

  • REST API

    • Популярное решение для 90% сервисов
    • Преимущества: минимум библиотек, читабельный формат, легко дебажить
    • Проблемы: синхронность, прямое обращение, текстовый формат, нет строгой схемы данных
  • gRPC

    • Использует бинарный формат protobuf, лучше утилизация трафика
    • Есть схема данных, поддержка стриминга и back pressure
    • Подходит для высоких нагрузок, требует дополнительные библиотеки
  • SOAP

    • Использует XML, часто встречается в старых системах
    • Проблемы: сложность формата, многословность, требуются клиентские библиотеки

Асинхронные способы

  • Мессенджеры (RabbitMQ, ZeroMQ, ActiveMQ)
    • Асинхронное взаимодействие, могут работать с брокером и без него
    • Разные варианты: с хранилищем и без, с балансировкой нагрутки и без, текстовые и бинарные
    • Преимущества: слабая связанность, возможность бродкаста, подтверждение доставки
  • Стриминг (Kafka)
    • Работает как мессенджер платформа, сохраняет данные на диск
    • Преимущества: асинхронность, отказоустойчивость, хорошо работает с большими нагрузками
    • Проблемы: сложность настройки, задержки в ответах, требует изучения и внимательного подхода

Заключение

  • Выбор системы зависит от требований к проекту (подтверждение доставки, запись на диск)
  • Автор призывает делиться своим опытом работы с микросервисами в комментариях

Поддержка канала

  • Лайки, комментарии, подписка на канал
  • Поддержка денежными переводами через Boosty и ЮMoney