Actor Framework

Общие принципы, проектирование, модуляризация, темплейты и шаблоны

Re: Actor Framework

Postby Cat on 29 Aug 2018, 01:15

привет из 18года, решил разобраться с actor"ами и понял тут невзначай, что я ничего не понимаю в программировании, хотя уже лет 10 в labview и были довольно крупные проекты. прям в грусть тоску ушел
Чеширский Кот - совсем не тот, что чешет языком.
User avatar
Cat
adviser
adviser
 
Posts: 201
Joined: 22 Jul 2010, 09:53
LabVIEW Version: 12
Karma: 8

Re: Actor Framework

Postby taras_33 on 29 Aug 2018, 03:26

Дорогу осилит идущий © Скачайте архив вот по этой ссылке Там представлен простейший проект с очень подробным описанием по шагам как и что делать. Я думаю многое прояснится.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
User avatar
taras_33
developer
developer
 
Posts: 297
Joined: 31 Oct 2009, 18:25
Location: Minsk -> Miami
Medals: 1
Activity (1)
LabVIEW Version: 2016
Karma: 131
CLD VIP

Re: Actor Framework

Postby Kosist on 29 Aug 2018, 13:50

Для успешной работы с акторами нужно хорошо понимать и знать ООП, т.к. нужно приложение логически разбивать на классы - и правильно выстраивать цепочку их взаимодействия. Зная это, и разобрав несколько примеров проектов с акторами, Вы уже сможете самостоятельно применять их - но опять же, нужно будет какое-то время, чтобы найти свой стиль, и свои шаблоны для приложения с акторами.
А еще лучше, это пройти 3-х дневный Actor Oriented Design курс от NI - но проблема в том, что он проводится довольно редко...
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 988
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 279
CLAD I/O VIP students

Re: Actor Framework

Postby jane_wild on 29 Aug 2018, 15:11

Вот решила и я спросить об ООП, интересная тема, для общего развития так сказать. Я не совсем понимаю когда нужно делать override, а когда в этом нет необходимости. Что бы было понятней, сделала небольшой пример - во вложении. Имеется главный класс Main с одним методом Sum. Два дочерних класса Class A и Class B используют этот метод. Но используют его по разному. Class A override sum, а Class B использует напрямую родительский метод. На выходе результат один и тот же. Отсюда вопрос. Если нет необходимости менять функционал метода, нужно ли перезаписывать в дочернем классе родительский метод или его нужно использовать напрямую, как это делает Class B? Спасибо
Attachments
OOP_Question.zip
(54.58 KiB) Downloaded 43 times
User avatar
jane_wild
advanced
advanced
 
Posts: 155
Joined: 30 Jun 2016, 02:11
LabVIEW Version: 2016
Karma: 5

Re: Actor Framework

Postby Artem.spb on 29 Aug 2018, 15:33

jane_wild wrote: Если нет необходимости менять функционал метода, нужно ли перезаписывать в дочернем классе родительский метод или его нужно использовать напрямую, как это делает Class B?

Перезаписывать точно не нужно, иначе теряется половина смысла ООП.
И странно называть "Sum" функцию, которая делает (a+b)+31
Artem.spb
expert
expert
 
Posts: 1657
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 266
CLD hardware I/O VIP freelance

Re: Actor Framework

Postby IvanLis on 29 Aug 2018, 22:17

Возможно ссылка уже выкладывалась, но вот что нашел по данному направлению:
Actor Framework Basics
включает в себя 5 коротеньких уроков.

Cat wrote:привет из 18года, решил разобраться с actor"ами и понял тут невзначай

Нужно себе на отпуск 19 запланировать :wink:
В этом году разбирался с другими вопросами.
User avatar
IvanLis
professor
professor
 
Posts: 4833
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2015, 2016
Karma: 782
hardware VIP bloggers teachers

Re: Actor Framework

Postby Cat on 01 Sep 2018, 20:18

Спасибо, Вам!
Рад что поднял эту тему, оказывается многих интересует, пойду курить маны)))
Чеширский Кот - совсем не тот, что чешет языком.
User avatar
Cat
adviser
adviser
 
Posts: 201
Joined: 22 Jul 2010, 09:53
LabVIEW Version: 12
Karma: 8

Re: Actor Framework

Postby Vitekkz88 on 07 Sep 2018, 19:59

Нашел время и разобрался с 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 следует с прицелом на будущее(повторяемость проектов и задач). Важным преимуществом модели акторов является повышенная отказоустойчивость программного обеспечения.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
User avatar
Vitekkz88
expert
expert
 
Posts: 1080
Joined: 21 Jan 2014, 15:45
Location: Томск
Medals: 3
Activity (1) Silver (1) Автор (1)
LabVIEW Version: 12,13,14
Karma: 302
hardware I/O VIP

