Детализация актеров в модели актеров

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

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

Стоит ли использовать актеров для этой и других небольших задач?


person Dante    schedule 09.06.2016    source источник
comment
Связанный с этим вопрос (извините, я понимаю, что опаздываю на вечеринку) касается того, должна ли степень детализации быть единообразной или нет. С практической точки зрения я ожидаю, что в большинстве систем действующие лица представлены в различных масштабах.   -  person Tim Barrass    schedule 16.01.2018


Ответы (1)


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

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

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

Эти смелые одноразовые актеры — характерные актеры.

Актеры персонажей могут быть временными или постоянными актерами, но обычно они предназначены для выполнения только одного определенного типа рискованной операции. Часто актеры-персонажи могут повторно использоваться в приложении, принадлежащем разным типам родителей. Например, у вас может быть служебный персонаж, который обрабатывает внешние сетевые запросы, а затем используется родительскими акторами в вашем приложении для своих собственных целей.

Случаи использования

Шаблон Character Actor широко применим. Используйте его в любое время, когда вам нужно сделать что-то рискованное, например, сетевые вызовы, файловый ввод-вывод, синтаксический анализ искаженного содержимого и т. д. Любая из этих операций является хорошим кандидатом на роль характерного актера.

Персонажные акторы наиболее эффективны, когда они используются для обеспечения защиты и изоляции сбоев для какого-либо другого важного типа актера, обычно содержащего какое-то важное состояние.

Преимущества

Есть три ключевых преимущества использования шаблона Character Actor:

  • Защищает от сбоев и рискованных операций участников с состоянием и критически важных участников;
  • Упрощает четкое введение семантики повтора/отсрочки/отмены, характерной для каждого типа рискованной операции: поскольку у вас есть характерный актер, специфичный для каждой рискованной задачи, у вас есть четко определенное место для обработки повторных попыток и связанных с ними операций. Они специфичны для задачи, для которой был создан Актер Персонажа, и их не нужно передавать остальным вашим актерам, а это означает, что шаблон…
  • Сокращает объем кода, позволяя SupervisionStrategy и жизненному циклу актора выполнять большую часть тяжелой работы, вам не нужен всевозможный код обработки исключений в ваших родительских акторах. Просто позволь ему разбиться, детка.
person Patrick Allwood    schedule 10.06.2016
comment
Рад, что это помогло. На самом деле, спасибо парням из Petabridge, в этом блоге много отличного контента. - person Patrick Allwood; 10.06.2016