Service Fabric Reliable Services: основы связи и разделения

Открывая для себя SF Reliable Services, я хочу убедиться, что следующие основные утверждения верны.

  1. Стек связи Reliable Services по умолчанию (DefaultStack) и стек связи Reliable Actors (с использованием ServiceProxy/ActorProxy) можно использовать только для связи внутри кластера SF. Клиенты извне должны использовать стеки WebAPI/WCF.

  2. ServicePartitionResolver, CommunicationClientFactory, ServicePartitionClient — это вещи, которые уже реализованы внутри DefaultStack. Мне не нужно об этом беспокоиться, если я использую только DefaultStack.

  3. Некоторая служба Stateful имеет более одного раздела, и я хочу, например, опубликовать элемент для его обработки. SF не несет ответственности за решение о том, какой именно раздел следует использовать при отправке сообщения клиенту. Мне нужно вручную реализовать алгоритм, разрешающий ключ или имя раздела, и использовать его в конструкторе ServiceProxy (для DefaultStack).


person AsValeO    schedule 17.11.2015    source источник


Ответы (1)


Вы правы по всем этим пунктам,

  1. Если вы хотите общаться за пределами Service Fabric, вам нужно использовать что-то вроде OwinCommunicationListener (см. здесь).
  2. Вам нужно будет реализовать их только в том случае, если вы хотите подключить свой собственный коммуникационный стек.
  3. Да, вам нужно определить ключ раздела при создании ServiceProxy.
person charisk    schedule 17.11.2015
comment
Возможно, вы знаете ответ на этот вопрос. Есть ли способ автоматически получить ключ раздела? Я хочу, чтобы мои вызовы этой службы распределялись по разным экземплярам в разных разделах. Я не хочу знать, сколько сервисов существует. - person Jerome Haltom; 01.12.2015
comment
Это действительно зависит от вашей стратегии разделения. Как вы разделяете свои данные и какой компонент умеет создавать ключи разделов? Этот компонент может быть чем угодно: от метода расширения до выделенной службы без сохранения состояния, которая направляет запросы в правильный раздел службы. - person charisk; 02.12.2015
comment
Полагаю, я еще не все обдумал. Мне еще предстоит выяснить, как должны быть связаны разделы различных служб. Прямо сейчас у меня есть StatefulActor, который пытается вызвать StatelessService для постановки в очередь рабочего элемента и его асинхронной обработки. - person Jerome Haltom; 02.12.2015