Страница 4 из 6

Re: Actor Framework

Добавлено: 29 авг 2018, 03:26
taras_33
Дорогу осилит идущий © Скачайте архив вот по этой ссылке Там представлен простейший проект с очень подробным описанием по шагам как и что делать. Я думаю многое прояснится.

Re: Actor Framework

Добавлено: 29 авг 2018, 13:50
Kosist
Для успешной работы с акторами нужно хорошо понимать и знать ООП, т.к. нужно приложение логически разбивать на классы - и правильно выстраивать цепочку их взаимодействия. Зная это, и разобрав несколько примеров проектов с акторами, Вы уже сможете самостоятельно применять их - но опять же, нужно будет какое-то время, чтобы найти свой стиль, и свои шаблоны для приложения с акторами.
А еще лучше, это пройти 3-х дневный Actor Oriented Design курс от NI - но проблема в том, что он проводится довольно редко...

Re: Actor Framework

Добавлено: 29 авг 2018, 15:11
jane_wild
Вот решила и я спросить об ООП, интересная тема, для общего развития так сказать. Я не совсем понимаю когда нужно делать override, а когда в этом нет необходимости. Что бы было понятней, сделала небольшой пример - во вложении. Имеется главный класс Main с одним методом Sum. Два дочерних класса Class A и Class B используют этот метод. Но используют его по разному. Class A override sum, а Class B использует напрямую родительский метод. На выходе результат один и тот же. Отсюда вопрос. Если нет необходимости менять функционал метода, нужно ли перезаписывать в дочернем классе родительский метод или его нужно использовать напрямую, как это делает Class B? Спасибо

Re: Actor Framework

Добавлено: 29 авг 2018, 15:33
Artem.spb
jane_wild писал(а): Если нет необходимости менять функционал метода, нужно ли перезаписывать в дочернем классе родительский метод или его нужно использовать напрямую, как это делает Class B?
Перезаписывать точно не нужно, иначе теряется половина смысла ООП.
И странно называть "Sum" функцию, которая делает (a+b)+31

Re: Actor Framework

Добавлено: 29 авг 2018, 22:17
IvanLis
Возможно ссылка уже выкладывалась, но вот что нашел по данному направлению:
Actor Framework Basics
включает в себя 5 коротеньких уроков.
Cat писал(а):привет из 18года, решил разобраться с actor"ами и понял тут невзначай
Нужно себе на отпуск 19 запланировать :wink:
В этом году разбирался с другими вопросами.

Re: Actor Framework

Добавлено: 01 сен 2018, 20:18
Cat
Спасибо, Вам!
Рад что поднял эту тему, оказывается многих интересует, пойду курить маны)))

Re: Actor Framework

Добавлено: 07 сен 2018, 19:59
Vitekkz88
Нашел время и разобрался с Actor Framework. Перечитал тему и для меня не хватило теоретического материала в целом по этому фреймворку. Внесу лепту в развитие темы, но пока без конкретных примеров. Те примеры, которые есть в теме и по приведенным ссылкам - подойдут. Представленный материал был получен в рамках обзора выступлений разработчиков из других отраслей разработки ПО(на примере Akka-фреймворка, который реализует модель акторов). Тем не менее базовая модель программирования совпадает, отличается функциональная составляющая.
Часть 1. Введение
Actor Framework – это модель программирования, в основе которой лежит асинхронный обмен сообщениями между примитивами параллельного исполнения– акторами. Актором может быть объект/поток/процесс, который инкапсулирует данные и предоставляет операции над данными.
Поскольку каждый актор работает в отдельном потоке, то они между собой не делят память. Это позволяет избежать глобального изменяемого состояния(Global mutable state), которое является причиной многих багов в программе. Иными словами модель акторов на архитектурном уровне запрещает изменять глобальный стейт другого актора, т.к. они находятся в разных потоках(thread).
Каждый актор содержит некоторый почтовый ящик, в который прилетают сообщения. При получении сообщения актор может:
а) создать новый актор
б) послать сообщение другому актору
в) назначить поведение для обработки последующего сообщения
Когда один актор создает другого актора, первый становится родителем(parent-ом).
Модель акторов.png
Важно: акторы функционируют параллельно и ассинхронно обмениваются сообщениями.
Часть 2. Почтовые ящики, диспетчеры, маршрутизация, супервизор
Почтовый ящик – это неотъемлемый механизм взаимодействия между акторами, который позволяет принимать и извлекать сообщения. В классической модели акторов адресатом сообщения является сам актор-получатель. Т.е. для того, чтобы актор A мог отослать сообщение актору B, у актора A должна быть ссылка на актор B. Нет ссылки на актора-получателя — нет и возможности отослать ему сообщение. Если нужно выполнить рассылку 1:N, то у отправителя должны быть ссылки на всех получателей. Почтовые ящики бывают ограниченными и неограниченными, с приоритетами и без.
Диспетчеры
На каждую систему акторов приходится по одному диспетчеру, который отвечает за постановку сообщений в очередь, ведущую в почтовый ящик актора. Так же диспетчер даёт команду ящику изъять из очереди сообщение и передать его актору на обработку.
Маршрутизация
Маршрутизация позволяет за определенным именем актора скрыть целый пул акторов. Сообщения могут быть отправлены через маршрутизатор для более высокой эффективности их доставки. Маршрутизатор может использоваться внутри или снаружи субъекта и вы можете управлять маршрутизаторами самостоятельно или использовать автономный субъект маршрутизатора с возможностями конфигурации.
Супервизор
Супервизор – объект или процесс, который принимает решения при сбое. Каждый актор-родитель является супервизором своих детей. Решения при сбое:
1. Resume
2. Restart
3. Stop
4. Escalate
Каждое из приведенных понятий включает большой объем информации, который можно погуглить или почитать в стандартах. Беглый осмотр палитры акторов в LabVIEW мне показался скромным: всего 10 .vi, в то время как Akka-фреймворк даёт пользователю широкий спектр по управлению и действиями. Разберу пару тройку практических примеров(более крупных) для понимания достаточности представленной реализации.
Заключение
Модель акторов актуальна для задач типа Concurrency. Concurrency – это способность компонентов системы выполняться параллельно. Где такое встречается? Например, в приложениях с высоким количеством микросервисов(в частности компания Яндекс использует модель акторов в своих приложениях используя Akka Framework). В промышленности – это работа с большим количеством датчиков и оборудования параллельно и ассинхронно. Поскольку модель акторов имеет высокий порог вхождения, а разработка занимает больше времени, то применять этот framework следует с прицелом на будущее(повторяемость проектов и задач). Важным преимуществом модели акторов является повышенная отказоустойчивость программного обеспечения.