Re: Actor Framework

Postby Usss on 16 Oct 2018, 12:37

А еще лучше, это пройти 3-х дневный Actor Oriented Design курс от NI - но проблема в том, что он проводится довольно редко...

Этот http://sine.ni.com/tacs/app/overview/p/ ... 8/id/3459/ за $ 2,475?
Usss
user
user
 
Posts: 99
Joined: 19 Apr 2017, 23:06
LabVIEW Version: 2017
Karma: 14

Re: Actor Framework

Postby Artem.spb on 16 Oct 2018, 13:29

Usss wrote:
А еще лучше, это пройти 3-х дневный Actor Oriented Design курс от NI - но проблема в том, что он проводится довольно редко...

Этот http://sine.ni.com/tacs/app/overview/p/ ... 8/id/3459/ за $ 2,475?

в Берлине скоро будет в два раза дешевле :)
Снимок.PNG
Artem.spb
expert
expert
 
Posts: 1657
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 266
CLD hardware I/O VIP freelance

Re: Actor Framework

Postby Usss on 16 Oct 2018, 13:44

Именно эту страницу я и отрыл, только вместо € 995 у меня стоит $ 2,475
Usss
user
user
 
Posts: 99
Joined: 19 Apr 2017, 23:06
LabVIEW Version: 2017
Karma: 14

Re: Actor Framework

Postby Artem.spb on 16 Oct 2018, 13:49

Наверно от места зависит. У меня ТОР сейчас через Германию, туда и перекидывает.
Artem.spb
expert
expert
 
Posts: 1657
Joined: 31 Jul 2011, 23:05
Medals: 2
Activity (1) Автор (1)
LabVIEW Version: 12,14,15
Karma: 266
CLD hardware I/O VIP freelance

Re: Actor Framework

Postby Cat on 17 Oct 2018, 22:28

Коллеги у меня такой вопрос, делаю простой актор и вот от родителя к ребенку данные передавать понял, а вот как от ребенка родителю нет. Пример на старой версии фреймворка нашел. Счас пытаюсь сделать на версии 2016 там немного все по другому. Коллеги можете пояснить?
Attachments
ProbeActor.zip
(159.81 KiB) Downloaded 43 times
Чеширский Кот - совсем не тот, что чешет языком.
User avatar
Cat
adviser
adviser
 
Posts: 201
Joined: 22 Jul 2010, 09:53
LabVIEW Version: 12
Karma: 8

Re: Actor Framework

Postby Kosist on 17 Oct 2018, 23:49

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

При "общении" акторов, их иерархия наследования роли не играет (т.е. все равно, кто ребенок, а кто родитель). Важно кто есть caller (тот, кто запускает актора), а кто есть callee (т.е. актор, которого запустили).
В простом случае, если из одного актора вызывать другого, то можно использовать функцию Launch Nested Actor.vi. Тогда актор, который запускает другого актора, может сохранить внутри себя ссылку на него (enqueuer), и соответственно, может посылать ему сообщения. А вызываемый актор, в свою очередь, может общаться с caller-ом при помощи ссылки, которую можно достать функцией Read Caller Enqueuer.
Если посмотрите встроенные примеры в :labview: , там все это дело есть.
Скрин из темплейт-проекта (File -> Create Project... -> All -> Actor Framework).
Call nested actor.png
Мы делили апельсин - много наших полегло...
User avatar
Kosist
leader
leader
 
Posts: 988
Joined: 21 Feb 2011, 23:44
Medals: 2
Activity (1) Gold (1)
LabVIEW Version: 2013-2017
Karma: 279
CLAD I/O VIP students

Re: Actor Framework

Postby taras_33 on 18 Oct 2018, 04:41

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

Скажем работадатель (главный контроллер) посылает людей (nested actors) в командировку для выполнения каких то задач. Кто знает адрес этих людей? Как кто? - работадатель! Кто может прервать командировку? Он же. Командировочный может послать "далеко и без хлеба" работадателя, уйдя в запой и прервать возложенные на него задачи? Да легко. Вот собственно по этой аналогии и можно рассматривать эту модель.
Например работадатель посылая в командировку, может дать командировочному кучу инструкций (параметров), в том числе и адрес другого командировочного, что бы тот при необходимости мог послать ему сообщение напрямую, минуя главного.... Надеюсь чуточку прояснил...
Жаль времени нет, эту тему можно разобрать по винтикам, здесь нет ничего сложного.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
User avatar
taras_33
developer
developer
 
Posts: 297
Joined: 31 Oct 2009, 18:25
Location: Minsk -> Miami
Medals: 1
Activity (1)
LabVIEW Version: 2016
Karma: 131
CLD VIP

PreviousNext

Return to Модели программирования

Who is online

Users browsing this forum: No registered users and 1 guest

cron