![]() |
Добавить Архитектура Запросы сейчас Цифры и факты FAQ Кнопка поиска Сделать стартовой |
![]() |
Программа References Server -- refererd vs/1.0
Статус этого документа
Этот документ описывает принципы работы, процедуру установки и настройки сервера выдачи информации об ID объектов и их ссылках друг на друга. Документ предназначен для служебного использования. Документ подразумевает предварительное знакомство с протоколом обмена компонент поисковой системы Search System Transfer Protocol и должен рассматриваться в совокупности с ним.Copyright Notice
Copyright © Stack Technologies Ltd. (2001). All Rights Reserved.
Содержание.
1. Назначение. Сервер перекрестных ссылок References Server (RS) входит в состав комплекса информационно-поисковой системы Turtle. Основным назначением сервера является взаимодействие с клиентскими программами посредством SSTP протокола и выдача им результатов запроса, касающихся определения ID документов, ссылающихся друг на друга. Полученные от RS данные используются другими компонентами поисковой системы для отображения результатов поиска.
- 1. Назначение.
- 2. Принципы работы.
- 3. Установка.
- 4. Настройка и запуск.
- 5. Список параметров конфигурации.
- 6. Пример конфигурационного файла.
Базы данных, поддерживаемые RS, используются также для получения исходных данных при вычислении PageRank документов. 2. Принципы работы. Программа RS устанавливается физически на том же сервере, где находится центральный диспетчер (DS), т.к. именно DS производит выделение новых уникальных ID для вновь поступающих ссылок и имеет знания о том, какой из документов (его ID) породил новые ссылки и соответствующие им ID документов.
Допускается установка сервера и на любой другой компьютер, при этом необходимо позаботиться об актуальности перенесения индекса баз данных диспетчера, определенных в его конфигурации как "refdb" и "hubsdb" т.е. на каждом шаге итерации обновления индексов следует копировать указанные базы на требуемый сервер. Кроме того, в процессе работы серверу требуются базы диспетчера (DS) urlsdb, srvdb - очевидно, что их перенос надо также организовать с компьютера, на котором работает центральный диспетчер.
Сферой ответственности RS является быстрое извлечение из требуемой базы ID документов, на которые ссылается данный документ (или сервер в целом) или наоборот, извлечение из базы ID документов, которые ссылаются на данный документ (или сервер в целом). В качестве параметров запроса может фигурировать как ID документа, так и его каноническое имя URL. Взаимодействие с другими приложениями осуществляется посредством Search System Transfer Protocol (см. SSTP/1.0).
Данные хранятся в базах данных на основе пакета BerkeleyDB vs.3.3.11 и выше. База данных определена как BTREE (см. документацию BerkeleyDB) с возможностью дупликации ключей DB_DUP. Ключом и значением каждой записи является 32-х разрядное беззнаковое число (ID - документа). Таким образом, последовательно доступившись до всех записей с ключом равным N в базе данных refdb можно узнать все ID документов, на которые имеет ссылки документ с номером N. Аналогичные действия с базой hubsdb дадут знания обо всех документах, которые имеют ссылки на документ с идентификатором N. В этом смысле базы refdb и hubsdb являются реверсными друг для друга и имеют следующее строение:
Key: u_int32_t ID документа Data: u_int32_t ID документаRS обслуживает следующие SSTP типы запросов:
Параметрами первых двух запросов являются:
- REQ_GET_REFERENCES
- Выдать ID документов, на которые ссылается данный документ.
- REQ_GET_REFERERS
- Выдать ID документов, которые ссылаются на данный документ.
- REQ_GET_SITEREFERENCES
- Выдать ID документов, на которые ссылаются страницы сервера, исключая ссылки на другие страницы этого же сайта (ссылки на внешние документы).
- REQ_GET_SITEREFERERS
- Выдать ID документов, которые ссылаются на документы сервера, исключая собственные страницы сайта (внешние ссылки на сайт).
- REQ_GET_URLBYNAME
- Выдать описание ресурса согласно затребованному URL.
Параметрами вторых двух запросов могут являться:
- HEADER_URI_ID
- идентификатор искомого документа (если известен).
- HEADER_URL
- имя интересующего ресурса. Если определен предыдущий параметр, то используется он.
- HEADER_NUMRESULTS
- Интересующее количество результатов.
- HEADER_START_RESULTS
- Порядковый номер первого из интересующих результатов выборки.
Сервер RS возвращает в параметре HEADER_NUMFOUND общее количество найденных ID документов и в параметрах HEADER_URI_ID найденные идентификаторы. В параметрах HEADER_NUMRESULTS и HEADER_START_RESULTS сервер указывает количество возвращенных в текущую сессию результатов и стартовую позицию в массиве найденных документов соответственно.
- HEADER_SERVER_ID
- Идентификатор сервера (если известен).
- HEADER_URL
- Имя сервера в Интернет представлении. Если будет указан первый параметр, то он имеет более высокий приоритет и будет использован именно он. В качестве имени сервера может быть определен и полный URL какого-либо ресурса, при этом RS произведет самостоятельно анализ URL и извлечет из него требуемое имя сервера.
- HEADER_NUMRESULTS
- Количество интересующих результатов.
- HEADER_START_RESULTS
- Порядковый номер первого из интересующих результатов в выборке.
Внимание1: сервер не обнаружил ссылок на данный документ (или ссылок документа на другие документы - в зависимости от типа запроса), то кодом ответа сервера может являться код запроса. В параметре количества найденных документов при этом будет указан '0'. Кодом ответа сервера также может являться и REQ_PUT_NOT_FOUND.
Внимание2: в текущей реализации сервер возвращает не сортированные документы по релевантности т.к. не известен критерий релевантности. В качестве критерия можно было бы использовать соответствующие pagerank страниц, но в настоящий момент RS "не знает" их значений. Для реализации этого необходима доработка программы на предмет взаимодействия (передачи) вновь вычисленных pageranks серверу RS от вычисляющей программы. Это может быть помечено как TODO. Внимание3: в текущей реализации под каноническим именем сервера понимается совокупность имени и номера порта, т.е. site.name:80 и site.name:81 для системы считаются разными серверами.
Запрос REQ_GET_URLBYNAME в качестве параметра должен содержать обязательное поле HEADER_URL. Выходными параметрами SSTP ответа будет совокупность полей, описывающая объект, и содержащая в себе:
- HEADER_URI_ID
- HEADER_SERVER_ID
- HEADER_SERVER_PROTOCOL
- HEADER_SERVER_NAME
- HEADER_SERVER_PORT
- HEADER_URI
- HEADER_URI_TIME
- HEADER_URL_CHECKTIME
- HEADER_URI_LEN
Web-интерфейс к RS имеет следующие возможности:
3. Установка. Исходные тексты сервера находятся в дистрибутиве системы и собираются вместе с другими компонентами в работающую программу путем выполнения команды make в корне исходных текстов дистрибутивов. Для сборки отдельно только сервера RS необходимо сначала собрать библиотеку libturtle.a, а затем сам сервер с помощью команд:
- http://referer.site:referer_port/stat
- показывает текущую статистику сервера, требует базовой HTTP и SSTP авторизации.
- http://referer.sizte:referer_port/reload
- производит перечитывание конфигурационных параметров файла referrer.cf и инициализирует новые значения из него.
- http://referer.site:referer_port/clean
- производит очистку текущих данных статистики.
cd /where_is_dist_home/src/lib make cd ../dispatcher make refererd4. Настройка. Сервер запускается посредством команд:
cd /referer_home_dir /where_is_referer_prog/refererdЭту последовательность можно включить в файл начальной загрузки компьютера (например, /etc/rc.local), чтобы при перезагрузке компьютера сервер автоматически запускался на данной машине. Программа может быть запущена с ключом:
-c other_config_fileпри этом конфигурация запуска зачитывается из указанного файла. Если программа запускается без ключей, то конфигурационные параметры будут зачитываться из файла referer.cf в текущей директории. Этот файл следует подготовить с помощью редактора текстов до запуска серверной программы.
Правила оформления конфигурационного файла следующие:
Программа воспринимает следующие внешние сигналы:
- Любая строка, начинающаяся с символа '#' считается комментарием.
- Комментарии также могут быть определены в той строке, в которой определен параметр, началом комментария считается символ '#'.
- Каждая строка файла определяет один параметр.
- Имя параметра отделяется от его значения с помощью символа '=' и произвольного количества space пробелов или символов табуляции.
- Имя параметра не зависит от регистра символов, значение параметров всегда регистрозависимое.
- Любой параметр может быть опущен в конфигурационном файле, при этом будет использовано значение по умолчанию.
- Порядок следования конфигурационных параметров не имеет значения.
Кроме того, при получении сигналов ошибки программы SIGBUS, SIGILL, SIGSEGV, SIGQUIT программа оставляет в домашней директории core файл и шлет сообщение администратору системы об ошибке в программе по SMTP на адрес, указанный в конфигурации. Посылка таких сообщений может быть запрещена в отладочных целях с помощью конфигурационного параметра sendmessages=0 (см. ниже). 5. Список параметров конфигурации. Ниже приведен список используемых конфигурационных параметров сервера VS и краткое их описание:
- SIGHUP
- производится ротация logfile и перезачитывается конфигурация. Полезно при изменении конфигурации сервера на лету.
- SIGTERM
- выполнение программы немедленно прекращается.
- SIGUSR1
- сервер пытается отработать все полученные запросы и останавливает свою работу.
6. Пример конфигурационного файла.
- rootdir = /some/directory
- Корневая директория сервера RS, относительно которой могут быть определены все остальные директории или имена файлов. Если имя файла начинается с символа '/', то считается, что в конфигурации указывается абсолютный путь к файлу, иначе считается, что имя файла будет определено относительно rootdir. Значение по умолчанию: /usr/local/turtle
- dispatchername = dispatcher-001.turtle.ru
- Каноническое Интернет имя или IP адрес сервера Dispatcher Server (DS), необходимо для зачитывания общих для поисковой системы конфигурационных параметров (например, списка разрешенных для соединения машин и пр.) Если общие конфигурационные параметры по каким-либо причинам не могут быть получены от DS (например, он просто не запущен), то будет произведена попытка зачитать их из локальных файлов конфигурации, определенных ниже. Значение по умолчанию: dispatcher-001.turtle.ru
- port = 3320
- Номер порта, по которому может быть произведено соединение с центральным диспетчером. Значение по умолчанию: 3320.
- referername = referer-001.turtle.ru
- Каноническое имя или IP адрес сервера, на котором запускается данная программа. Если компьютер имеет несколько имен и/или адресов, то принимать запросы он будет только при обращении к указанному в этом поле имени. Значение по умолчанию: referer-001.turtle.ru.
- refererport = 3324
- Номер порта, по которому данный сервер будет принимать SSTP запросы, и посылать ответы на них. Необходимо конфигурировать так это значение, чтобы оно не вступало в конфликт с другими компонентами поисковой системы или иными серверными программами, запущенными в пределах данного компьютера. Значение по умолчанию: 3324.
- progname = refererd
- Префикс для занесения учетных записей в журнал работы программы (logfile). Если различными компонентами системы используется общий журнал, то данный префикс позволит отличить записи данного сервера от других. Программное обеспечение также может быть откомпилировано с ключом компиляции -DUSE_SYSLOG. При этом записи будут производиться как в указанный logfile, так и используя syslog. При сборке пакета с ключом компиляции -DLOG_DAYTIME в журнал работы вместе с каждой записью будет занесено текущее время. По умолчанию, данная функция отключена. Значение по умолчанию: берется из имени запускаемой программы argv[0].
- logfile = logs/referer.log
- Имя файла журнала работы программы. Значение по умолчанию: logs/turtled.log
- pidfile = logs/referer.pid
- Имя файла, в котором будет помещен идентификатор процесса - его номер в таблице процессов системы. Полезен администратору для написания скриптов посылки сигналов программе (например, SIGHUP). Значение по умолчанию: logs/turtled.pid
- allowdb = conf/hosts.allow
- Имя файла локально разрешенных для обслуживания запросов внешних машин. Если при старте программе не удалось получить список шаблонов разрешенных для обслуживания машин от центрального диспетчера, то будет произведена попытка зачитать такие шаблоны из указанного в данном поле файла. Файл устроен так, что каждая строка содержит один шаблон, который оформляется так, как это используется в shell (например: 192.168.3.* или *.turtle.ru). Значение по умолчание: conf/hosts.allow.
- pwfile = conf/turtle.passwd
- Файл описания известных системе пользователей и их идентификационной информации при использовании базовой SSTP идентификации. Файл создается и редактируется с помощью программы turtle_passwd с различными ключами. В настоящий момент базовая SSTP идентификация в рамках взаимодействия QP и VS не производится, и данные этого файла используются только для идентификации при запросе статистики сервера по HTTP. Подразумевается, что VS находится за брандмауэром локальной сети и доступ к нему может быть осуществлен только QP по локальной сети. Содержание файла используется сервером, в случае если данные идентификации не могут быть получены от центрального диспетчера DS. Значение по умолчанию: conf/turtle.passwd.
- version = 1.0
- Текущая версия программного обеспечения. Поле носит информативный характер. В дальнейшем, значение этого поля планируется использовать для обеспечения программной совместимости компонент поисковой системы.
- maintainer = admin@e-mail.address
- Почтовый e-mail адрес администратора системы для посылки критических сообщений о работе программы.
- user = turtle
group = turtle- Имя и группа пользователя, от имени которого будет выполняться программа. Если программа запускается от имени суперпользователя, то ее привилегии будут изменены на указанные в этих полях привилегии из соображения безопасности для самой операционной системы. С использованием этих значений можно допускать автоматический запуск программы при рестарте компьютера, на котором установлен сервер VS. Значения по умолчанию: turtle/turtle.
- maxclients = 512
- Максимальное количество одновременно обслуживаемых запросов системой. Это значение не должно превышать максимального значения файловых дескрипторов, разрешенных операционной системой для данного пользователя. Если значение превышает максимально разрешенное, то оно будет уменьшено до правильного значения. Чрезмерное увеличение этого параметра без надобности может приводить к небольшой потере производительности. Уменьшение ниже требуемой величины приведет к отказу в обслуживании некоторых запросов. Рекомендованное значение 512. Значение по умолчанию: 8192.
- readtimeout = 60
sendtimeout = 60- Таймауты системы для приема запросов и пересылки ответов от VS к QP. Если по истечению указанного периода в секундах запрос не удалось принять или ответ не удалось послать, то данное соединение закрывается.
- chroot = 0
- При запуске системы в целях безопасности программа может выполнить функцию chroot(). При этом, все содержимое каталогов, расположенных выше по дереву станет для программы недоступным. Текущей директорией и корнем станет директория, которая указана в параметре rootdir. Работоспособность данного параметра не проверялась, но особых препятствий не видно. Указанные действия осуществляются, если в данном поле определено значение, отличное от 0. Значение по умолчанию: 0.
- sendmessages = 1
- Данный параметр определяет посылать или нет сообщения по электронной почте администратору системы в случае критических ошибок.
- scanuser = user_name
scanpass = user_password- Имя пользователя и пароль, используемые для базовой SSTP идентификации при обращении к центральному диспетчеру. Подробнее см. SSTP/1.0. Значения данных полей будут посланы сервером VS центральному диспетчеру DS при запуске программы для получения общих конфигурационных параметров. Если со стороны диспетчера идентификация не будет произведена, то DS ответит кодом 403 FORBIDDEN. При этом VS попытается прочесть конфигурационные параметры из локальных файлов (см. выше).
- debuglevel = 40
- Уровень занесения информации в журнал работы (см. src/include/turtle_defs.h). Самый низкий уровень D_CRIT (10) - в журнал будут записаны только сообщения о критических ошибках, самый высокий - D_PROTOCOL, при этом в журнал будет занесено очень много отладочной информации, включая протокол сетевого обмена. Рекомендуемое значение:40-50.
- urldb = base/url.db
- Имя базы данных URL сканирования, поддерживаемой центральным диспетчером. Необходима для определения ID документа по его каноническому имени URL. Данной программой база используется только для чтения.
- srvdb = base/srv.db
- Имя базы данных серверов, поддерживаемой центральным диспетчером. Необходима для определения ID сервера по его каноническому имени. Используется только на чтение.
- hubsdir = base/hubs
- Имя директории, в которой находится база данных обратных ссылок hubsdb. Эта директория не совпадает с основной директорией DS и RS в целях разнесения ENVIRONMENT BerkeleyDB.
- hubsdb = hubs.db
- Имя реверсной базы данных hubsdb относительно предыдущего параметра hubsdir. Сервером эта база также используется только на чтение в текущей реализации.
# # turtle referer daemon configuration file # rootdir = /turtle # work home tmpdir = tmp # temporary files directory dispatchername = dispatcher-001.turtle.ru # my hostname port = 3320 # dispatcher port referername = dispatcher-001.turtle.ru refererport = 3324 progname = refererd # programm name to log # urldb = base/url.db # main URLs base file srvdb = base/srv.db # servers base file refdb = base/refs.db # references for pagerank base hubsdir = /turtle/base/hubs hubsdb = hubs.db # allowdb = conf/hosts.allow # hosts allow to connect pwfile = conf/turtle.passwd # scanners passwd base logfile = logs/refererd.log # where to save logs pidfile = logs/refererd.pid # proccess PID file # version = 1.0 # current version number maintainer = turtle-admin@dispatcher-001.turtle.ru # user = turtle # owner of the started proccess group = turtle # group of the owner debuglevel = 80 # how meny debug info to write maxclients = 512 # max connection at a time readtimeout = 60 # timeout to read from a socket sendtimeout = 60 # timeout to write to a socket connectimeout = 30 # timeout to connect to HTTP server chroot = 0 # do chrot() or not sendmessage = 0 # send critical alerts to maintainer? # scanuser = namefromadmin # username to send archiver scanpass = abrakadabra # and password
![]() |
![]() |
![]() | |
![]() |
![]() |
![]() |
![]() |
Черепаший Ранк. Реклама на Turtle Логотипы Правовая информация Конфиденциальность Контакты |
![]() |
![]() |
![]() ![]() ![]() |