Re: Actor Framework

Добавлено: 16 окт 2018, 12:37
Juri
А еще лучше, это пройти 3-х дневный Actor Oriented Design курс от NI - но проблема в том, что он проводится довольно редко...
Этот http://sine.ni.com/tacs/app/overview/p/ ... 8/id/3459/ за $ 2,475?

Re: Actor Framework

Добавлено: 16 окт 2018, 13:29
Artem.spb
Usss писал(а):
А еще лучше, это пройти 3-х дневный Actor Oriented Design курс от NI - но проблема в том, что он проводится довольно редко...
Этот http://sine.ni.com/tacs/app/overview/p/ ... 8/id/3459/ за $ 2,475?
в Берлине скоро будет в два раза дешевле :)
Снимок.PNG

Re: Actor Framework

Добавлено: 16 окт 2018, 13:44
Juri
Именно эту страницу я и отрыл, только вместо € 995 у меня стоит $ 2,475

Re: Actor Framework

Добавлено: 16 окт 2018, 13:49
Artem.spb
Наверно от места зависит. У меня ТОР сейчас через Германию, туда и перекидывает.

Re: Actor Framework

Добавлено: 17 окт 2018, 22:28
Cat
Коллеги у меня такой вопрос, делаю простой актор и вот от родителя к ребенку данные передавать понял, а вот как от ребенка родителю нет. Пример на старой версии фреймворка нашел. Счас пытаюсь сделать на версии 2016 там немного все по другому. Коллеги можете пояснить?

Re: Actor Framework

Добавлено: 17 окт 2018, 23:49
Kosist
Cat писал(а):Коллеги у меня такой вопрос, делаю простой актор и вот от родителя к ребенку данные передавать понял, а вот как от ребенка родителю нет. Пример на старой версии фреймворка нашел. Счас пытаюсь сделать на версии 2016 там немного все по другому. Коллеги можете пояснить?
При "общении" акторов, их иерархия наследования роли не играет (т.е. все равно, кто ребенок, а кто родитель). Важно кто есть caller (тот, кто запускает актора), а кто есть callee (т.е. актор, которого запустили).
В простом случае, если из одного актора вызывать другого, то можно использовать функцию Launch Nested Actor.vi. Тогда актор, который запускает другого актора, может сохранить внутри себя ссылку на него (enqueuer), и соответственно, может посылать ему сообщения. А вызываемый актор, в свою очередь, может общаться с caller-ом при помощи ссылки, которую можно достать функцией Read Caller Enqueuer.
Если посмотрите встроенные примеры в :labview: , там все это дело есть.
Скрин из темплейт-проекта (File -> Create Project... -> All -> Actor Framework).
Call nested actor.png

Re: Actor Framework

Добавлено: 18 окт 2018, 04:41
taras_33
Kosist прав. Кто чей родитель без разницы. Попробую объяснить "человеческим" языком.
Что нужно для общения двух людей? Правильно адрес. А нужно знать кто чей родитель? Можно не отвечать - ответ очевиден. Посмотрите на картинку.
Модель.png

Скажем работадатель (главный контроллер) посылает людей (nested actors) в командировку для выполнения каких то задач. Кто знает адрес этих людей? Как кто? - работадатель! Кто может прервать командировку? Он же. Командировочный может послать "далеко и без хлеба" работадателя, уйдя в запой и прервать возложенные на него задачи? Да легко. Вот собственно по этой аналогии и можно рассматривать эту модель.
Например работадатель посылая в командировку, может дать командировочному кучу инструкций (параметров), в том числе и адрес другого командировочного, что бы тот при необходимости мог послать ему сообщение напрямую, минуя главного.... Надеюсь чуточку прояснил...
Жаль времени нет, эту тему можно разобрать по винтикам, здесь нет ничего сложного.

Re: Actor Framework

Добавлено: 18 окт 2018, 05:05
taras_33
Вот значит приперся командировочный в гостинницу, обустроился (инициализировался) и вспомнил что главный просил отчитаться о прибытии. Нужно послать сообщение.
Приступаю к работе.png