Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619), страница 54
Текст из файла (страница 54)
Технология агентовпредставление о том, что такое агенты, бесполезно в том случае, если отсутствуетподдержка в виде реально существующих систем агентов. Очень полезной былабы возможность выделить постоянно используемые компоненты агентов в распределенных системах и включить их, например, в программное обеспечениепромежуточного уровня. В качестве исходной точки организация FIPA (Foundation for Intelligent Physical Agents) разработала обобщенную модель программныхагентов.
Согласно этой модели агенты регистрируются и работают под управлением платформы агентов, как показано на рис. 3.12. Платформа агентов предоставляет основные службы, необходимые любой мультиагентной системе. Сюдавходят механизмы создания и уничтожения агентов, механизмы распознаванияагентов и механизмы взаимодействия между агентами.^АгентПрограмма-агентКонечная точкаагентаКомпонентыуправленияагентамиПлатформаагента1СлужбакаталоговМежплатформеннаясвязьКанал связимеждуагентами/;гМежплатформеннаясвязьРис. 3.12. Обобщенная модель платформы агента (адаптировано из [143])Компонент управления агентами отслеживает агентов на соответствующейплатформе. Он предоставляет механизмы создания и уничтожения агентов, а также для просмотра текущей конечной точки на предмет наличия конкретного208Глава 3.
Процессыагента. В этом смысле он предоставляет службу наименования, посредством которой глобально уникальный идентификатор отображается на локальную конечную точку взаимодействия. Службы именования детально обсуждаются в следующей главе.Кроме того, существует и отдельная локальная служба каталогов, при помощи которой агенты могут узнать, какие еще агенты имеются на этой платформе.Служба каталогов в модели FIPA основана на использовании атрибутов. Этоозначает, что агент предоставляет описания своих служб в понятиях имен атрибутов вместе с их значениями для данного агента.
Это очень похоже на то, какустроен справочник «Желтые страницы». К службе каталогов могут иметь доступ удаленные агенты, то есть агенты, находящиеся на других платформахагентов.Важный компонент платформы агента — ка}1ал связи между агентами {AgentCommunication Channel, АСС). В большинстве моделей мультиагентных системагенты связываются друг с другом, пересылая сообщения. Модель FIPA — не исключение, она возлагает на АСС ответственность за все взаимодействие междуразличными платформами агентов. В частности, АСС отвечает за надежнуюи направленную связь точка-точка с другими платформами.
Канал АСС можетбыть реализован просто в виде сервера, отслеживающего некоторый порт, предназначенный для входящих сообщений, которые перенаправляются другим серверам или агентам, являющимся частью платформы агентов. Для обеспечениямежплатформенного взаимодействия связь между АСС соответствует Интернетпротоколу ПОР (Internet Inter-ORB Protocol), который мы будем обсуждатьв главе 9. В архитектуре D'Agent в качестве АСС выступает сервер.Языки взаимодействия агентовИтак, у платформ агентов есть своя специфика. Отличие от других подходовк распределенным системам становится понятным при рассмотрении характераинформации, которой реально обмениваются агенты. Связь между агентами происходит посредством коммуникационного протокола прикладного уровня, известного под названием языка взаимодействия агентов {Agent CommunicationLanguage, ACL).
В ACL присутствует жесткое разделение между целью сообщения и его содержанием. Сообщение может иметь только ограниченный наборцелей. Например, целью сообщения может быть запрос на предоставление получателем определенной службы.Также целью сообщения может быть ответ на ранее присланное сообщениес запросом.
Другим примером цели сообщения может быть уведомление принимающей стороны о произошедшем событии или предложение чего-либо в ходесогласования. Некоторые из целей сообщений на языке ACL, разработанныеFIPA, перечислены в табл. 3.5.Идея ACL состоит в том, что агент-отправитель и агент-получатель как минимум одинаково понимают цель сообщения. Более того, цель сообщения обычноопределяет и реакцию получателя. Так, например, при запросе предложения путем сообщения, имеющего в заголовке цель CFP, получатель на самом деле должен будет послать предложение, посредством сообщения с целью PROPOSE. В этом3.5.
Программные агенты209смысле ACL действительно определяет высокоуровневый коммуникационныйпротокол для набора агентов.Таблица 3.5. Примеры целей сообщения и описание содержания сообщенийЦель сообщенияОписаниеСодержаниесообщенияINFORMИ н ф о р м и р о в а т ь , что данноеп р е д п о л о ж е н и е истинноПредположениеЗ а п р о с и т ь , и с т и н н о ли данноеПредположениеQUERY -1FпредположениеQUERY-REFЗ а п р о с д а н н о г о объектаВыражениеСЕРЗапросить предложениеЗависит от предложенияPROPOSEПредоставить п р е д л о ж е н и еПредложениеREJECT- PROPOSALС о о б щ и т ь , что данное п р е д л о ж е н и епринятоС о о б щ и т ь , что д а н н о е п р е д л о ж е н и еотвергнутоИдентификаторпредложенияREQUESTЗ а п р о с и т ь осуществления д е й с т в и яСпецификация действияSUBSCRIBEПодписаться на источник и н ф о р м а ц и иСсылка на источникACCEPT- PROPOSALИдентификаторпредложенияКак и большинство коммуникационных протоколов, сообщения ACL состоятиз заголовка и реального содержания.
Заголовок содержит поле цели сообщения, а также поля отправителя и получателя. Кроме того, как и во многих другихкоммуникационных протоколах, содержимое письма отделено и независимо отостальной его части. Другими словами, предполагается, что содержимое письмаопределят вступившие в связь агенты. ACL никак не задает формат или язык содержания сообщения.Теперь необходимо, чтобы принимающему агенту была предоставлена вся необходимая информация для правильной интерпретации содержания.
Для этогозаголовок сообщения ACL должен также определять язык или схему декодирования содержания. Этот подход хорошо работает до тех пор, пока отправительи получатель одинаково интерпретируют данные, или, точнее, символы сообщения. Если единое понимание отсутствует, нередко требуются дополнительныеполя, идентифицирующие стандартное отображение символов в их смысл. Такоеотображение обычно называется онтологией (ontology).Приведем простой пример. В табл. 3.6 показано сообщение на языке ACL, используемое для информирования агента о генеалогических связях в королевском семействе Нидерландов. Для определения агента, отправившего сообщение,и агента, которому оно предназначено, каждый из агентов имеет имя, состоящееиз нескольких компонентов. Так, например, значение max@http://fanclub-beatrix.royalty-spotters.п1:7239 может использоваться для ссылки на агента с именем max,находящегося на агентской платформе с DNS-именем fanclub-beatrix.royaltyspotters.nl.
Для связи с агентом имя платформы должно быть сначала преобразовано из DNS в IP-адрес. Кроме того, доступ к имени, указанному для связи, должен производиться путем посылки сообщений серверу по протоколу HTTP на210Глава 3. Процессыего хост. Ожидает их прихода сервер на порту под номером 7239. В нашем примере агент max посылает информационное сообщение агенту eike, расположенному на платформе под именем royalty-watcher.uk.
Сообщения должны посылаться по протоколу ПОР (мы обсудим его в главе 9) на порт под номером 5623.Таблица 3.6. Простой пример сообщения ACL, пересылаемогоодним агентом другомуПолеЗначениеЦельINFORMОтправительПолучательЯзыкОнтологияСодержимоеmax@http://fanclub-beatrlx.royalty-spotters.nl:7239elke@iiop.7/royalty-watcher.uk:5623PrologGenealogyfemal eCbeatri х), parent (beatri х. jul 1 ana. bernhard)Остальные поля сообщения относятся к его содержимому.
Поле языка указывает на то, что содержимое сообщения представляет собой серию выражений наязыке Prolog, а поле онтологии определяет, что эти конструкции Prolog интерпретируются как генеалогическая информация. В результате получающий сообщение агент должен понимать, что следующее выражение означает, что beatri х —это имя женщины:female(beatrix)С другой стороны, показанное ниже сообщение говорит о том, что матьbeatriх зовут именем Juliana, а отца — именем Bernhard:parent(beatrix.Juliana,bernhard)3.6.
ИтогиПроцессы играют фундаментальную роль в распределенных системах, посколькуони формируют базис для связи между различными машинами. Важным вопросом является внутренняя организация процессов и в частности, способны ли ониподдерживать несколько управляющих потоков выполнения. Потоки выполнения в распределенных системах используются, в частности, для продолженияработы с процессором во время блокирующих операций ввода-вывода. Таким образом, появляется возможность построения более эффективных серверов, в которых несколько потоков выполнения работают одновременно, причем некоторыеиз них могут быть блокированы в ожидании выполнения дисковых операций ввода-вывода или операций сетевого взаимодействия.Возможна организация распределенных приложений в понятиях клиентови серверов.
Клиентский процесс обычно реализует пользовательский интерфейс,который может варьироваться от простого вывода информации до расширенныхинтерфейсов, способных поддерживать составные документы. Клиентское программное обеспечение, кроме того, способно поддерживать прозрачность распре-3.6. Итоги211деления, скрывая детали, касающиеся связи с серверами, текущего местоположения серверов и репликации серверов. Кроме того, программное обеспечениеклиента способно частично скрыть возникающие сбои и процессы восстановления после сбоев.Серверы часто сложнее клиентов, но тем не менее при их построении применяется относительно немного архитектурных моделей. Так, например, серверы могут быть итеративными или параллельными, реализовывать одну или несколько служб, сохранять информацию о состоянии или не сохранять.
Остальныеархитектурные особенности касаются адресации служб и механизмов прерывания серверов после прихода запроса на обслуживание и возможно в ходе его выполнения.Серверы объектов выделяются в особый класс. Коротко говоря, сервер объектов — это процесс, содержащий размещенные в своем адресном пространстве объекты и готовый принимать направленные к ним обращения. В отдельную категорию серверы объектов выделяются во многом благодаря разнообразию способовобращения к объектам. Так, например, сервер может запустить отдельный потоквыполнения для каждого запроса к объекту.
С другой стороны, он может выделять каждому объекту собственный поток выполнения или оставить единственныйпоток выполнения для всех своих объектов. Посредством адаптера объектов вразличных серверах может быть реализована разная политика обращения к объектам. Коротко говоря, адаптер объектов — это компонент, реализующий толькоодну политику обращения. На сервере может быть несколько адаптеров объектов.Важной для распределенных систем темой является перенос кода с машинына машину. Для того чтобы поддерживать перенос кода, имеются две веские причины — повышенР1е производительности и мобильность.