Ответы пользователя по тегу Сервис-ориентированная архитектура
  • Как работает синхронный вызов в микросервисах?

    vabka
    @vabka
    Токсичный шарпист
    Я хочу уточнить - блокируется микросервис (мс) вообще целиком или все-таки только поток, из которого сделан вызов?

    Блокировка чисто логическая. Благодаря асинхронщине, в большинстве языков никакие потоки блокироваться не будут. Будет только приостановлено выполнение кода в рамках какого-то процесса.

    Я себе представляю работу так: пусть у нас 2 мс, А и В, сделаны на Spring Web или любом другом веб-фреймворке. Каждого мс по одному экземпляру.
    * Пользователь что-то щелкает.
    * запрос уходит в А.
    * в А создается новый поток (или берется из пула - не важно) для обслуживания пришедшего запроса.
    * А вызывает В и ждет от него ответа.
    * при этом блокируется не весь А, а только поток, который обслуживает запрос.

    Условно так, но на практике даже поток не будет блокироваться - только обработка запроса от пользователя (пользователь не получит ответ, пока B не вернёт ответ)

    Стало быть, если другой пользователь тоже что-то щелкнет, то его запрос тоже будет обслуживаться отдельным потоком, и поэтому сам мс А не блокируется, продолжает нормально работать. Так почему тогда в книге написано, что блокируется микросервис?

    В книге так написано, чтобы было различие между асинхронными и синхронными запросами.
    При асинхронных запросах, вызывающий сервис вообще ничего не должен ждать - он получит уведомление о том, что его запрос обработан.
    Ответ написан
    Комментировать
  • Можно ли использовать микросервисы в таком случае?

    vabka
    @vabka
    Токсичный шарпист
    Кажется, вам нужны не микросервисы, а просто небольшой рефакторинг
    Ответ написан
    Комментировать
  • Как правильно добавить взаимодействие с сервисом на Rust через MassTransit?

    vabka
    @vabka Куратор тега ASP.NET
    Токсичный шарпист
    Вроде пишут, что формат сообщений предопределён:
    https://stackoverflow.com/questions/49558358/masst...

    Раз так, то берёшь serde, amqprs и пишешь
    Ответ написан
  • Как подбирать недообработанные длительные задания?

    vabka
    @vabka
    Токсичный шарпист
    Варианта два:
    1. Не завершать процесс, пока эти задачи не завершены. Новые задачу в работу не брать.
    2. Предусмотреть, что задача может быть прервана на середине. В случае непредвиденного завершения - помечать как-нибудь и запускать с той точки, на которой остановились.
    Ещё можно периодически проверять зависшие задачи и перезапускать их.
    Ответ написан
    Комментировать
  • Не лучше ли базы микросервисов хранить отдельно от контейнеров?

    vabka
    @vabka
    Токсичный шарпист
    Базы данных обычно не рекомендуется хранить в контейнерах, если вы точно не знаете, зачем вам это нужно, и что вы делаете.
    Так что да, мысли у вас правильные.
    По производительности - зависит примерно от всего, но если вы решили делать микросервисы, то эти задержки не будут для вас столь значительны.
    Ответ написан
    Комментировать
  • Как правильно интегрировать несколько систем в компании?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Все варианты по своему допустимы и "правильного" пути тут нет.
    1. Проблема может возникнуть, если БД системы изменится или понадобится какая-нибудь дополнительная валидация
    2. Вроде ок, но нужно добавлять и поддерживать методы в каждой API-шке, и следить за совместимостью
    3. Дополнительное звено в инфраструктуре. Придётся потратиться на развёртывание и поддержку, ну и заплатить задержками.

    Я бы выбрал вариант с API тк он кажется самым адекватным в соотношении цена/качество.
    Ответ написан
    Комментировать