Решение задачи распределенного индексирования в оперативной памяти на базе модели актеров с использованием фреймворка Akka
Описана программная система построения распределенного координатного индекса в оперативной памяти на базе модели актеров с использованием языка программирования Java и фреймворка Akka. Система позволяет подключать в сеть любое количество машин, легко расширятся и обрабатывать фразовые запросы. Реали...
Збережено в:
| Опубліковано в: : | Управляющие системы и машины |
|---|---|
| Дата: | 2014 |
| Автор: | |
| Формат: | Стаття |
| Мова: | Російська |
| Опубліковано: |
Міжнародний науково-навчальний центр інформаційних технологій і систем НАН та МОН України
2014
|
| Теми: | |
| Онлайн доступ: | https://nasplib.isofts.kiev.ua/handle/123456789/83489 |
| Теги: |
Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
|
| Назва журналу: | Digital Library of Periodicals of National Academy of Sciences of Ukraine |
| Цитувати: | Решение задачи распределенного индексирования в оперативной памяти на базе модели актеров с использованием фреймворка Akka / А.Н. Глибовец // Управляющие системы и машины. — 2014. — № 4. — С. 61-67, 72. — Бібліогр.: 18 назв. — рос. |
Репозитарії
Digital Library of Periodicals of National Academy of Sciences of Ukraine| _version_ | 1860268343932485632 |
|---|---|
| author | Глибовец, А.Н. |
| author_facet | Глибовец, А.Н. |
| citation_txt | Решение задачи распределенного индексирования в оперативной памяти на базе модели актеров с использованием фреймворка Akka / А.Н. Глибовец // Управляющие системы и машины. — 2014. — № 4. — С. 61-67, 72. — Бібліогр.: 18 назв. — рос. |
| collection | DSpace DC |
| container_title | Управляющие системы и машины |
| description | Описана программная система построения распределенного координатного индекса в оперативной памяти на базе модели актеров с использованием языка программирования Java и фреймворка Akka. Система позволяет подключать в сеть любое количество машин, легко расширятся и обрабатывать фразовые запросы. Реализованная в системе поддержка репликаций обеспечивает стабильную работу.
The distributed solving system for construction of coordinate index in the RAM based on model of actors using Java programming language and framework Akka is described. The system allows to connect any number of machines, it expands easily, allowing to process phrase queries. The system provides ability to replicate that ensures its stable operations.
Описано програмну систему побудови розподіленого координатного індексу в оперативній пам’яті на базі моделі акторів з використанням мови програмування Java і фреймворку Akka. Система дозволяє під’єднувати будь-яку кількість машин, легко розширюватися та опрацьовувати фразові запити. Реалізована в системі підтримка реплікації забезпечує стабільну роботу.
|
| first_indexed | 2025-12-07T19:03:22Z |
| format | Article |
| fulltext |
УСиМ, 2014, № 4 61
Программная инженерия и программные средства
УДК 004.42
А.Н. Глибовец
Решение задачи распределенного индексирования в оперативной памяти
на базе модели актеров с использованием фреймворка Akka
Описана программная система построения распределенного координатного индекса в оперативной памяти на базе модели акте-
ров с использованием языка программирования Java и фреймворка Akka. Система позволяет подключать в сеть любое количество
машин, легко расширятся и обрабатывать фразовые запросы. Реализованная в системе поддержка репликаций обеспечивает ста-
бильную работу.
The distributed solving system for construction of coordinate index in the RAM based on model of actors using Java programming lan-
guage and framework Akka is described. The system allows to connect any number of machines, it expands easily, allowing to process
phrase queries. The system provides ability to replicate that ensures its stable operations.
Описано програмну систему побудови розподіленого координатного індексу в оперативній пам’яті на базі моделі акторів з вико-
ристанням мови програмування Java і фреймворку Akka. Система дозволяє під’єднувати будь-яку кількість машин, легко розши-
рюватися та опрацьовувати фразові запити. Реалізована в системі підтримка реплікації забезпечує стабільну роботу.
Введение. При построении поисковых машин
существенное место занимает задача индекси-
рования [1]. В последнее десятилетие начали
говорить о возможности ее решения с исполь-
зованием оперативной памяти. Предлагаем рас-
пределенный вариант построения индекса и его
хранения в оперативной памяти с использова-
нием актеров и фреймворка Akka [2].
Примем, что на всех компьютерах распреде-
ленной системы (сети) установлена и запущена
некоторая среда работы с актерами. Входящие
документы распределяются по сети. После ини-
циализации запуска системы создаются актеры
индексирования файлов. На каждом компью-
тере запущен актер обработки запроса пользо-
вателей через графический интерфейс. Полу-
чив запрос, он направляет его всем актерам,
ответственным за индексирование в сети. За-
просы обрабатываются, и результаты возвра-
щаются к актеру. Окончательный результат
пересылается пользователю. В случае, если
какой-то актер не ответил на запрос, последний
переадресовывается на репликацию. Агенты
строят координатный индекс, позволяющий до-
бывать различную информацию из документов и
качественнее отвечать на информационные за-
просы пользователя.
Практическим применением этой системы
может быть построение поисковой машины для
небольших фирм, нуждающихся в быстром дос-
тупе к данным. Понятно, что для значительных
объемов информации этот подход проблемати-
чен из-за потребности в большом количестве
оперативной памяти.
Задача индексирования заключается в сокра-
щении количества обрабатываемого текста при
запросе поиска. Для этого массив текстовых дан-
ных, по которому будет продолжаться поиск, со-
кращается до некоторого набора ключевых слов.
Различают два основных типа индексов: прямой
и обратный [1]. В первом для каждого документа
строится массив ключевых терминов, которые в
нем встречаются. Массив добавляется в индекс.
Во втором – для каждого ключевого термина со-
поставляется массив документов, в которых он
встречается. Это избавляет от хранения повторя-
ющихся терминов и позволяет удобнее обраба-
тывать поисковые запросы. Координатный ин-
декс – это обратный индекс, который для каждо-
го термина, кроме документов, в которых этот
термин встречается, также сохраняет позиции
этих терминов. Для удобства обработки будем
хранить количество вхождений термина в каж-
дый документ и общую частоту его появления.
Модель актеров
В настоящее время в разработке многопоточ-
ных приложений доминирует подход использо-
вания общего переменного состояния – большо-
62 УСиМ, 2014, № 4
го количества объектов, каждый из которых
работает в своем потоке. Объекты характери-
зуются состоянием и могут быть изменены в
любой момент в разных частях программы.
Обычно в таком коде для синхронизации вза-
имодействия потоков накапливается много бло-
ков, управляемых замками (примитивами син-
хронизации). Последние используются для
обеспечения контролируемого изменения со-
стояния и предотвращения ситуации, когда не-
сколько потоков решают изменить состояние
одновременно. Но чрезмерное количество таких
блоков может значительно снизить быстродей-
ствие программы, поскольку потоки долго будут
ждать высвобождения нужных ресурсов.
Главная проблема использования низкоуро-
вневых конструкций синхронизации (замки,
потоки) – сложность определения поведения и
работы программы. В таких системах часто
появляются дефекты («борьба за ресурсы, дед-
лок»), которые могут быть не найдены на эта-
пе тестирования, но могут привести к катаст-
рофическим ошибкам при загрузке и исполь-
зовании приложения на реальных серверах.
Понятно, что при увеличении проекта также
становится все труднее достичь эффективного
выполнения программы с использованием низ-
коуровневых конструкций синхронизации [3].
Для решения упомянутых проблем реко-
мендуется использовать модель актеров, по-
зволяющую писать эффективные многопоточ-
ные программы и легко анализировать поведе-
ние программы во время работы.
Толчком к разработке модели стала «необ-
ходимость поддержки параллельных вычисли-
тельных систем, которые содержат большое
количество независимых процессоров, каждый
с собственной локальной памятью и процессо-
ром обмена сообщениями, и общаются через
скоростные сети передачи данных» [4]. Мо-
дель актеров (Actor model), как один из подхо-
дов к построению таких систем, возникла на
почве физических идей, в частности квантовой
физики и общей теории относительности. На
нее также повлияли языки программирования
Lisp, Simula 67 и Smalltalk-72 вместе с концеп-
циями систем на базе мандата доступа (capabi-
lity-based systems) и коммутации пакетов (packet
switching). Впервые модель актеров появилась
в трудах группы исследователей под руково-
дством Карла Хьюитта (Carl Hewitt). Логиче-
ским итогом различных исследований стало
появление фреймворка Akka, предложившего
инструментарий для создания отказоустойчи-
вых масштабируемых распределенных прило-
жений. Теперь часть фреймворка, ответствен-
ная за проведение модели актеров, стала ча-
стью программной системы языка Scala.
Основной идеей модели есть среда, состоя-
щая из большого количества «легких» сущно-
стей, называемых актерами. Традиционно актер
ответствен за выполнение отдельного небольшо-
го задания. В общем, система решает более
сложные задачи, взаимодействуя с актерами,
делегируя задачи новым актерам и обменива-
ясь сообщениями. Примером такого обмена со-
общениями в реальной жизни могут быть сиг-
налы, передаваемые системной шиной между
процессором и памятью, передача параметров
между функциями программы, сообщения ме-
жду географически распределенными компью-
терами в сети.
Для обеспечения детерминированного по-
ведения актеров и системы в целом, для под-
держки прозрачного анализа работы програм-
мы на реализацию модели актеров накладыва-
ются следующие дополнительные ограниче-
ния: каждый отдельно взятый актер может об-
рабатывать в определенный момент только од-
но сообщение; обработка одного сообщения –
это атомарная операция (т.е. во время обработ-
ки сообщения актер не может начать обработ-
ку другого сообщения) [5, 6].
Карл Хьюитт рассматривал актеров в каче-
стве универсальных примитивов одновремен-
ных цифровых вычислений (concurrent digital
computation) [7]. Ученый считает, что модель
может быть полезной как для теоретического
понимания параллелизма (concurrency), так и
служить теоретическим базисом для различ-
ных практических реализаций параллельных
систем. Можно утверждать, что модель также
содержит все свойства, необходимые для соз-
дания и анализа распределенных систем. Язык
УСиМ, 2014, № 4 63
актеров (Actor language) – гибкий и мощный,
что позволяет создавать программы, отдельные
модули которых могут быть как сильно, так и
слабо связаны. Например, модель использова-
лась для анализа обменов сообщениями без при-
вязки к местонахождению (location independent
messaging) и перемещения активных программ
между несколькими компьютерами [6].
Актер можно рассматривать как вычисли-
тельную сущность (computational entity), кото-
рая, получая сообщение, может осуществлять
следующие действия: отправлять сообщения
другим актерам для создания новых актеров;
принимать решение о том, как обрабатывать
следующее сообщение, которое она получит.
Нет никакого обусловленного порядка, со-
гласно которому могут происходить указанные
действия. Также следует отметить, что два од-
новременно отправленных сообщения могут
прибыть к конкретному актеру в произвольном
порядке. В классической формулировке моде-
ли особенности поступления некоторого со-
общения от одного актера к другому никак не
оговариваются. Как отмечено в [5, 7], отделе-
ние актера отправителя от сообщений, которые
он направляет, стало главным преимуществом
модели актеров, обусловившей такие характер-
ные особенности передачи сообщений (patterns
of message passing), как возможность асинхрон-
ного обмена сообщениями и эмуляцию струк-
тур управления путём передачи сообщений с
особым содержанием.
Актер может обмениваться сообщениями
только с теми актерами, чьи адреса ему из-
вестны. Адреса могут быть реализованы не-
сколькими способами [5]: посредством прямой
физической привязки (direct physical attach-
ment); как адреса в памяти или в дисковом
пространстве; как сетевые адреса; как адреса
электронной почты.
Детали имплементации адресов, а также та-
кие вопросы, как совместное владение несколь-
кими актерами одного адреса и сопутствующие
проблемы в модели не рассматриваются. Потен-
циальные разработчики конкретной имплемен-
тации модели имеют право принимать собствен-
ное решение, обеспечивая (или нет) при этом
соблюдение основных положений модели. Заме-
тим, что соблюдение основных аксиом модели
или пренебрежение отдельными из них с целью
создания более эффективной реализации модели
на базе конкретного языка программирования
весьма дискуссионно. Хьюитт отмечает, что ак-
тер может хранить только те адреса, которые бы-
ли ему предоставлены, когда он был создан; по-
лученные из сообщений; предназначенные для
актеров, создаваемых текущим актером.
Как отмечено в [5, 7], модель актеров отли-
чается от ее предшественников и большинства
современных моделей вычислений следующи-
ми положениями:
• параллельным исполнением (concurrent
execution) во время обработки сообщения;
• актер не требует отдельного потока (thread),
хранилища сообщений, очереди сообщений, от-
дельного процесса операционной системы;
• реализация передачи сообщений имеет рас-
ходы, подобные реализации циклов и вызовов
процедур;
• поведение актера определено только во
время обработки сообщений.
После трудов Гуля Аги и его коллег [8–11],
а также с развитием объектно-ориентирован-
ного подхода, взгляд на модель актеров не-
сколько изменился, а актера начали восприни-
мать как расширение объекта с определенны-
ми свойствами.
До последнего времени существовало две на-
иболее используемые реализации модели акте-
ров – библиотека Scala.lang.actors, поступавшая
вместе со стандартной средой разработки для
Scala, и часть библиотеки Аkka, посвященная
именно реализации модели актеров. Обе библи-
отеки рассматривали реализацию модели и соот-
ветствующие вспомогательные компоненты как
часть Scala, а именно как конкретные классы,
реализующие соответствующие интерфейсы и
поддерживающие поведение, отражающее свой-
ства модели с учетом внутренних особенностей
реализации. Разработчиками языка Scala было
принято решение о прекращении дальнейшего
развития библиотеки Scala.lang.actors и включе-
ния именно реализации на базе библиотеки Аkka
в стандартную систему программирования для
64 УСиМ, 2014, № 4
Scala. Поэтому в дальнейшем сосредоточимся на
инструментарии, предоставляемом разработчику
фреймворком Аkka. Описание подхода к внут-
ренней реализации модели актеров и обоснова-
ние выбранных архитектурных решений пред-
ставлено в [12–14]. Современные решения для
создания параллельных приложений и их реали-
зации с помощью Scala описаны в [15, 16]. По-
следняя информация по компонентам, поддер-
живаемым библиотекой Akka, описана в [17].
Фреймворк Akka
Когда создаем актеров средствами библио-
теки Akka, вместе с ними во время выполнения
программы и на этапе компиляции создаются
сопутствующие компоненты, обеспечивающие
корректную работу. Основные элементы, ко-
торые создает Akka, – Actor (конкретный эк-
земпляр актера), Mailbox (ящик сообщений),
Dispatcher (диспетчер), ActorRef (прокси над
актером). Структура их взаимодействия пред-
ставлена на рисунке.
Актер в Akka и его компоненты [18]
При передаче сообщения актёру, с ним непо-
средственно никогда взаимодействия не проис-
ходит. Вместо этого отсылается сообщение к
объекту-прокси – ActorRef. Прокси обращается к
диспетчеру по поводу размещения сообщения в
очереди сообщений почтового ящика актера. Ди-
спетчер разместит сообщения в поток (thread), и
когда тот отработает, то достанет из очереди од-
но из сообщений и отправит его специально оп-
ределенному методу receive для обработки. Сле-
дует помнить, что как только сообщение поло-
жено (доставлено) в ящик, тот, кто осуществляет
вызов, может поступать как пожелает. Един-
ственная блокировка – это размещение сообще-
ния в очередь. После этого, вся остальная работа
и обработка осуществляются в другом потоке.
Такое уменьшение связности системы позволяет
предоставить значительную функциональность
реализации актеров в библиотеке Akka.
Актеры – «живые» объекты, реагирующие
на сообщения, поступающие извне. Поэтому
нецелесообразно моделировать с помощью ак-
теров что-то статическое. Есть только один
способ обратиться к актеру – отправить ему
сообщение. Аналогично, единственный способ
что-то сделать с этим сообщением – обрабо-
тать его в режиме receive.
Сообщения на языке Scala реализуются по-
средством особой структуры – частичных клас-
сов (case classes). Объекты таких классов – не-
изменны, значение их атрибутов задаются в кон-
структоре при создании. Также они реализуют
совместный с Java интерфейс Serializable, что
позволяет свободно передавать объекты-сообще-
ния по сети.
Akka не допускает явного создания экземп-
ляров актеров с помощью оператора создания
экземпляров объектов (в Java и Scala это опе-
ратор new). Для создания актера следует обра-
титься к экземпляру класса ActorSystem. Объ-
екты данного класса служат «фабриками» для
создания объектов актеров. Вызов соответст-
вующего метода класса ActorSystem возвраща-
ет как результат своей работы не прямую
ссылку на объект класса актера, а экземпляр
класса ActorRef, с помощью которого должны
происходить все взаимодействия с актером.
Данный подход «косвенного обращения» к
объекту обеспечивает, прежде всего прозрач-
ность дислокации (location transparency), т.е.
настоящее расположение экземпляра не имеет
значения. Также возникает возможность есте-
ственным образом оптимизировать топологию
приложения во время выполнения, изменяя
местонахождение актера. «Косвенное обраще-
ние» позволяет использовать модель «пусть
упадет» («let it crash») для управления отказа-
ми, которая позволяет системе «вылечить» се-
бя, уничтожив и создав заново те актеры, ко-
торые вызывают ошибки.
Следует отметить, что строчные идентифи-
каторы, передаваемые в конструктор, и вызов
УСиМ, 2014, № 4 65
метода actorOf достаточно важны в Akka и по-
зволяют в дальнейшем находить конкретные
экземпляры актеров.
Решение задачи распределенного индек-
сирования в оперативной памяти
Предлагаемый подход к решению задачи
может быть описан следующим сценарием. На
каждом компьютере среды (сети) запускается
Java-машина с реализованными Akka-актера-
ми. Актеры, ответственные за индексацию, ин-
дексируют свой массив файлов и строят коор-
динатный индекс, т.е. на каждом компьютере в
сети находится часть общего индекса. С любо-
го компьютера можно сделать запрос по об-
щему индексу. Отметим, что пользователь не
привязан к какому-то одному узлу, который
может работать нестабильно. Запрос рассыла-
ется по всем компьютерам в сети и обрабаты-
вается соответствующими актерами. После об-
работки результаты возвращаются на компью-
тер, с которого пришел запрос, и выводятся
пользователю. В случае недоступности какого-
либо из узлов, ищется его репликация и пере-
адресовывается запрос к ней.
Рассмотрим подход более конкретно.
Запуск и создание актеров. При запуске
системы первое, что создается – это среда, в
которой будут работать актеры. На каждой
машине создается объект ActorSystem, под-
держивающий работу с актерами. Все после-
дующие актеры будут созданы в этой среде.
При запуске среды указывается IP-адрес хос-
та и порт, по которому можно будет обра-
титься к ней, т.е. имеем префикс физического
адреса актеров в среде. Например: Indexing-
System@192.168.0.100: 2552.
После создания среды на машине строятся
два актера: актер-создатель индекса, и актер-
обработчик запроса по общему индексу.
Типы сообщений между актерами. Преж-
де чем перейти к описанию актеров следует
определить, какими сообщениями они могут
обмениваться. В системе существует два типа
сообщений: SearchQueryResult и SearchQueryAsk.
Сообщение SearchQueryAsk направляется как
запрос от пользователя к актерам, ответствен-
ным за индексирование. Оно содержит только
одно текстовое поле query, конструктор класса и
метод, по которому можно получить запрос
public String getQuery ().
Сообщение SearchQueryResult содержит мас-
сив с результирующими файлами, которые соот-
ветствуют критериям поиска ArrayList <String>
resultFileNames, конструктор и гетер результи-
рующих имен файлов.
Оба сообщения реализуют интерфейс Serializ-
able, так как для передачи сообщений между
актерами эти сообщения необходимо сериализо-
вывать.
Теперь рассмотрим возможные актеры в
системе.
Актер индексирования называется Indexing-
Actor. Он создает экземпляр класса Positional-
Index, который и занимается построением ин-
декса. Файлы, из которых будет строиться ин-
декс, берут из каталога Books, который находит-
ся в проекте. Актер индексирования реагирует
на сообщение SearchQueryAsk и обрабатывает
их. Все остальные сообщения игнорируются.
После получения сообщения запрос, содержа-
щийся в нем, извлекается и обрабатывается ме-
тодом public ArrayList <String> search (String
word) класса PositionalIndex. Последний прини-
мает на вход запрос, а возвращает список имен
файлов, удовлетворивших этот запрос. Далее ре-
зультат записывается в сообщения типа Search-
QueryResult и посылается отправителю. В ре-
зультате имеем такой метод обработки:
public void onReceive (Object message) throws Exception {
if (message instanceof SearchQuery.SearchQueryAsk) {
String query = ((SearchQuery.SearchQueryAsk) mes-
sage). GetQuery ();
SearchQuery.SearchQueryResult resul = new Search-
Query.SearchQueryResult
(this.index.search (query));
getSender (). tell (result, getSelf ());
} Else {
unhandled (message);
}
}.
Индексирование и поиск. Рассмотрим под-
ход к индексированию, а именно класс Posi-
tionalIndex. Класс содержит два поля: массив
файлов ArrayList <File> files, которые предсто-
66 УСиМ, 2014, № 4
ит проиндексировать, и результирующий ин-
декс Map <String, TreeMap <Integer, TreeSet
<Integer> >> dictionary. Структура индекса та-
кова. Для каждого термина, встречающегося в
тексте, сохраняется список файлов, содержав-
ших этот термин, и для каждого файла хранится
список – слово, позиции этого термина.
Рассмотрим работу метода индексирования.
Он в цикле считывает поочередно все файлы
из перечня, полученного на вход от актера,
удаляет знаки препинания и сводит слова к
нижнему регистру. Конечно, нужно использо-
вать дополнительные методы обработки, такие
как стеминг или лемматизации. Но в данной
статье не ставилась цель построить полно-
функциональную поисковую систему. Затем
каждое слово обрабатывается отдельно. Если
входного слова еще нет в регистре, то для него
создаются соответствующие массивы и сети,
добавляемые в индекс:
if (! dictionary.containsKey (word)) {
TreeMap <Integer, TreeSet <Integer>> map =
new TreeMap <Integer, TreeSet <Integer>> ();
TreeSet <Integer> set = new TreeSet <Integer> ();
set.add (wordCount);
map.put (files.indexOf (file), set);
dictionary.put (word, map);
}.
Если слово уже есть в словаре, то, возмож-
но, оно встречалось уже в этом файле или
только в других файлах:
else {
TreeMap <Integer, TreeSet <Integer>> map = diction-
ary.get (word);
if (! map.containsKey (files.indexOf (file))) {
TreeSet <Integer> set = new TreeSet <Integer> ();
set.add (wordCount);
map.put (files.indexOf (file), set);
} Else {
map.get (files.indexOf (file)). add (wordCount);
}
}
При обработке файлов ведется счетчик ин-
декса слов в тексте, который обнуляется перед
рассмотрением следующего файла.
Рассмотрим реализацию алгоритма поиска
по индексу. Сначала запрос сводится к нижне-
му регистру, далее убираются все знаки пунк-
туации и запрос разбивается по словам:
public ArrayList <String> search (String query) {
query = query.toLowerCase ();
String [] words = query.split ("[\ \ p {Punct} \ \ s] +");.
Для первого слова из запроса извлекается
его список файлов. Если этот список пуст, то в
цикле перебираем все файлы, берем координа-
ты вхождения первого слова запроса и смот-
рим в этом же файле, соответствуют ли следу-
ющие координаты тем словам, которые посту-
пили в запрос. Если соответствуют, то добав-
ляем в результирующий массив, иначе перехо-
дим к следующему файлу:
for (int i = 1; i <words.length; i + +) {
TreeMap <Integer, TreeSet <Integer>> map = diction-
ary.get (words [i]);
if (map! = null && map.containsKey (fileIndex)) {
if (! map.get (fileIndex). contains (wordCoord + i)) {
containsAllWords = false;
break;
}
} Else {
containsAllWords = false;
break;
}
}
if (containsAllWords) {
resultFiles.add (fileIndex);
break;
}
После обработки всех файлов возвращаем
имена, соответствующие входному запросу.
Актер запроса. Актер, ответственный за ра-
боту с запросами, называется QueryActor. Его
интерфейс состоит из поля для ввода запроса,
кнопки поиска и поля для вывода результата.
При нажатии на кнопку Search срабатывает
слушатель (лисенер), передающий запрос на
обработку актеру в виде сообщения Search-
QueryAsk.
Актер запроса имеет список всех актеров ин-
дексирования в виде их физического адреса. В
случае расширения системы или переноса ее в
другую сеть, все, что необходимо измененить в
программе, – это список адресов актеров:
private static final Map <String, List <String>> ACTORS
= new HashMap <String, List <String>> ();
static {
ACTORS.put ("A", new ArrayList <String> ());
ACTORS.get ("A"). Add ("akka.tcp :/ / IndexingSys-
tem@192.168.0.100: 2552/user/indexActor");
УСиМ, 2014, № 4 67
ACTORS.put ("B", new ArrayList <String> ());
ACTORS.get ("B"). Add ("akka.tcp / / IndexingSys-
tem@192.168.0.142: 2552/user/indexActor");
ACTORS.get ("C"). AddAll (Arrays.asList ("akka.tcp :/ /
IndexingSystem@192.168.0.142: 2553/user/indexActor",
"akka.tcp :/ / IndexingSystem@192.168.0.142: 2554 / user /
indexActor "," akka.tcp :/ / IndexingSystem@192.168.0.142:
2555/user/indexActor "));
}
Отметим, что все актеры разбиты на груп-
пы. Таким решением система поддерживает
репликации. Когда актер получает сообщение
от графического интерфейса пользователя, он
рассылает каждому актеру из списка сообще-
ние SearchQueryAsk и ожидает ответа:
ArrayList <String> totalResult = new ArrayList <String> ();
boolean success = false;
for (String group: ACTORS.keySet ()) {
for (String actor: ACTORS.get (group)) {
if (! success) {
Timeout timeout = new Timeout (Duration. Create (5,
"seconds"));
Future <Object> future = Patterns.ask (get Con-
text (). ActorSelection (actor), message, timeout);
try {
SearchQuery.SearchQueryResult result =
(SearchQuery.SearchQueryResult) Await.result (future,
timeout.duration ()); totalResult.addAll (result.getResultFile-
Names ());
success = true;
} Catch (Exception e) {
System.out.println (actor + "is unreachable");
}
success = false;
}.
Если ответ не приходит в течение пяти се-
кунд, то такой актер признается недействи-
тельным для данного запроса, и запрос пере-
направляется следующему актеру из группы.
Если ни один актер из группы не соответству-
ет, то запрос возвращает значение из других, и,
несмотря на это, выводит на экран:
gui.showResults (totalResult).
Заключение. Разработанный подход позво-
ляет включать в сеть любое количество машин,
легко расширяется. Запросы индексу можно от-
правлять из любой машины в сети. Построение
координатного индекса позволяет обрабатывать
фразовые запросы. Реализованная в системе под-
держка работ с репликациями обеспечивает ей
стабильность.
На базе предложенной системы в дальней-
шем возможна разработка полнофункциональ-
ной поисковой системы для локальной сети по
заданным файлам.
1. Christopher D. Manning, Prabhakar Raghavan, Hinrich
Schütze Introduction to information retrieval / Cambridge
University Press, 2008. – http://nlp.stanford.edu/IR-
book/html/htmledition/irbook. html
2. Gul A., Abdulnabi Agha. Actors: A Model Of Concur-
rent Computation In Distributed Systems. – June, 1985
3. Daniel Westheide The Neophyte's Guide to Scala Part
14: The Actor Approach to Concurrency. – http://daniel-
westheide.com/ blog/2013/02/27/the-neophytes-guide-to-
scala-part-14-the-actor-approach-to-concurrency. html
4. William D. Clinger. Foundations of Actor Semantics. –
http://dspace.mit.edu/bitstream/handle/1721.1/6935/AI
TR-633.pdf
5. Carl Hewitt, Peter Bishop, Richard Steiger. A Univer-
sal Modular ACTOR Formalism for Artificial Intelli-
gence. – http://citeseerx.ist.psu.edu/viewdoc/summry?
doi=10.1.1.77.7898
6. Botev N. Actor-based Concurrency in Newspeak 4. –
Master's Projects. Paper 231, 2012. – http://scholarworks.
sjsu.edu/etd_projects/231
7. Hewitt C. What is computation?Actor Model versus
Turing's Model / A Computable Universe: Under-
standing Computation & Exploring Nature as Compu-
tation. Dedicated to the memory of Alan M. Turing on
the 100th anniversary of his birth. Edited by Hector
Zenil. – World Scientific Publ., 2012. – 856 p. –
http://what-is-computation.carlhewitt.info
8. Agha G.A. ACTORS: A Model of Concurrent Compu-
tation in Distributed Systems. – MIT Press, Cam-
bridge, Mass., 1986. – 190 p.
9. Agha G. Concurrent Object-oriented Programming
// Commun. ACM. – 1990. – 33, N 9. – P. 125–141.
10. Foundation for Actor Computation / Gul Agha, Ian A.
Mason, Scott Smith et al. // J. of Functional Program-
ming. – 1997. – 7, N 1. – P. 1–72.
11. Clinger W. Foundations of Actor Semantics. – Cam-
bridge, Mass., MIT Press, 1981. – 178 p.
12. Haller Ph., Odersky M. Event-based Programming with-
out Inversion of Control// Modular Programming Lan-
guages: 7th Joint Modular Languages Conf., JMLC 2006
Oxford, UK, Sept. 13–15, 2006: Proc. – Lecture Notes in
Computer Sci., 2006. – 4228. – P. 4–22.
13. Haller Ph., Odersky M. Actors That Unify Threads and
Events // Proc. of the 9th Inter. Conf. on Coordination
Models and Languages, COORDINATION’07. – Berlin,
Heidelberg: Springer-Verlag, 2007. – P. 171–190.
14. Haller Ph., Odersky M. Scala Actors: Unifying Thread-
based and Event-based Programming // J. of Theoretical
Comp. Science, 2009. – 410, N 2–3. – P. 202–220.
Окончание на стр. 72
72 УСиМ, 2014, № 4
Окончание
статьи
А.Н. Глибовца
15. Haller Ph., Sommers F. Actors in Scala. – Walnut Creek,
Calif.: Artima Press, 2011. – 184 p.
16. Subramaniam V. Programming Concurrency on the
JVM: Mastering Synchronization, STM, and Actors. –
Pragmatic Bookshelf, 2011. – 280 p.
17. Akka Documentation. Release 2.2.3. – Typesafe Inc.,
Oct. 23, 2013. – http://doc.akka.io/docs/akka/2.2.3/Akka
Scala.pdf
18. Wyatt D. Akka Concurrency. – Walnut Creek, Calif.:
Artima Inc., 2013. – 515 p.
Поступила 04.07.2014
Тел. для
справок: +38 067 409-4355 (Киев)
E-mail: andriy@glybovets.com.ua
© А.Н. Глибовец, 2014
10.pdf
72.pdf
<<
/ASCII85EncodePages false
/AllowTransparency false
/AutoPositionEPSFiles true
/AutoRotatePages /None
/Binding /Left
/CalGrayProfile (Dot Gain 20%)
/CalRGBProfile (sRGB IEC61966-2.1)
/CalCMYKProfile (U.S. Web Coated \050SWOP\051 v2)
/sRGBProfile (sRGB IEC61966-2.1)
/CannotEmbedFontPolicy /Error
/CompatibilityLevel 1.4
/CompressObjects /Tags
/CompressPages true
/ConvertImagesToIndexed true
/PassThroughJPEGImages true
/CreateJobTicket false
/DefaultRenderingIntent /Default
/DetectBlends true
/DetectCurves 0.0000
/ColorConversionStrategy /CMYK
/DoThumbnails false
/EmbedAllFonts true
/EmbedOpenType false
/ParseICCProfilesInComments true
/EmbedJobOptions true
/DSCReportingLevel 0
/EmitDSCWarnings false
/EndPage -1
/ImageMemory 1048576
/LockDistillerParams false
/MaxSubsetPct 100
/Optimize true
/OPM 1
/ParseDSCComments true
/ParseDSCCommentsForDocInfo true
/PreserveCopyPage true
/PreserveDICMYKValues true
/PreserveEPSInfo true
/PreserveFlatness true
/PreserveHalftoneInfo false
/PreserveOPIComments true
/PreserveOverprintSettings true
/StartPage 1
/SubsetFonts true
/TransferFunctionInfo /Apply
/UCRandBGInfo /Preserve
/UsePrologue false
/ColorSettingsFile ()
/AlwaysEmbed [ true
]
/NeverEmbed [ true
]
/AntiAliasColorImages false
/CropColorImages true
/ColorImageMinResolution 300
/ColorImageMinResolutionPolicy /OK
/DownsampleColorImages true
/ColorImageDownsampleType /Bicubic
/ColorImageResolution 300
/ColorImageDepth -1
/ColorImageMinDownsampleDepth 1
/ColorImageDownsampleThreshold 1.50000
/EncodeColorImages true
/ColorImageFilter /DCTEncode
/AutoFilterColorImages true
/ColorImageAutoFilterStrategy /JPEG
/ColorACSImageDict <<
/QFactor 0.15
/HSamples [1 1 1 1] /VSamples [1 1 1 1]
>>
/ColorImageDict <<
/QFactor 0.15
/HSamples [1 1 1 1] /VSamples [1 1 1 1]
>>
/JPEG2000ColorACSImageDict <<
/TileWidth 256
/TileHeight 256
/Quality 30
>>
/JPEG2000ColorImageDict <<
/TileWidth 256
/TileHeight 256
/Quality 30
>>
/AntiAliasGrayImages false
/CropGrayImages true
/GrayImageMinResolution 300
/GrayImageMinResolutionPolicy /OK
/DownsampleGrayImages true
/GrayImageDownsampleType /Bicubic
/GrayImageResolution 300
/GrayImageDepth -1
/GrayImageMinDownsampleDepth 2
/GrayImageDownsampleThreshold 1.50000
/EncodeGrayImages true
/GrayImageFilter /DCTEncode
/AutoFilterGrayImages true
/GrayImageAutoFilterStrategy /JPEG
/GrayACSImageDict <<
/QFactor 0.15
/HSamples [1 1 1 1] /VSamples [1 1 1 1]
>>
/GrayImageDict <<
/QFactor 0.15
/HSamples [1 1 1 1] /VSamples [1 1 1 1]
>>
/JPEG2000GrayACSImageDict <<
/TileWidth 256
/TileHeight 256
/Quality 30
>>
/JPEG2000GrayImageDict <<
/TileWidth 256
/TileHeight 256
/Quality 30
>>
/AntiAliasMonoImages false
/CropMonoImages true
/MonoImageMinResolution 1200
/MonoImageMinResolutionPolicy /OK
/DownsampleMonoImages true
/MonoImageDownsampleType /Bicubic
/MonoImageResolution 1200
/MonoImageDepth -1
/MonoImageDownsampleThreshold 1.50000
/EncodeMonoImages true
/MonoImageFilter /CCITTFaxEncode
/MonoImageDict <<
/K -1
>>
/AllowPSXObjects false
/CheckCompliance [
/None
]
/PDFX1aCheck false
/PDFX3Check false
/PDFXCompliantPDFOnly false
/PDFXNoTrimBoxError true
/PDFXTrimBoxToMediaBoxOffset [
0.00000
0.00000
0.00000
0.00000
]
/PDFXSetBleedBoxToMediaBox true
/PDFXBleedBoxToTrimBoxOffset [
0.00000
0.00000
0.00000
0.00000
]
/PDFXOutputIntentProfile ()
/PDFXOutputConditionIdentifier ()
/PDFXOutputCondition ()
/PDFXRegistryName ()
/PDFXTrapped /False
/CreateJDFFile false
/Description <<
/ARA <FEFF06270633062A062E062F0645002006470630064700200627064406250639062F0627062F0627062A002006440625064606340627062100200648062B062706260642002000410064006F00620065002000500044004600200645062A064806270641064206290020064406440637062806270639062900200641064A00200627064406450637062706280639002006300627062A0020062F0631062C0627062A002006270644062C0648062F0629002006270644063906270644064A0629061B0020064A06450643064600200641062A062D00200648062B0627062606420020005000440046002006270644064506460634062306290020062806270633062A062E062F062706450020004100630072006F0062006100740020064800410064006F006200650020005200650061006400650072002006250635062F0627063100200035002E0030002006480627064406250635062F062706310627062A0020062706440623062D062F062B002E0635062F0627063100200035002E0030002006480627064406250635062F062706310627062A0020062706440623062D062F062B002E>
/BGR <FEFF04180437043f043e043b043704320430043904420435002004420435043704380020043d0430044104420440043e0439043a0438002c00200437043000200434043000200441044a0437043404300432043004420435002000410064006f00620065002000500044004600200434043e043a0443043c0435043d04420438002c0020043c0430043a04410438043c0430043b043d043e0020043f044004380433043e04340435043d04380020043704300020043204380441043e043a043e043a0430044704350441044204320435043d0020043f04350447043004420020043704300020043f044004350434043f0435044704300442043d04300020043f043e04340433043e0442043e0432043a0430002e002000200421044a04370434043004340435043d043804420435002000500044004600200434043e043a0443043c0435043d044204380020043c043e0433043004420020043404300020044104350020043e0442043204300440044f0442002004410020004100630072006f00620061007400200438002000410064006f00620065002000520065006100640065007200200035002e00300020043800200441043b0435043404320430044904380020043204350440044104380438002e>
/CHS <FEFF4f7f75288fd94e9b8bbe5b9a521b5efa7684002000410064006f006200650020005000440046002065876863900275284e8e9ad88d2891cf76845370524d53705237300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200035002e003000204ee553ca66f49ad87248672c676562535f00521b5efa768400200050004400460020658768633002>
/CHT <FEFF4f7f752890194e9b8a2d7f6e5efa7acb7684002000410064006f006200650020005000440046002065874ef69069752865bc9ad854c18cea76845370524d5370523786557406300260a853ef4ee54f7f75280020004100630072006f0062006100740020548c002000410064006f00620065002000520065006100640065007200200035002e003000204ee553ca66f49ad87248672c4f86958b555f5df25efa7acb76840020005000440046002065874ef63002>
/CZE <FEFF005400610074006f0020006e006100730074006100760065006e00ed00200070006f0075017e0069006a007400650020006b0020007600790074007600e101590065006e00ed00200064006f006b0075006d0065006e0074016f002000410064006f006200650020005000440046002c0020006b00740065007200e90020007300650020006e0065006a006c00e90070006500200068006f006400ed002000700072006f0020006b00760061006c00690074006e00ed0020007400690073006b00200061002000700072006500700072006500730073002e002000200056007900740076006f01590065006e00e900200064006f006b0075006d0065006e007400790020005000440046002000620075006400650020006d006f017e006e00e90020006f007400650076015900ed007400200076002000700072006f006700720061006d0065006300680020004100630072006f00620061007400200061002000410064006f00620065002000520065006100640065007200200035002e0030002000610020006e006f0076011b006a016100ed00630068002e>
/DAN <FEFF004200720075006700200069006e0064007300740069006c006c0069006e006700650072006e0065002000740069006c0020006100740020006f007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400650072002c0020006400650072002000620065006400730074002000650067006e006500720020007300690067002000740069006c002000700072006500700072006500730073002d007500640073006b007200690076006e0069006e00670020006100660020006800f8006a0020006b00760061006c0069007400650074002e0020004400650020006f007000720065007400740065006400650020005000440046002d0064006f006b0075006d0065006e0074006500720020006b0061006e002000e50062006e00650073002000690020004100630072006f00620061007400200065006c006c006500720020004100630072006f006200610074002000520065006100640065007200200035002e00300020006f00670020006e0079006500720065002e>
/DEU <FEFF00560065007200770065006e00640065006e0020005300690065002000640069006500730065002000450069006e007300740065006c006c0075006e00670065006e0020007a0075006d002000450072007300740065006c006c0065006e00200076006f006e002000410064006f006200650020005000440046002d0044006f006b0075006d0065006e00740065006e002c00200076006f006e002000640065006e0065006e002000530069006500200068006f006300680077006500720074006900670065002000500072006500700072006500730073002d0044007200750063006b0065002000650072007a0065007500670065006e0020006d00f60063006800740065006e002e002000450072007300740065006c006c007400650020005000440046002d0044006f006b0075006d0065006e007400650020006b00f6006e006e0065006e0020006d006900740020004100630072006f00620061007400200075006e0064002000410064006f00620065002000520065006100640065007200200035002e00300020006f0064006500720020006800f600680065007200200067006500f600660066006e00650074002000770065007200640065006e002e>
/ESP <FEFF005500740069006c0069006300650020006500730074006100200063006f006e0066006900670075007200610063006900f3006e0020007000610072006100200063007200650061007200200064006f00630075006d0065006e0074006f00730020005000440046002000640065002000410064006f0062006500200061006400650063007500610064006f00730020007000610072006100200069006d0070007200650073006900f3006e0020007000720065002d0065006400690074006f007200690061006c00200064006500200061006c00740061002000630061006c0069006400610064002e002000530065002000700075006500640065006e00200061006200720069007200200064006f00630075006d0065006e0074006f00730020005000440046002000630072006500610064006f007300200063006f006e0020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200035002e003000200079002000760065007200730069006f006e0065007300200070006f00730074006500720069006f007200650073002e>
/ETI <FEFF004b00610073007500740061006700650020006e0065006900640020007300e4007400740065006900640020006b00760061006c006900740065006500740073006500200074007200fc006b006900650065006c007300650020007000720069006e00740069006d0069007300650020006a0061006f006b007300200073006f00620069006c0069006b0065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740069006400650020006c006f006f006d006900730065006b0073002e00200020004c006f006f0064007500640020005000440046002d0064006f006b0075006d0065006e00740065002000730061006100740065002000610076006100640061002000700072006f006700720061006d006d006900640065006700610020004100630072006f0062006100740020006e0069006e0067002000410064006f00620065002000520065006100640065007200200035002e00300020006a00610020007500750065006d006100740065002000760065007200730069006f006f006e00690064006500670061002e000d000a>
/FRA <FEFF005500740069006c006900730065007a00200063006500730020006f007000740069006f006e00730020006100660069006e00200064006500200063007200e900650072002000640065007300200064006f00630075006d0065006e00740073002000410064006f00620065002000500044004600200070006f0075007200200075006e00650020007100750061006c0069007400e90020006400270069006d007000720065007300730069006f006e00200070007200e9007000720065007300730065002e0020004c0065007300200064006f00630075006d0065006e00740073002000500044004600200063007200e900e90073002000700065007500760065006e0074002000ea0074007200650020006f007500760065007200740073002000640061006e00730020004100630072006f006200610074002c002000610069006e00730069002000710075002700410064006f00620065002000520065006100640065007200200035002e0030002000650074002000760065007200730069006f006e007300200075006c007400e90072006900650075007200650073002e>
/GRE <FEFF03a703c103b703c303b903bc03bf03c003bf03b903ae03c303c403b5002003b103c503c403ad03c2002003c403b903c2002003c103c503b803bc03af03c303b503b903c2002003b303b903b1002003bd03b1002003b403b703bc03b903bf03c503c103b303ae03c303b503c403b5002003ad03b303b303c103b103c603b1002000410064006f006200650020005000440046002003c003bf03c5002003b503af03bd03b103b9002003ba03b103c42019002003b503be03bf03c703ae03bd002003ba03b103c403ac03bb03bb03b703bb03b1002003b303b903b1002003c003c103bf002d03b503ba03c403c503c003c903c403b903ba03ad03c2002003b503c103b303b103c303af03b503c2002003c503c803b703bb03ae03c2002003c003bf03b903cc03c403b703c403b103c2002e0020002003a403b10020005000440046002003ad03b303b303c103b103c603b1002003c003bf03c5002003ad03c703b503c403b5002003b403b703bc03b903bf03c503c103b303ae03c303b503b9002003bc03c003bf03c103bf03cd03bd002003bd03b1002003b103bd03bf03b903c703c403bf03cd03bd002003bc03b5002003c403bf0020004100630072006f006200610074002c002003c403bf002000410064006f00620065002000520065006100640065007200200035002e0030002003ba03b103b9002003bc03b503c403b103b303b503bd03ad03c303c403b503c103b503c2002003b503ba03b403cc03c303b503b903c2002e>
/HEB <FEFF05D405E905EA05DE05E905D5002005D105D405D205D305E805D505EA002005D005DC05D4002005DB05D305D9002005DC05D905E605D505E8002005DE05E105DE05DB05D9002000410064006F006200650020005000440046002005D405DE05D505EA05D005DE05D905DD002005DC05D405D305E405E105EA002005E705D305DD002D05D305E405D505E1002005D005D905DB05D505EA05D905EA002E002005DE05E105DE05DB05D90020005000440046002005E905E005D505E605E805D5002005E005D905EA05E005D905DD002005DC05E405EA05D905D705D4002005D105D005DE05E605E205D505EA0020004100630072006F006200610074002005D5002D00410064006F00620065002000520065006100640065007200200035002E0030002005D505D205E805E105D005D505EA002005DE05EA05E705D305DE05D505EA002005D905D505EA05E8002E05D005DE05D905DD002005DC002D005000440046002F0058002D0033002C002005E205D905D905E005D5002005D105DE05D305E805D905DA002005DC05DE05E905EA05DE05E9002005E905DC0020004100630072006F006200610074002E002005DE05E105DE05DB05D90020005000440046002005E905E005D505E605E805D5002005E005D905EA05E005D905DD002005DC05E405EA05D905D705D4002005D105D005DE05E605E205D505EA0020004100630072006F006200610074002005D5002D00410064006F00620065002000520065006100640065007200200035002E0030002005D505D205E805E105D005D505EA002005DE05EA05E705D305DE05D505EA002005D905D505EA05E8002E>
/HRV (Za stvaranje Adobe PDF dokumenata najpogodnijih za visokokvalitetni ispis prije tiskanja koristite ove postavke. Stvoreni PDF dokumenti mogu se otvoriti Acrobat i Adobe Reader 5.0 i kasnijim verzijama.)
/HUN <FEFF004b0069007600e1006c00f30020006d0069006e0151007300e9006701710020006e0079006f006d00640061006900200065006c0151006b00e90073007a00ed007401510020006e0079006f006d00740061007400e100730068006f007a0020006c006500670069006e006b00e1006200620020006d0065006700660065006c0065006c0151002000410064006f00620065002000500044004600200064006f006b0075006d0065006e00740075006d006f006b0061007400200065007a0065006b006b0065006c0020006100200062006500e1006c006c00ed007400e10073006f006b006b0061006c0020006b00e90073007a00ed0074006800650074002e0020002000410020006c00e90074007200650068006f007a006f00740074002000500044004600200064006f006b0075006d0065006e00740075006d006f006b00200061007a0020004100630072006f006200610074002000e9007300200061007a002000410064006f00620065002000520065006100640065007200200035002e0030002c0020007600610067007900200061007a002000610074007400f3006c0020006b00e9007301510062006200690020007600650072007a006900f3006b006b0061006c0020006e00790069007400680061007400f3006b0020006d00650067002e>
/ITA <FEFF005500740069006c0069007a007a006100720065002000710075006500730074006500200069006d0070006f007300740061007a0069006f006e00690020007000650072002000630072006500610072006500200064006f00630075006d0065006e00740069002000410064006f00620065002000500044004600200070006900f900200061006400610074007400690020006100200075006e00610020007000720065007300740061006d0070006100200064006900200061006c007400610020007100750061006c0069007400e0002e0020004900200064006f00630075006d0065006e007400690020005000440046002000630072006500610074006900200070006f00730073006f006e006f0020006500730073006500720065002000610070006500720074006900200063006f006e0020004100630072006f00620061007400200065002000410064006f00620065002000520065006100640065007200200035002e003000200065002000760065007200730069006f006e006900200073007500630063006500730073006900760065002e>
/JPN <FEFF9ad854c18cea306a30d730ea30d730ec30b951fa529b7528002000410064006f0062006500200050004400460020658766f8306e4f5c6210306b4f7f75283057307e305930023053306e8a2d5b9a30674f5c62103055308c305f0020005000440046002030d530a130a430eb306f3001004100630072006f0062006100740020304a30883073002000410064006f00620065002000520065006100640065007200200035002e003000204ee5964d3067958b304f30533068304c3067304d307e305930023053306e8a2d5b9a306b306f30d530a930f330c8306e57cb30818fbc307f304c5fc59808306730593002>
/KOR <FEFFc7740020c124c815c7440020c0acc6a9d558c5ec0020ace0d488c9c80020c2dcd5d80020c778c1c4c5d00020ac00c7a50020c801d569d55c002000410064006f0062006500200050004400460020bb38c11cb97c0020c791c131d569b2c8b2e4002e0020c774b807ac8c0020c791c131b41c00200050004400460020bb38c11cb2940020004100630072006f0062006100740020bc0f002000410064006f00620065002000520065006100640065007200200035002e00300020c774c0c1c5d0c11c0020c5f40020c2180020c788c2b5b2c8b2e4002e>
/LTH <FEFF004e006100750064006f006b0069007400650020016100690075006f007300200070006100720061006d006500740072007500730020006e006f0072011700640061006d00690020006b0075007200740069002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b00750072006900650020006c0061006200690061007500730069006100690020007000720069007400610069006b007900740069002000610075006b01610074006f00730020006b006f006b007900620117007300200070006100720065006e006700740069006e00690061006d00200073007000610075007300640069006e0069006d00750069002e0020002000530075006b0075007200740069002000500044004600200064006f006b0075006d0065006e007400610069002000670061006c006900200062016b007400690020006100740069006400610072006f006d00690020004100630072006f006200610074002000690072002000410064006f00620065002000520065006100640065007200200035002e0030002000610072002000760117006c00650073006e0117006d00690073002000760065007200730069006a006f006d00690073002e>
/LVI <FEFF0049007a006d0061006e0074006f006a00690065007400200161006f00730020006900650073007400610074012b006a0075006d00750073002c0020006c0061006900200076006500690064006f00740075002000410064006f00620065002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006100730020006900720020012b00700061016100690020007000690065006d01130072006f00740069002000610075006700730074006100730020006b00760061006c0069007401010074006500730020007000690072006d007300690065007300700069006501610061006e006100730020006400720075006b00610069002e00200049007a0076006500690064006f006a006900650074002000500044004600200064006f006b0075006d0065006e007400750073002c0020006b006f002000760061007200200061007400760113007200740020006100720020004100630072006f00620061007400200075006e002000410064006f00620065002000520065006100640065007200200035002e0030002c0020006b0101002000610072012b00200074006f0020006a00610075006e0101006b0101006d002000760065007200730069006a0101006d002e>
/NLD (Gebruik deze instellingen om Adobe PDF-documenten te maken die zijn geoptimaliseerd voor prepress-afdrukken van hoge kwaliteit. De gemaakte PDF-documenten kunnen worden geopend met Acrobat en Adobe Reader 5.0 en hoger.)
/NOR <FEFF004200720075006b00200064006900730073006500200069006e006e007300740069006c006c0069006e00670065006e0065002000740069006c002000e50020006f0070007000720065007400740065002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e00740065007200200073006f006d00200065007200200062006500730074002000650067006e0065007400200066006f00720020006600f80072007400720079006b006b0073007500740073006b00720069006600740020006100760020006800f800790020006b00760061006c0069007400650074002e0020005000440046002d0064006f006b0075006d0065006e00740065006e00650020006b0061006e002000e50070006e00650073002000690020004100630072006f00620061007400200065006c006c00650072002000410064006f00620065002000520065006100640065007200200035002e003000200065006c006c00650072002000730065006e006500720065002e>
/POL <FEFF0055007300740061007700690065006e0069006100200064006f002000740077006f0072007a0065006e0069006100200064006f006b0075006d0065006e007400f300770020005000440046002000700072007a0065007a006e00610063007a006f006e00790063006800200064006f002000770079006400720075006b00f30077002000770020007700790073006f006b00690065006a0020006a0061006b006f015b00630069002e002000200044006f006b0075006d0065006e0074007900200050004400460020006d006f017c006e00610020006f007400770069006500720061010700200077002000700072006f006700720061006d006900650020004100630072006f00620061007400200069002000410064006f00620065002000520065006100640065007200200035002e0030002000690020006e006f00770073007a0079006d002e>
/PTB <FEFF005500740069006c0069007a006500200065007300730061007300200063006f006e00660069006700750072006100e700f50065007300200064006500200066006f0072006d00610020006100200063007200690061007200200064006f00630075006d0065006e0074006f0073002000410064006f0062006500200050004400460020006d00610069007300200061006400650071007500610064006f00730020007000610072006100200070007200e9002d0069006d0070007200650073007300f50065007300200064006500200061006c007400610020007100750061006c00690064006100640065002e0020004f007300200064006f00630075006d0065006e0074006f00730020005000440046002000630072006900610064006f007300200070006f00640065006d0020007300650072002000610062006500720074006f007300200063006f006d0020006f0020004100630072006f006200610074002000650020006f002000410064006f00620065002000520065006100640065007200200035002e0030002000650020007600650072007300f50065007300200070006f00730074006500720069006f007200650073002e>
/RUM <FEFF005500740069006c0069007a00610163006900200061006300650073007400650020007300650074010300720069002000700065006e007400720075002000610020006300720065006100200064006f00630075006d0065006e00740065002000410064006f006200650020005000440046002000610064006500630076006100740065002000700065006e0074007200750020007400690070010300720069007200650061002000700072006500700072006500730073002000640065002000630061006c006900740061007400650020007300750070006500720069006f006100720103002e002000200044006f00630075006d0065006e00740065006c00650020005000440046002000630072006500610074006500200070006f00740020006600690020006400650073006300680069007300650020006300750020004100630072006f006200610074002c002000410064006f00620065002000520065006100640065007200200035002e00300020015f00690020007600650072007300690075006e0069006c006500200075006c0074006500720069006f006100720065002e>
/RUS <FEFF04180441043f043e043b044c04370443043904420435002004340430043d043d044b04350020043d0430044104420440043e0439043a043800200434043b044f00200441043e043704340430043d0438044f00200434043e043a0443043c0435043d0442043e0432002000410064006f006200650020005000440046002c0020043c0430043a04410438043c0430043b044c043d043e0020043f043e04340445043e0434044f04490438044500200434043b044f00200432044b0441043e043a043e043a0430044704350441044204320435043d043d043e0433043e00200434043e043f0435044704300442043d043e0433043e00200432044b0432043e04340430002e002000200421043e043704340430043d043d044b04350020005000440046002d0434043e043a0443043c0435043d0442044b0020043c043e0436043d043e0020043e0442043a0440044b043204300442044c002004410020043f043e043c043e0449044c044e0020004100630072006f00620061007400200438002000410064006f00620065002000520065006100640065007200200035002e00300020043800200431043e043b043504350020043f043e04370434043d043804450020043204350440044104380439002e>
/SKY <FEFF0054006900650074006f0020006e006100730074006100760065006e0069006100200070006f0075017e0069007400650020006e00610020007600790074007600e100720061006e0069006500200064006f006b0075006d0065006e0074006f0076002000410064006f006200650020005000440046002c0020006b0074006f007200e90020007300610020006e0061006a006c0065007001610069006500200068006f0064006900610020006e00610020006b00760061006c00690074006e00fa00200074006c0061010d00200061002000700072006500700072006500730073002e00200056007900740076006f00720065006e00e900200064006f006b0075006d0065006e007400790020005000440046002000620075006400650020006d006f017e006e00e90020006f00740076006f00720069016500200076002000700072006f006700720061006d006f006300680020004100630072006f00620061007400200061002000410064006f00620065002000520065006100640065007200200035002e0030002000610020006e006f0076016100ed00630068002e>
/SLV <FEFF005400650020006e006100730074006100760069007400760065002000750070006f0072006100620069007400650020007a00610020007500730074007600610072006a0061006e006a006500200064006f006b0075006d0065006e0074006f0076002000410064006f006200650020005000440046002c0020006b006900200073006f0020006e0061006a007000720069006d00650072006e0065006a016100690020007a00610020006b0061006b006f0076006f00730074006e006f0020007400690073006b0061006e006a00650020007300200070007200690070007200610076006f0020006e00610020007400690073006b002e00200020005500730074007600610072006a0065006e006500200064006f006b0075006d0065006e0074006500200050004400460020006a00650020006d006f0067006f010d00650020006f0064007000720065007400690020007a0020004100630072006f00620061007400200069006e002000410064006f00620065002000520065006100640065007200200035002e003000200069006e0020006e006f00760065006a01610069006d002e>
/SUO <FEFF004b00e40079007400e40020006e00e40069007400e4002000610073006500740075006b007300690061002c0020006b0075006e0020006c0075006f00740020006c00e400680069006e006e00e4002000760061006100740069007600610061006e0020007000610069006e006100740075006b00730065006e002000760061006c006d0069007300740065006c00750074007900f6006800f6006e00200073006f00700069007600690061002000410064006f0062006500200050004400460020002d0064006f006b0075006d0065006e007400740065006a0061002e0020004c0075006f0064007500740020005000440046002d0064006f006b0075006d0065006e00740069007400200076006f0069006400610061006e0020006100760061007400610020004100630072006f0062006100740069006c006c00610020006a0061002000410064006f00620065002000520065006100640065007200200035002e0030003a006c006c00610020006a006100200075007500640065006d006d0069006c006c0061002e>
/SVE <FEFF0041006e007600e4006e00640020006400650020006800e4007200200069006e0073007400e4006c006c006e0069006e006700610072006e00610020006f006d002000640075002000760069006c006c00200073006b006100700061002000410064006f006200650020005000440046002d0064006f006b0075006d0065006e007400200073006f006d002000e400720020006c00e4006d0070006c0069006700610020006600f60072002000700072006500700072006500730073002d007500740073006b00720069006600740020006d006500640020006800f600670020006b00760061006c0069007400650074002e002000200053006b006100700061006400650020005000440046002d0064006f006b0075006d0065006e00740020006b0061006e002000f600700070006e00610073002000690020004100630072006f0062006100740020006f00630068002000410064006f00620065002000520065006100640065007200200035002e00300020006f00630068002000730065006e006100720065002e>
/TUR <FEFF005900fc006b00730065006b0020006b0061006c006900740065006c0069002000f6006e002000790061007a006401310072006d00610020006200610073006b013100730131006e006100200065006e0020006900790069002000750079006100620069006c006500630065006b002000410064006f006200650020005000440046002000620065006c00670065006c0065007200690020006f006c0075015f007400750072006d0061006b0020006900e70069006e00200062007500200061007900610072006c0061007201310020006b0075006c006c0061006e0131006e002e00200020004f006c0075015f0074007500720075006c0061006e0020005000440046002000620065006c00670065006c0065007200690020004100630072006f006200610074002000760065002000410064006f00620065002000520065006100640065007200200035002e003000200076006500200073006f006e0072006100730131006e00640061006b00690020007300fc007200fc006d006c00650072006c00650020006100e70131006c006100620069006c00690072002e>
/UKR <FEFF04120438043a043e0440043804410442043e043204430439044204350020044604560020043f043004400430043c043504420440043800200434043b044f0020044104420432043e04400435043d043d044f00200434043e043a0443043c0435043d044204560432002000410064006f006200650020005000440046002c0020044f043a04560020043d04300439043a04400430044904350020043f045604340445043e0434044f0442044c00200434043b044f0020043204380441043e043a043e044f043a04560441043d043e0433043e0020043f0435044004350434043404400443043a043e0432043e0433043e0020043404400443043a0443002e00200020042104420432043e04400435043d045600200434043e043a0443043c0435043d0442043800200050004400460020043c043e0436043d04300020043204560434043a0440043804420438002004430020004100630072006f006200610074002004420430002000410064006f00620065002000520065006100640065007200200035002e0030002004300431043e0020043f04560437043d04560448043e04570020043204350440044104560457002e>
/ENU (Use these settings to create Adobe PDF documents best suited for high-quality prepress printing. Created PDF documents can be opened with Acrobat and Adobe Reader 5.0 and later.)
>>
/Namespace [
(Adobe)
(Common)
(1.0)
]
/OtherNamespaces [
<<
/AsReaderSpreads false
/CropImagesToFrames true
/ErrorControl /WarnAndContinue
/FlattenerIgnoreSpreadOverrides false
/IncludeGuidesGrids false
/IncludeNonPrinting false
/IncludeSlug false
/Namespace [
(Adobe)
(InDesign)
(4.0)
]
/OmitPlacedBitmaps false
/OmitPlacedEPS false
/OmitPlacedPDF false
/SimulateOverprint /Legacy
>>
<<
/AddBleedMarks false
/AddColorBars false
/AddCropMarks false
/AddPageInfo false
/AddRegMarks false
/ConvertColors /ConvertToCMYK
/DestinationProfileName ()
/DestinationProfileSelector /DocumentCMYK
/Downsample16BitImages true
/FlattenerPreset <<
/PresetSelector /MediumResolution
>>
/FormElements false
/GenerateStructure false
/IncludeBookmarks false
/IncludeHyperlinks false
/IncludeInteractive false
/IncludeLayers false
/IncludeProfiles false
/MultimediaHandling /UseObjectSettings
/Namespace [
(Adobe)
(CreativeSuite)
(2.0)
]
/PDFXOutputIntentProfileSelector /DocumentCMYK
/PreserveEditing true
/UntaggedCMYKHandling /LeaveUntagged
/UntaggedRGBHandling /UseDocumentProfile
/UseDocumentBleed false
>>
]
>> setdistillerparams
<<
/HWResolution [2400 2400]
/PageSize [612.000 792.000]
>> setpagedevice
|
| id | nasplib_isofts_kiev_ua-123456789-83489 |
| institution | Digital Library of Periodicals of National Academy of Sciences of Ukraine |
| issn | 0130-5395 |
| language | Russian |
| last_indexed | 2025-12-07T19:03:22Z |
| publishDate | 2014 |
| publisher | Міжнародний науково-навчальний центр інформаційних технологій і систем НАН та МОН України |
| record_format | dspace |
| spelling | Глибовец, А.Н. 2015-06-19T18:02:23Z 2015-06-19T18:02:23Z 2014 Решение задачи распределенного индексирования в оперативной памяти на базе модели актеров с использованием фреймворка Akka / А.Н. Глибовец // Управляющие системы и машины. — 2014. — № 4. — С. 61-67, 72. — Бібліогр.: 18 назв. — рос. 0130-5395 https://nasplib.isofts.kiev.ua/handle/123456789/83489 004.42 Описана программная система построения распределенного координатного индекса в оперативной памяти на базе модели актеров с использованием языка программирования Java и фреймворка Akka. Система позволяет подключать в сеть любое количество машин, легко расширятся и обрабатывать фразовые запросы. Реализованная в системе поддержка репликаций обеспечивает стабильную работу. The distributed solving system for construction of coordinate index in the RAM based on model of actors using Java programming language and framework Akka is described. The system allows to connect any number of machines, it expands easily, allowing to process phrase queries. The system provides ability to replicate that ensures its stable operations. Описано програмну систему побудови розподіленого координатного індексу в оперативній пам’яті на базі моделі акторів з використанням мови програмування Java і фреймворку Akka. Система дозволяє під’єднувати будь-яку кількість машин, легко розширюватися та опрацьовувати фразові запити. Реалізована в системі підтримка реплікації забезпечує стабільну роботу. ru Міжнародний науково-навчальний центр інформаційних технологій і систем НАН та МОН України Управляющие системы и машины Программная инженерия и программные средства Решение задачи распределенного индексирования в оперативной памяти на базе модели актеров с использованием фреймворка Akka Solving the Problem of Distributed Indexing with Memory-Based Model of Actors Using Akka Framework Розв’язання задачі розподіленого індексування в оперативній памя’ті на базі моделі акторів з використанням фреймворку Akka Article published earlier |
| spellingShingle | Решение задачи распределенного индексирования в оперативной памяти на базе модели актеров с использованием фреймворка Akka Глибовец, А.Н. Программная инженерия и программные средства |
| title | Решение задачи распределенного индексирования в оперативной памяти на базе модели актеров с использованием фреймворка Akka |
| title_alt | Solving the Problem of Distributed Indexing with Memory-Based Model of Actors Using Akka Framework Розв’язання задачі розподіленого індексування в оперативній памя’ті на базі моделі акторів з використанням фреймворку Akka |
| title_full | Решение задачи распределенного индексирования в оперативной памяти на базе модели актеров с использованием фреймворка Akka |
| title_fullStr | Решение задачи распределенного индексирования в оперативной памяти на базе модели актеров с использованием фреймворка Akka |
| title_full_unstemmed | Решение задачи распределенного индексирования в оперативной памяти на базе модели актеров с использованием фреймворка Akka |
| title_short | Решение задачи распределенного индексирования в оперативной памяти на базе модели актеров с использованием фреймворка Akka |
| title_sort | решение задачи распределенного индексирования в оперативной памяти на базе модели актеров с использованием фреймворка akka |
| topic | Программная инженерия и программные средства |
| topic_facet | Программная инженерия и программные средства |
| url | https://nasplib.isofts.kiev.ua/handle/123456789/83489 |
| work_keys_str_mv | AT glibovecan rešeniezadačiraspredelennogoindeksirovaniâvoperativnoipamâtinabazemodeliakterovsispolʹzovaniemfreimvorkaakka AT glibovecan solvingtheproblemofdistributedindexingwithmemorybasedmodelofactorsusingakkaframework AT glibovecan rozvâzannâzadačírozpodílenogoíndeksuvannâvoperativníipamâtínabazímodelíaktorívzvikoristannâmfreimvorkuakka |