Назад в библиотеку

Проектирование архитектуры и программная реализация распределенной системы информационного поиска

Автор: Зубарев Д.В
Источник: Информационно-телекоммуникационные технологии и матмоделирование — 2012 с. 124-126.

Аннотация

Зубарев Д.В. В работе рассматривается архитектура интеллектуальной поисковой системы, а также способы ее построения, организации ее функционирования, обеспечения отказоустойчивости.

Введение

Поисковые системы являются неотъемлемой частью сегодняшней жизни, они позволяют быстро находить интересующую информацию в интернете, в локальной сети, на компьютере пользователя. Существует много различных видов поисковых систем: глобальные, вертикальные вопросно-ответные. Самые популярные из них справляются с нагрузкой в десятки миллионов запросов ежедневно, причём с каждым месяцем (с ростом количества пользователей интернета) эти цифры ощутимо увеличиваются. Главной задачей является сохранение приемлемых для пользователей скорости и полноты выполнения запросов. Для достижения этого создаются распределённые системы, работающие на кластерах из сотен и тысяч узлов. Для построения таких систем используются разные средства, например Hadoop [1], создание которого было вдохновлено Google File System и технологией MapReduce. Это решение было успешно применено в ряде крупных проектов (yahoo, facebook, amazon.com) [2]. В настоящей работе рассматривается альтернативный подход к организации среды распределённой обработки информации для задач информационного поиска и анализа информации.

Архитектура

Разрабатываемая поисковая система состоит из модулей, связанных между собой односторонними отношениями: ассоциациями — рис. 1. Это означает, что функционирование ни одного модуля не зависит от работы другого. Это позволяет уменьшить связность компонентов системы и повысить независимость различных стадий обработки информации. Для обмена сообщениями между модулями используется технология RPC (Remote Procedure Call) [6]. Эта технология является расширением механизма передачи управления и данных внутри программы, но она его не исключает, то есть будет система распределенной или будет выполняться на одном компьютере, можно выбрать на стадии ее развертывания. Таким образом, передача информации между модулями внешне не будет отличаться от вызова процедуры. В отличие от описанного во введении подхода с использованием Hadoop, для создания распределенной системы с помощью RPC необязателен кластер, даже компьютеры, разбросанные по всему миру, могут быть объединены в общую сеть.

Для обеспечения отказоустойчивости используется репликация модулей. Для таких компонентов системы, как индекс и хранилище, происходит копирование данных из одного источника на множество других. В этом случае важно проследить, чтобы при изменении одной из реплик, обновились и другие. При соблюдении этого будет существовать только одна версия данных.

В случае активных компонентов, таких как краулер, анализатор, для повышения производительности и надежности, могут быть запущены несколько раз на нескольких узлах сети. В случае отключения одного модуля для него всегда найдется замена и это не скажется на работе системы в целом. Также это может помочь в распределении нагрузки между узлами сети.

Рисунок 1 — Архитектура интеллектуальной поисковой системы

Рисунок 1 — Архитектура интеллектуальной поисковой системы

Рассмотрим далее основные функциональные возможности компонентов разрабатываемой системы:

Программная реализация

В качестве платформы распределённых вычислений была выбрана библиотека ICE [5], которая является кроссплатформенный библиотекой. Также к ее преимуществам можно отнести, что она поддерживает несколько языков программирования, на которых могут быть написаны взаимодействующие между собой модули. Также на ее основе создана библиотека ICEGrid, которая упрощает создание распределенной системы, предоставляя реестр модулей, распределителя нагрузки между модулями, поддержку репликации.

Интерфейсы модулей, перечисленных выше, описаны на языке спецификаций для ICE (SLICE). После этого с помощью специальной утилиты сгенерированы классы, которые реализуют всю служебную деятельность (сериализация, транспортировка сообщений), для выбранного языка программирования (в данном случае C++). Затем были реализованы методы, объявленные в интерфейсе каждого модуля путём наследования от сгенерированных классов. Такой подход позволяет заменять реализации модулей скрытно от других участников системы.

Во время реализации связей между модулями необязательно указывать их точное местоположение (хост, порт), можно воспользоваться реестром. Реестр модулей представляет собой базу данных, хранящую конечные точки всех модулей. Для их поиска можно использовать, например, тип модуля.

После того как все модули реализованы, нужно ее развернуть на одном или нескольких узлах. Делается это с помощью описания модуля на языке xml. Там указывается расположение исполняемого файла, на каких узлах должно быть запущено это приложение, в каких репликах будет находиться, когда будет запускаться. Эта информация добавляется в реестр и система готова

Некоторые подробности реализаций каждого модуля:

Выводы

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

Список использованной литературы

  • Scalable vertical search engine with hadoop — [Электронный ресурс]. — Режим доступа: http://cloud.dzone.com/articles/hadoop-use-case-scalable
  • Users of Apache Hadoop — [Электронный ресурс]. — Режим доступа: http://en.wikipedia.org/wiki/Apache_Hadoop#Prominent_users
  • Kyoto Cabinet: a straightforward implementation of DBM — [Электронный ресурс]. — Режим доступа: http://fallabs.com/kyotocabinet/
  • Метапоисковая система Exactus — [Электронный ресурс]. — Режим доступа: http://www.exactus.ru/
  • SDistributed Programming with Ice — [Электронный ресурс]. — Режим доступа: http://doc.zeroc.com/display/Ice/Ice+Manuale
  • Remote procedure call — [Электронный ресурс]. — Режим доступа: http://en.wikipedia.org/wiki/Remote_procedure_call
  • На верх