Использование Azure Service Fabric

Об Service Fabric только что было объявлено на конференции по сборке. Я читал скудную документацию об этом, и у меня есть вопрос.

Я оцениваю Service Fabric для размещения CRUD, таких как микросервисы, которые на данный момент встроены в ASP.NET WebApi.

Ориентирован ли Service Fabric на размещение небольших функциональных частей, которые получают данные, обрабатывают их и возвращают результат, а не на размещение приложений типа CRUD WebApi?


person Dante    schedule 01.05.2015    source источник


Ответы (3)


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

Как следует из названия, любое состояние, поддерживаемое экземпляром службы без сохранения состояния, будет потеряно, если узел выйдет из строя. Новый свежий экземпляр будет просто запущен в другом месте кластера.

Службы с отслеживанием состояния предлагают возможность сохранять состояние, не полагаясь на внешнее хранилище. Любые данные, хранящиеся в Reliable Collection будет автоматически реплицироваться на несколько узлов в кластере, что гарантирует устойчивость состояния к сбоям.

Распространенным шаблоном является использование службы без отслеживания состояния в качестве клиентского шлюза к приложению, а затем эта служба направляет трафик к секционированным службам с отслеживанием состояния приложения. Это скрывает работу по разрешению разделов от клиентов, позволяя им направлять все запросы к одной логической конечной точке.

Взгляните на пример WordCount для примера того, как это работает. Служба без сохранения состояния WordCount.WebService выступает в качестве внешнего интерфейса для приложения. Он просто разрешает раздел на основе входящего запроса, а затем отправляет его. Служба с отслеживанием состояния WordCount.Service (разделенная на основе первой буквы слова) немедленно помещает эти входящие запросы в ReliableQueue, а затем обрабатывает их в фоновом режиме, сохраняя результаты в ReliableDictionary.

Дополнительные сведения см. в обзоре надежных служб< /а>.

Примечание. На данный момент лучший способ предоставить конечные точки WebAPI клиентам — это самостоятельно разместить сервер OWIN в службе без сохранения состояния. Скоро также будут поддерживаться проекты ASP.NET 5.

person Sean McKenna    schedule 01.05.2015
comment
Можем ли мы где-нибудь зарегистрироваться, чтобы попробовать это на реальном оборудовании Azure? - person Firoso; 07.05.2015
comment
Пока нет, но следите за обновлениями. Позже в этом году мы сделаем создание кластеров в Azure доступным для предварительного просмотра. - person Sean McKenna; 07.05.2015
comment
@SeanMcKenna-MSFT, небольшой вопрос. Как масштабировать веб-приложение. Все примеры запускают один веб-экземпляр с некоторым предопределенным портом. как узнать, где в кластере работает это веб-приложение? - person AlfeG; 13.05.2015
comment
Возможно, было бы лучше задать это как новый вопрос, поскольку он отличается от исходного. - person Sean McKenna; 14.05.2015

Это видео отвечает на мой собственный вопрос: http://channel9.msdn.com/Events/Build/2015/2-704. Таким образом, мы должны использовать Stateless Services для размещения сайтов на основе ASP.NET или API, которые сохраняют данные во внешних хранилищах данных.

person Dante    schedule 01.05.2015
comment
Если вы сохраните внешние хранилища данных из службы без отслеживания состояния ASP.NET в Service Fabric, вы потеряете некоторые из лучших функций Service Fabric. Вместо этого вы можете создать службу с отслеживанием состояния, которая сохраняет данные в надежной коллекции. Это хранит свои данные в памяти и реплицирует их на другие узлы в кластере для устойчивости. Это означает, что все операции чтения данных выполняются в памяти и выполняются очень быстро. Затем ваша служба ASP.NET без сохранения состояния может взаимодействовать со службой с отслеживанием состояния, используя протокол по вашему выбору: например. WebAPI, WCF и т. д. - person Darran; 02.05.2015

Если у вас нет состояния (или оно есть извне), то можно начать с службы без сохранения состояния.

Ответ на исходный вопрос: «оба». По сути, все, что имеет функцию main() (с несколькими более расширенными методами контракта для взаимодействия с Service Fabric), может быть службой в мире Service Fabric.

person Branko Kokanovic    schedule 01.05.2015