Не знаете, как реализовать некоторые функции NServiceBus в Orleans/Service Fabric.

Я знаю, что это две разные системы для немного разных целей, но в какой-то степени в некоторых ситуациях они могут служить одним и тем же целям, и мне интересно, насколько легко было бы перенести некоторые из наших сервисов с NServiceBus (NSB) на Orleans или MS. Сервисная ткань. Я потратил несколько часов на изучение на высоком уровне того, что такое Orleans и MS Service Fabric, но некоторые вопросы остались без ответа. Могу ли я перечислить некоторые функции NSB, которые я хочу сохранить при миграции, и я надеюсь, что вы могли бы сказать, поддерживают ли Orleans или Service Fabric что-то подобное:

  1. В NSB мы можем установить максимальное количество потоков, в которых должна работать служба, чтобы мы могли отдавать приоритет службам с низкой задержкой по сравнению с менее важными службами с высокой задержкой. Могу ли я настроить максимальное количество экземпляров на одном или нескольких серверах приложений, под которыми должно работать зерно Orlean? Я говорю о зернах с разными идентификаторами

  2. Некоторые из наших сервисов зависят от вызовов сторонних сервисов, которые могут быть временно недоступны. В случае, если выдается исключение, и сообщение выполняется через настроенное количество повторных попыток. Если все дальнейшие попытки обработать сообщение завершены (сервис по-прежнему недоступен), сообщение помещается в очередь ошибок, где мы можем его увидеть и повторно обработать в любое время, когда сторонний сервис вернется в нужное русло. Я знаю, что мы можем внедрить дополнительные инструменты поверх Orleans, чтобы иметь аналогичную систему, но предлагают ли Orleans или MS Service Fabric что-то из коробки с точки зрения повторных попыток сообщений и хранения неудачных сообщений/вызовов в специальном месте или в особом состоянии?

  3. В редких случаях, когда наша система перегружена входящими сообщениями, инициированными клиентами, сообщения застревают в очереди входящих сообщений, и система берет на себя все, что может, для обработки, а все остальные сообщения ожидают своей очереди и обрабатываются в соответствии с принципом «первым пришел – принцип «первым обслужен». Я предполагаю, что Орлеан не может удовлетворить это требование, так как это больше похоже на чистую концепцию организации очередей, но на всякий случай, может быть, у кого-то будет идея о том, как ее можно перенести в Орлеан, например, интегрировать в какую-то систему очередей.


person YMC    schedule 11.10.2017    source источник
comment
Хочешь позвонить мне? У меня есть опыт работы с Service Fabric и Orleans, а также с NServiceBus, потому что я работаю в конкретном программном обеспечении. Если да, напишите мне по электронной почте Даниэлю Доту Марбаху в конкретной сети.   -  person Daniel Marbach    schedule 12.10.2017


Ответы (2)


Orleans или Service Fabric Надежные участники. Это аналогичные решения для (виртуальных) участников, но с другими компромиссами. https://richorama.github.io/2016/07/08/orleans-vs-service-fabric/

Orleans и Service Fabric Служба без сохранения состояния: вы можете запустить Orleans поверх SF, вы получаете как орлеанскую версию виртуальных субъектов, так и эластичность SF.

NServiceBus против Orleans (примечание: у меня есть только очень базовые знания о NServiceBus): NServiceBus исходит из мира без сохранения состояния, где вы сохраняете сообщения для обеспечения надежности, Orleans исходит из мира с состоянием, где вы сохраняете состояние акторов для надежности. Да, есть Sagas в NServiceBus и Streams в Orleans, поэтому вы можете реализовать что угодно где угодно, хотя это разные подходы, которые (должны) влиять на ваш архитектурный дизайн.

Ответ 1: Орлеанские зёрна (актеры) не услуги, тысячи, миллионы, миллиарды зёрен оказывают вам услугу. Таким образом, вы не можете точно настроить расписание между зернами. Орлеанское зерно не является обработчиком всех сообщений типа Т, обычно у вас большое количество зерен, зернышки больше похожи на объект, чем на класс.

Ответ 2, 3: Вы можете реализовать эти очереди входящих и исходящих сообщений с потоками Orleans (это в основном хорошая концепция), хотя Orleans не дает готовых решений для ваших очередей ошибок, повторной обработки и т. д. Но орлеанский поток - это не простая очередь, обычно у вас есть большое количество потоков, потоки - это изменяемый во время выполнения коммуникационный граф гранул, поскольку количество гранул велико, а также количество потоков. Поскольку Orleans предоставляет вам абстракцию async/await вместо того, чтобы иметь дело с низкоуровневым двунаправленным обменом сообщениями между зернами, потоки являются абстракцией для нескольких односторонних сообщений.

person lmagyar    schedule 15.10.2017

Конечные точки NServiceBus можно идеально разместить внутри Service Fabric. Если вы выберете хостинг без сохранения состояния, на самом деле ничего не изменится. См. образец https://docs.particular.net/nservicebus/hosting/service-fabric-hosting/, где показано, как настроить размещение в Service Fabric.

person Yves Goeleven    schedule 12.10.2017