ИТМО Микросервисы - лекция 7 - Межпроцессное взаимодействие. API. REST API, RMI, Messaging API

YOUTUBE · 01.12.2025 05:40

Ключевые темы и таймкоды

Обсуждение асинхронного общения

0:02
  • Лектор обсуждает формат лекции с вопросами и ответами и возможность использования функции поднятия руки в Zoom.
  • Обсуждается взаимодействие микросервисов, где клиент делает запрос на создание комментария в каталоге сервиса, но не ждет его выполнения.

Примеры асинхронного общения

7:24
  • Лектор приводит пример кода, который демонстрирует асинхронное общение, где создается задача, которая выполняется в фоновом режиме, но не ждет ее завершения.
  • Обсуждается, что хотя код выглядит асинхронным, технически он является синхронным, так как основной поток возвращает результат клиенту.

Блокирующее общение и асинхронное программирование

12:35
  • Лектор объясняет, что блокирующее общение может привести к снижению доступности системы и делает ее менее устойчивой.
  • Асинхронное программирование позволяет отправлять запросы в разные сервисы и не ждать ответа, но в основе этого лежит использование пулов потоков.

Использование Kafka для межпроцессного взаимодействия

16:47
  • В видео обсуждается использование Kafka для межпроцессного взаимодействия, где Kafka выступает в роли посредника между различными процессами.
  • Kafka обеспечивает гарантии доставки сообщений и позволяет клиентам самостоятельно решать, когда читать сообщения.

Опи и межпроцессное взаимодействие

24:46
  • В видео объясняется, что такое опи и как оно используется в межпроцессном взаимодействии.
  • Опи определяет набор операций, которые могут выполнять клиенты, и позволяет менять реализацию без изменения интерфейса.
  • В примере с микросервисами, опи используется для общения между сервисами с помощью REST-запросов.

Рест-апи и его идеология

35:20
  • Видео обсуждает рест-апи, его идеологию и использование.
  • Рест-апи был создан для упрощения работы с API и его использование стало популярным.
  • Однако, многие разработчики используют рест-апи неправильно, создавая свои собственные методы и параметры.

Параметры и статусы

36:47
  • Видео объясняет, что параметры и статусы являются частью рест-апи.
  • Статусы могут быть использованы для выражения ошибок и их группировка по категориям.

Передача знаний клиентам

39:03
  • Видео обсуждает, как передать знания о рест-апи клиентам.
  • Один из вариантов - включить документацию в приложение, которое скачивают клиенты.
  • Другой вариант - создать модуль на клиенте, который будет выполнять запросы и парсить ответы.

Микросервисы и дублирование кода

43:51
  • Видео обсуждает проблему дублирования кода при использовании рест-апи в микросервисной архитектуре.
  • Предлагается создать общий сервис, который будет обрабатывать запросы и перенаправлять их к микросервисам.

Обсуждение дублирования кода и интерфейсов

45:00
  • Обсуждение проблемы дублирования кода и необходимости создания библиотек для каждого сервиса.
  • Предложение использовать интерфейсы для упрощения работы с клиентами.

Создание декларативного описания опи

56:30
  • Создание отдельного модуля с декларативным описанием опи для каждого сервиса.
  • Использование аннотаций для объявления методов и параметров.

Создание интерфейсов на основе опи

58:46
  • Создание интерфейсов на основе декларативного описания опи.
  • Использование аннотации "feyn client" для указания корневого пути.

Обсуждение микросервисной архитектуры

1:01:21
  • В видео обсуждается микросервисная архитектура и ее особенности, такие как использование разных репозиториев для разных микросервисов и использование спринг-фэйн для генерации клиентских классов.
  • Обсуждается возможность использования одного репозитория для всех микросервисов, но это может привести к дублированию кода и увеличению времени сборки.

Взаимодействие микросервисов через кафку

1:11:39
  • В видео объясняется, что микросервисы общаются через кафку, и каталог сервис отправляет сообщения в кафку через определенный канал.
  • Обсуждается, что в данном случае каталог сервис является клиентом, а не сервером, поскольку он отправляет сообщения, а не получает их.
  • В апи каталога сервиса будет включен сам топик, который он отправляет, и его структура.

Коммуникации в системах

1:16:50
  • В системах используются коммуникации один-ко-многим, когда все сервисы могут получать сообщения о событиях.
  • Пример: обновление вин в час.

Примеры ивентов и команд

1:20:08
  • Ивенты - это события, которые произошли в системе, например, обновление вин.
  • Команды - это запросы, которые могут быть отправлены только на определенный сервис, например, отправка нотификации.

Создание опи модулей

1:23:57
  • Для объявления рест-апи нужно знать глаголы, типы параметров, типы сущностей и структур данных.
  • Для месседжа нужно знать идентификатор канала или топика, а также структуру данных.

Роутинг сообщений и гарантии доставки

1:31:22
  • Обсуждение использования хедеров для обработки сообщений на стороне сервера.
  • Упоминается, что хедеры могут обрабатываться на клиенте, но это может привести к потере сообщений и проблемам с гарантией доставки.

Kafka и неску

1:35:15
  • Обсуждение использования Kafka для обработки сообщений и его преимуществ перед другими системами.
  • Упоминается возможность разделения топиков на партии для обеспечения надежности и юзабилити.

Ландвич агностик и реализация сервисов

1:37:54
  • Обсуждение подхода к разработке сервисов, который позволяет использовать разные языки программирования и не требует строгой привязки к одному языку.
  • Упоминается пример использования этого подхода в разработке сервиса для обработки событий.

Репозитории и перенос кода

1:42:12
  • Обсуждение проблемы с репозиториями, которые могут быть устаревшими или содержать ошибки.
  • Предлагается снести и переделать такие репозитории, если они не нужны.