Ответ 1
В сущности, корневой агрегат представляет собой любой объект, который может потребоваться извлечь как корень графа объекта. Просто потому, что конкретный объект является агрегированным корнем и имеет репозиторий, не означает, что другой объект, который является одним из его свойств, также не может быть агрегированным корнем - с ним собственный репозиторий.
Хорошим примером является система выставления счетов клиентов. Клиент, безусловно, будет совокупным корнем и будет содержать коллекцию счетов-фактур... Но для другой прикладной функции сам счет-фактура может быть агрегатным корнем с составными объектами LineItem в этом графе объектов.
Итак, в вашем примере нет ничего плохого в создании другого репозитория для клиентов, если вам нужно в случае необходимости извлекать их независимо от кластеров.
ПРИМЕЧАНИЕ. См. также комментарии к комментариям. Хотя корневые объекты могут (и часто будут) ссылаться на другие корневые сущности, они недовольны (и это может быть слишком мягким поворотом фразы), чтобы позволить репозиторию для любого корневого объекта содержать функции, которые управляют (создают, обновляются, или удаляет) любой корневой объект в своем графе объектов, на который он ссылается. Любые такие референтные корневые объекты должны иметь свои собственные отдельные репозитории, а функции управления ими (создавать, обновлять и/или удалять операции) должны находиться в их репозитории, так что он находится только в одном месте.