Вопрос о разработке приложений Azure Service Fabric

У меня есть требование ниже в дизайне архитектуры микросервисов. Мой проект относится к типу служб без отслеживания состояния и с отслеживанием состояния Azure Service Fabric в Dot Net Core. введите здесь описание изображения

Всего в этом проекте 3 службы без отслеживания состояния и 3 службы с отслеживанием состояния.

Для каждой службы с отслеживанием состояния мы создали одну службу без отслеживания состояния в качестве шлюза к ней.

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

Для связи мы будем использовать прокси-сервер службы (т.е. реализованный интерфейс IService).

Я могу легко вызывать методы stateful1 из stateless1, но у меня есть требование, например, мне нужны данные из stateful1, которые зависят от stateful 2 и stateful 3.

У меня есть бизнес-логика между каждой службой с отслеживанием состояния,

В настоящее время я создаю прокси-сервер службы на statful1 и собираю все данные с сохранением состояния 2 и 3, и после вычисления все данные будут отправлены в без сохранения состояния.

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

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

Я взял простой пример из 3 без сохранения состояния и 3 с отслеживанием состояния, но на самом деле мой проект состоит из более чем 50+ служб, каждая из которых имеет шлюз и службу с отслеживанием состояния. Между каждым сервисом с отслеживанием состояния мне нужно писать больше дел.

Пожалуйста, предложите мне лучший подход для выполнения этого требования.


person SRINIVASREDDY VELPULA    schedule 20.02.2019    source источник
comment
Но почему ?????   -  person Erik Funkenbusch    schedule 20.02.2019
comment
Я тебя не понял?   -  person SRINIVASREDDY VELPULA    schedule 20.02.2019
comment
Это касается нас обоих   -  person Erik Funkenbusch    schedule 20.02.2019
comment
Можете ли вы описать, зачем вам нужен шлюз? Что движет этим требованием? Есть ли прямые звонки на stateful2 и stateful3? Я имею в виду, что есть случаи, когда нам нужно возвращать данные напрямую из stateful2 или stateful3? Или этими услугами пользуется только stateful1?   -  person Oleg Karasik    schedule 21.02.2019


Ответы (1)


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

Архитектура микросервисов кажется мне «большим молотком», который нужно вытащить из набора инструментов, если только проблема, которую вы пытаетесь решить с помощью системы, которую вы создаете, не может быть надлежащим образом решена никаким другим способом.

Когда я слышу, как вы говорите о более чем 50 сервисах, у каждой из которых есть аналог, то есть более 100 сервисов, у меня первое подозрение: может ли эта ваша архитектура быть чрезмерно сложной? Но опять же, как я уже отмечал, отсутствует много контекста, поэтому мне сложно дать такую ​​оценку.

Возможно, вам следует подумать, может ли вам быть выгодно объединить службы 1, 2 и 3 с отслеживанием состояния, как вы их называете?

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

Недавно я был в подобной ситуации, когда 2 микросервиса (которые, по моему мнению, должны были быть 1) имели дело с тесно связанными данными, один был кейс-сервисом, другой был сервисом проверки данных клиентов, бизнес запросил экспорт данных в csv -файл, в котором каждая строка в желаемом выходном CSV-файле содержала комбинацию данных из дела и фоновой проверки клиента. Единственный способ добиться этого - перебрать кейсы и для каждого случая позвонить в микросервис проверки данных клиента, который, конечно, ужасно масштабировался. 1000 случаев означают 1000 http-звонков. Если бы в одной базе данных SQL было 2 таблицы, вы легко можете себе представить, как просто это можно было бы решить с помощью одного запроса на соединение.

Иногда лучше меньше, да лучше.

person Jonas Tuemand Møller    schedule 20.02.2019