Введение в Мобильные Агенты
Предыдущий | Следующий
Эта статья не появилась бы на свет без поддержки:
Аннотация
Технология мобильных агентов достаточно новая, поэтому системы программирования мобильных агентов существенно различаются по архитектуре и реализации. Эти различия препятствуют интероперабельности и быстрому внедрению систем мобильных агентов. Учитывая уже существующие системы, как объектные, так и не объектные, в MAF выделены аспекты, которые необходимо стандартизировать для обеспечения интероперабельности систем мобильных агентов.
Цели
Основная цель документа CORBA Fascilities: Mobile Agents System Interoperability Fascilities Submission [1] (сокращенно MAF) -- обеспечить интероперабельность между различными существующими и разрабатываеми агентскими системами.
Интероперабельность достигается при стандартизации таких аспектов, как передача агентов и служебных (используемых агентом) классов (или кода для необъектных систем) между агентскими системами, а также управление агентами. Под управлением агентами подразумеваются функции администратора агентской системы, такие как создание агента заданного класса, его уничтожение, прерывание и возобновление деятельности агента (т. е. соответствующем потоке управления). Кроме перечисленных выше аспектов, необходима также стандартизация синтаксиса и семантики различных параметров, например имен агентов и агентских систем, типов агентских систем.
На следующем этапе следует стандартизировать действия агентских систем при пересечении агентом нескольких доменов безопасности, а также формат представления кода и состояния агента при его перемещении между агентскими системами разных типов.
В MAF не затрагиваются вопросы языковой интероперабельности и не рассматриваются зависящие от реализации операции, такие как сериализация/десериализация, интерпретация агентов, а также взаимодействие агентов.
Мобильные агенты
Основной идеей технологии агентов является выполнение задач (администрирования, поиска данных и т.п.) непосредственно на локальной машине, что снижает до минимума взаимодействие между администартором и узлами системы.
Предпосылки
Рассмотрим пример. Клиент хочет стереть с удаленного сервера все файлы, которые были созданы более чем два месяца назад. Если решать эту задачу с помощью RPC, то клиенту придется выполнить N+1 вызовов (1 -- для получения данных о файлах, N -- для удаления N файлов). Таким образом, всего по сети будет передано 2(N+1) сообщений ((N + 1) запросов и (N + 1) ответов).
Определение мобильного агента
Рассмотрим другой подход к решению этой задачи -- метод удаленного программирования (Remote Programming, RP). Клиент создает процедуру, которая анализирует файлы сервера и удаляет файлы, удовлетворяющие заданному в ней критерию. Затем клиент передает эту процедуру для выполнения на сервере. При таком подходе по сети передается два сообщения (передача процедуры и возврат результатов ее работы). Будем называть такую перемещаемую процедуру мобильным агентом. Удаленное взаимодействие заменяется локальным, и уменьшается зависимость от работы сети, уменьшается трафик. Второе преимущество этого метода -- расширение функциональности сервера. Серверные компоненты приложения, работающего через RPC, должны быть статически инсталлированы, в то время как серверные компоненты приложения, использующего RP, динамически инсталлируются агентами.
Можно рассмотреть пример, в котором клиент хочет взаимодействовать с несколькими серверами. Пусть существует M таких серверов и к каждому из них клиент делает Ni обращений. Таким образом, при использовании первого подхода мы имеет 2((N1+1) + (N2+1)+...+ (NM + 1)) сообщений.
Второй подход в этом случае предполагает, что агент перемещается от сервера к серверу и затем возвращает результаты клиенту. При этом возможен случай, когда совокупность серверов, которые должен обойти агент, формируется динамически в процессе его работы. Так, возможно, в процессе работы на i-ом сервере агент определяет свои дальнейшие действия, например, он решает вернуть результаты клиенту и закончить работу. В случае использования RPC, анализ получаемых от серверов результатов ложится на клиента. Если агент последовательно "обходит" все сервера, по сети будет передано M+1 сообщение.
Конечно, для оценки трафика нужно оценивать длину сообщений, передаваемых в случае обычного запроса и мобильного кода. Очевидно, что для выполнения запросов на одном удаленном сервере метод RP может не дать выигрыша в трафике, так как объем мобильного кода может превысить суммарный размер сообщений, содержащих запросы и ответы. Если же задействовано несколько удаленных серверов, каждому из которых к тому же нужно послать большое число запросов, то использование мобильного агента, содержащего в себе (инкапсулирующего) эти запросы, кроме отмеченных выше преимуществ, снижает трафик. Можно утверждать следующее: чем больше вычислений нужно выполнить, тем больший выигрыш дает эта технология.
Применение
В каких задачах могут применяться мобильные агенты:
- мобильные вычисления (миграция агентов может поддерживаться не только между постоянно подсоединенными к сети узлами, но и между мобильными платформами, подключаемыми к постоянной сети на некоторые промежутки времени и возможно по низкоскоростным каналам). Клиент подсоединяется к постоянной сети на короткий промежуток времени с мобильной платформы, отправляет агента для выполнения задачи и отсоединяется; затем клиент подсоединяется к другой точке сети и забирает результаты работы агента. Второй вариант -- сервер, на который должен переместиться агент, подсоединяется к сети, а затем отсоединяется. В этом случае агент должен уметь переместиться на такой временно подсоединяемый сервер и вернуться в постоянную сеть.
- задачи управления информацией:
- Поиск информации (море информации -- один человек не в состоянии найти необходимую ему информацию и проанализировать ее -- использование агента, который странствует по сети в поисках информации, лучше всего удовлетворяющей потребности человека); поисковые агенты содержат сведения о различных информационных источниках (включая тип информации, способ доступа к ней, а также такие характеристики информационного источника, как надежность и точность данных);
- Отбор (обработка) информации. Из всех данных, приходящих к клиенту, выбирают только те данные, которые могут быть интересны клиенту. Используются в комбинации с поисковыми агентами (сначала поиск, затем -- отбор);
- Мониторинг данных. Извещение пользователя об изменениях в различных источниках данных в реальном времени (например, мобильный агент перемещается на вычислительный узел, на котором расположен источник данных; это эффективнее, чем использовать статического агента, посылающего запросы источнику данных);
- Универсальный доступ к данным. Агенты -- посредники для работы с различными источниками данных, имеющие механизмы для взаимодействия друг с другом (например, агент создает несколько агентов, каждый из которых работает со своим источником данных).
Примерами использования агентов может быть поиск информации (data mining, агенты взаимодействуют с серверами баз данных и хранилищами данных), электронная коммерция.
Свойства агентов
Некоторые свойства агентов являюыся ключевыми: автономность, взаимодействие, мобильность. Кроме этого существуют и другие свойства агентов. Рассмотрим эти и другие свойства более подробно:
- автономность -- агенты могут выполнять свои задачи без непосредственного вмешательства клиентов или других агентов;
- взаимодействие -- при возникновении потребности агенты взаимодействуют с другими агентами или людьми с целью получения или оказания помощи в решении задачи;
- мобильность -- способность перемещаться между различными узлами сети во время выполнения; агенты, не обладающие этим свойством, называются статическими;
Перечень свойств агентов можно расширить:
- реактивность -- агенты реагируют на изменения среды в реальном времени, обычно их деятельность описывается следующим образом:
WHEN event IF condition THEN action;
- проактивность -- способность решать задачи (достигать цели); в отличие от реактивных агентов, они не просто реагируют на изменения среды, но и сами ее опрашивают;
- способность существовать как постоянно выполняющийся процесс, точнее, иметь собственный поток управления;
- способность выполняться от имени некоторого владельца;
- гибкость -- действия агентов не фиксированы жестко;
- интеллектуальность (обучаемость) -- способность находить новые решения; такие агенты могут изменять свое поведение, используя как свой опыт, так и опыт других агентов.
Будем придерживаться определения, согласно которому первые 3 свойства являются обязательными для агента, а остальные -- необязательными. Классификация агентов -- от "слабых" к "сильным", т. е. по степени, в которой проявляются эти свойства. Как минимум агент -- это сущность, которая взаимодействует со своим окружением. Пример работы агентов разных типов: один "большой", интеллектуальный агент посылает множество "маленьких", мобильных агентов, которые осуществляют поиск данных, а он сам -- ее обработку.
Система мобильных агентов
- Клиент -- сущность, пользующаяся услугами агента. В нашем случае клиент также является владельцем агента.
- В случае мобильных агентов на каждом вычислительном узле должен существовать сервер (далее будем называть его агентской системой), то есть платформа, предоставляющая функциональность для создания/уничтожения, приема/передачи и среду для выполнения агентов. Эта среда должна быть безопасной. Для организации взаимодействия агентов должен существовать сервис именования, т. е. сервис, предоставляющий возможность работы с сущностью, зная только ее имя. Функции этого сервиса выполняет агентская система.
Агентская система может иметь своего владельца. Агентская система имеет определенный тип, то есть агенты, управляемые ей, имеют некоторый профиль (например, в понятие профиля агента могут входить: язык реализации агента, производитель, алгоритм сериализации агента). Профили необходимы для обеспечения взаимодействия различных систем -- так, зная профиль агента, система в состоянии определить, может ли она обеспечить среду для выполнения этого агента.
Агентская система может поддерживать понятие Места ("плэйса",place). В этом случае сеть компьютеров представляется как набор мест, предоставляющих сервисы. С другой стороны, место является контейнером и фабрикой агентов. Агент порождается в месте и умирает в месте. В течение жизненного цикла агент перемещается между местами. Сервисы, предоставляемые местом, используются агентами, находящимися в нем. Плэйс может накладывать ограничения на ресурсы, которые используют агенты, находящиеся в нем. Плэйсы могут существовать как на стороне клиента, так и на стороне сервера. Плэйс может хранить "следы" посещавших его агентов. Агент может содержать "историю" своей жизнедеятельности (может использоваться для проверки поведения агента (например, для проверки ограничений безопасности) и для обучения агента на собственном опыте).
Если понятие места ("плэйса") не поддерживается, его функции берет на себя сама агентская система.
Агент может порождать других агентов. Таким образом, возникает проблема делегирования задач и полномочий, управления совокупностями агентов, имеющими общих предков ("поколениями" и "семьями" агентов).
Агент выполняет задание, если он располагает достаточными для этого ресурсами и имеет соответствующие права. В противном случае он может искать другого агента, способного выполнить это задание. Агент также может отказаться от выполнения задания, поскольку он перегружен в данный момент или очередь заданий этого агента переполнена.
Проблемы мобильности
Мобильные агенты создают дополнительные проблемы, такие как взаимодействие с агентами, меняющими свое расположение в сети (то есть взаимодействие с агентом в то время, как он перемещается), безопасность (мобильный код начинает выполняться на вычислительном узле, и агентская система должна защищать ресурсы вычислительного узла на котором она выполняется), взаимодействие с агентами в случае отказов сети (устойчивость к отказам), синхронизация времени (в случае, если задачи, выполняемые агентом, являются "time sensitive", то есть должны быть выполнены в реальном времени).
Требования к реализации агентских систем
Обеспечение переносимости кода на различные платформы
Понятие мобильности неразрывно связано с понятием переносимости. Переносимость кода можно обеспечить двумя различными способами. Можно реализовать ее посредством использования интерпретируемых языков (Perl, Tcl и др.), обеспечив каждую вычислительную машину соответствующим интерпретатором, можно использовать один из языков, поддерживающий раздельную компиляцию (Java, Oberon и др.). Кроме того язык должен поддерживать механизмы посылки, передачи, получения и выполнения мобильного кода.
Доступность на множестве платформ
Это требование является продолжением предыдущего. Мобильные агенты должны осуществлять свою работу в гетерогенной компьютерной среде. Любой компьютер должен уметь принять и обеспечить работу мобильного агента.
Поддержка сетевого взаимодействия
Помимо операций непосредственно связанных с перемещением между агентскими серверами, агент должен обладать средствами для коммуникации с другими агентами и доступа к удаленным ресурсам. Поэтому поддержка сетевых услуг должна включать в себя широкий спектр возможностей (служба имен, RPC, OLE, CORBA, RMI и т.д.).
Многопоточная обработка
Для реализации одновременного выполнения нескольких действий агентская система должна включать в себя поддержку параллельного выполнения функций агента и поддержку средств синхронизации.
Безопасность
Мобильные агенты, приходящие из сети, могут содержать потенциально опасный, вредоносный код. Поэтому система должна поддерживать средства обеспечения безопасности достаточные для ее нормальной работы.
Предыдущий | Следующий