Подход 0: Это, кажется, самое легкое решение, но здесь вы столкнетесь с неким "соединением инфраструктуры". Что это значит? Это означает, что когда Unit.Api выйдет из строя или выйдет из строя, Combat.Api также не будет работать, поскольку это зависит от обслуживания юнитов.
Подход 1: Это своего рода решение "по книге". Вы дублируете данные, но благодаря этому у вас есть независимые сервисы.
Подход 2: Для меня это выглядит как обходной путь:)
Прежде всего, вы должны стремиться к созданию независимых сервисов, если вы собираетесь использовать микросервисную архитектуру. Но в некоторых случаях наличие тесного общения между ними также может быть узким местом и его трудно поддерживать.
До сих пор я сталкивался с разными подходами, точно такими же, о которых вы упоминаете. Прежде чем выбрать лучший, вы должны подумать о риске и сложности, и вам решать, с каким вариантом вы согласитесь, осознавая недостатки.
Более того, я думаю, вам следует еще раз взглянуть на ваша архитектура ... Я не знаю, каково будет использование и назначение Unit.API, но если он используется только Combat.API, может быть, это один микросервис / boundedcontext?