Sobes.tech
Middle

Հիմնական ծառայությունը իր սեփական տվյալների բազայով պետք է շփվի՝ 1) ներքին ծառայության հետ, որը ժամանակ առ ժամանակ չի կարողանում կառավարել բեռը, 2) գործընկեր ծառայության հետ, որը պատասխան է տալիս միայն մեկ օր անց REST-ի միջոցով: Որտե՞ղ օգտագործել սինխրոն, ո՞ւր՝ ասինխրոն շփում և ինչ գործիքներ:

sobes.tech AI

Պատասխան AI-ից

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

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

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

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

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

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

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

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