Sobes.tech
Middle

Ο κύριος υπηρεσία με τη δική του βάση δεδομένων πρέπει να επικοινωνεί με: 1) μια εσωτερική υπηρεσία που περιοδικά δεν μπορεί να διαχειριστεί το φόρτο, 2) μια υπηρεσία συνεργάτη που απαντά μόνο μετά από μια ημέρα μέσω REST. Πού να χρησιμοποιήσετε συγχρονισμένη, πού ασύγχρονη αλληλεπίδραση και ποια εργαλεία;

sobes.tech AI

Απάντηση από AI

Для взаимодействия с двумя сервисами стоит использовать разные подходы:

  1. Внутренний сервис, который периодически не справляется с нагрузкой:

    • Здесь лучше использовать асинхронное взаимодействие через очередь сообщений (например, RabbitMQ, Kafka).
    • Это позволит разгрузить сервис, обрабатывать запросы по мере возможности, избежать потери данных.
  2. Сервис партнера, который отвечает через сутки по REST:

    • Здесь также подходит асинхронное взаимодействие, так как ожидание ответа в течение суток в синхронном режиме нецелесообразно.
    • Можно реализовать механизм отправки запроса и получения ответа через callback, webhook или периодический опрос статуса.

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

Инструменты:

  • Для асинхронного взаимодействия — брокеры сообщений (RabbitMQ, Kafka), системы очередей.
  • Для REST с долгим ответом — webhook, polling, или хранение состояния запроса в базе с последующей обработкой.

Таким образом, оба взаимодействия лучше делать асинхронными, но с разными механизмами и ожиданиями.