2013-03-08 3 views
6

Есть ли существенная разница в понятиях Akka актеры и Jade агентов?В чем разница между актерами (Аккой) и агентами (JADE) в распределенных системах?

Из того, что я знаю, оба реализуют распределение системы, создавая независимые объекты (с кусками системной логики), которые могут связываться, отправляя сообщения между ними.

Существуют ли другие факторы, делающие их разными (например, производительность или целевое назначение)?

ответ

15

Раньше я не знал о JADE, и я являюсь технологическим лидером Akka, поэтому возьмите мой ответ с солью.

Снимая свой сайт (вероятно, предполагается, что его просматривают на гораздо меньшем экране), похоже, что их агенты выполняют роль части обработки сообщений, но им не хватает контроля и, следовательно, отказоустойчивости, и они, похоже, поощрять либо блокировку, либо опрос, в то время как акторы Акки полностью управляются событиями и, следовательно, потребляют меньше ресурсов (потоков). Глядя на Руководство программиста, кажется, что концепция была разработана в основном для использования GUI-разработки, тогда как акковые актеры не являются специфическими и могут использоваться для моделирования любых вычислений или взаимодействия.

Очень большое различие, которое я наткнулся на свой поверхностный поиск, - это размер предоставленного интерфейса для агентов и актеров: возможно, абстракция Akka проще и, следовательно, более мощной.

Возможность перемещения агентов между хостами выглядит интересной, мы все равно должны ее реализовать (см. roadmap).

Если я не пропущу что-то на стороне JADE, то Akka имеет гораздо лучшую поддержку реактивного программирования с его полностью неблокирующими актерами, шаблон запроса в сочетании с composable Futures (т. Е. Не блокирующие из java.util.concurrent, но с методами трансформации для асинхронного состава), STM support и более.

Я не знаю, как это делает JADE, но в Akka вы можете упруго масштабировать и выставлять своих актеров, просто меняя конфигурацию, см. routing.

И последнее, но не менее важное: поддержка cluster в Акке, для которой я не нашел подходящую возможность в JADE, но снова я не очень глубоко выкопал.

Одна вещь, которую я только что заметил: Akka не требует логин для пытается его ;-)

+1

Мой разум разбит на куски. Не ожидал из первых рук понимания. Спасибо! – atok

+0

Возможно, я ошибался, но я прочитал лекцию о AMUSE (это более конкретная основа для социальной видеоигр, основанная на JADE) одним из лидеров проекта JADE. Он сказал нам, что агент JADE очень чувствителен к изменениям и сбоям, поэтому он отказоустойчив. – Pievis

+0

Другое дело. В моем университете они поощряли смысл агента как нечто более развитое из актера. Они учили нас, что актер - это просто то, что инкапсулирует его поток контроля, на самом деле я до сих пор не понимаю акак актеров, потому что для видения меня научили, что они более похожи. – Pievis

6

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

Парадигма программных агентов существует уже много лет, хорошее введение в эту тему - the paper of Jeffrey M. Bradshaw. У него гораздо больше концепций, чем у простых актеров.

Я не буду вдаваться в парадигму (вы можете сослаться на статью, если вам интересно), но сравнение каркасов без каких-либо знаний об этом кажется несправедливым. Просто упомянем, что JADE реализует многие (не все, начиная с последнего раза) проверки концепций парадигмы, а не только ту часть, которую можно сравнить с актерами, но также имеет такие понятия, как BDI model, Онтологии и т. Д.Также JADE реализует FIPA specification, который имеет несколько частей.

Как я уже сказал, прошло несколько лет с тех пор, как я в последний раз проверил реализацию JADE, поэтому я не буду сравнивать точки за точкой. Как сказал Рональд, JADE не реализует такие понятия, как реактивный или эластичный масштаб, но нужно учитывать, что эти концепции широко представлены сегодня, но не слишком популярны много лет назад (при запуске JADE). Я хочу уточнить, что JADE имеет отказоустойчивость, масштабируемость и неблокирующий способ работы с ним (возможно, на веб-сайте не ясно). Книга Developing Multi-Agent Systems with JADE - отличное введение в рамки.

Подводя итог, если модель актера достаточна для ваших требований, я бы пошел с Аккой, поскольку она чище (вероятно, более тонкая) и более современна, чем JADE. Если вам нужны/нужны некоторые из более продвинутых/конкретных функций, связанных с (мобильными) программными агентами, JADE - это более широко используемая платформа framework + для этого (или, по крайней мере, это было, когда я исследовал).

Только мои два цента!

2

Снова через год .... Я могу подтвердить, что сбой является ключевым для Джейд, чтобы упомянуть несколько механизмов: резервные платформы, концепцию виртуальных реплицированных агентов, контейнеры-посредники без гражданства (дело с отключением и ip изменение), постоянная доставка сообщений. Уэйд добавляет больше отказоустойчивости: http://jade.tilab.com/wade/doc/WADE-User-Guide.pdf.

Jade не в основном нацеливает разработку GUI.

Еще одна важная особенность в Jade, о которой я хотел бы упомянуть, заключается в том, что агенты не требуют открытых портов для двунаправленной связи по сети, только для платформы и резервных копий нужны открытые порты.

Кроме того, STM (конечный автомат) является важной частью в Jade, модели разговора FIPA реализованы с использованием STM. Агенты Jade не столько отправляют и получают сообщения, а выполняют цепочку в рабочих процессах.

Кластеризация недоступна в Jade, хотя Wade предоставляет настраиваемые пулы агентов, где пул распределенных агентов выполняет определенную задачу.

Что касается Elastic scaling и Jade, то некоторые исследования были сделаны, я не знаю, как это. Возможно, лучше рассмотреть упругое масштабирование на уровне jvm.

Тема, которая требует внимания как в Jade, так и в Akka, - это безопасность (идентификация, аутентификация, авторизация) в распределенном решении на основе сообщений.

Завершение этого: Нефрит намного более мощный и богатый, чем первый взгляд. Джейд нуждается в модернизации.

Было бы интересно исследовать, как Акка и Джейд могут взаимно выгодно использовать AkkaAgent.