Как запросить связанные данные из двух микро сервисов

Поскольку уже существует существующий репозиторий, запуск

git config --bool core.bare true

в удаленном репозитории должен быть достаточным

Из документации core.bare

Если true ( bare = true), предполагается, что репозиторий будет голым без привязки рабочего каталога. Если это так, количество команд, требующих рабочего каталога, будет отключено, например git-add или git-merge (но вы сможете нажать на него).

Этот параметр автоматически догадывается git-clone или git-init при создании репозитория. По умолчанию репозиторий, который заканчивается на «/.git», считается не голым (bare = false), а все остальные репозитории считаются голыми (bare = true).

1
задан Maksim 22 March 2019 в 15:23
поделиться

1 ответ

Это не хороший пример того, где рисовать линии при создании микросервисов, но он говорит об аспекте, который мы видим снова и снова с микросервисами. У вас есть данные по двум службам, и вам нужно показать их в пользовательском интерфейсе. Ну, сначала вам нужно место для агрегирования данных, и мы обычно делаем это на уровне BFF. Это еще один сервис, с которым пользовательский интерфейс общается напрямую и получает данные (нецелесообразно делать два (или более) вызовов из пользовательского интерфейса для включения одного представления). Для агрегирования, как вы сказали, он выполняет вызов get для одного сервиса, получает набор данных, и на основе этого ответа сервис вызывает два потока данных. (Это то, как мы обычно решаем эту проблему, когда отдельные сервисы, имеющие два SLA, отвечают с оговоренным временем)

Что касается фильтров, я могу не согласиться с тем, что плохая идея запрашивать данные у serviceA и использовать ответ чтобы получить больше данных от serviceB. Это может быть медленно, согласовано, но это не будет плохо (поскольку именно так вы бы поступили, если бы у вас не было силы объединений). Теперь вам нужно проверить, чувствуете ли вы это медленно или действительно медленно. Я видел, что такие звонки у меня хорошо работают в некоторых случаях. С точки зрения моего ответа нет значительных задержек в пользовательском интерфейсе. Но да, могут быть случаи, когда у вас может быть много данных для работы, или что-то, что может затруднить кэширование сервисов, или просто у вас может быть задействовано более двух сервисов, или просто слишком много данных и пути. слишком много полей для фильтрации. В таких случаях мы обычно добавляем еще один промежуточный слой, который помогает нам объединить все данные, а также позволяет осуществлять быстрый и эффективный поиск, что-то вроде упругого поиска ./

Таким образом, у вас есть способы справиться с такого рода сценарии. Однако первое, что вам нужно подумать, это то, как вы разделили свой продукт на услуги. Если вы поняли это правильно, вы будете сводить к минимуму такие сценарии. Следуйте этому принципу агрегации и кэширования, а затем, возможно, поисковым системам.

0
ответ дан Anunay 22 March 2019 в 15:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: