Мы выяснили, что механизм накопления данных имеет распределенную структуру и
извлечение каждого документа сопровождается как минимум четырьмя сетевыми
взаимодействиями: CA получает информацию от DS об объекте сканирования, CA
извлекает объект сканирования с внешнего сервера, CA передает
компрессированное содержание документа AS и CA сообщает о результатах работы
DS, получая при этом описание нового объекта сканирования. Реально на один
документ происходит больше взаимодействий с различными подсистемами знаний.
Например, после сканирования ресурса с именем http://xxx.yyy.zzz может
оказаться, что его содержание идентично содержанию ресурса, находящегося по
адресу http://aaa.bbb.ccc, и какая-то подсистема должна это определить во
избежание хранения ненужного количества дублей по характеристике MD5
документа. Заметим однако, что пока мы только рассматривали систему
накопления, не касаясь других системам движка. Однако уже на данном
этапе становится ясным, что для успешного взаимодействия компонент системы
требуется некий общий язык, на котором смогут "разговаривать" ее элементы.
Для этих целей был разработан специальный протокол Search System Transfer Protocol (SSTP), полная
спецификация которого приведена в соответствующей документации SSTP/1.0.
Желающие могут ознакомиться с ней в полном объеме. Здесь же приведем только
его базовые положения.
SSTP является текстовым протоколом. Связано это с тем, что архитектура
вычислительной техники может быть различной, и двоичные данные
интерпретируются такими компьютерами по-разному. Протокол очень напоминает
известный HTTP-протокол как протокол запросов и ответов. В рамках протокола
сообщение состоит из заголовка, описывающего код запроса, типы данных и
прочее в виде привычных пар параметр:значение. Коды запросов и ответов
стандартизованы и полностью описаны в документации на SSTP, равно как и
обозначения параметров и их возможные значения для различных кодов запросов.
Все коды запросов и ответов HTTP входят в спецификацию SSTP без изменений. В
рамках одной сессии возможно прохождение нескольких запросов и ответов.
Несмотря на свою текстовую природу, SSTP позволяет передавать и двоичные
данные, при условии, что полное описание их структуры содержится в текстовой
части заголовка. Заголовок от данных отделяется пустой строкой
(последовательностью символов CR/LF/CR/LF). Передача двоичных данных будет в
дальнейшем рассмотрена на примере взаимодействия нескольких Процессоров
Поиска (Search Processors) в процессе нахождения результатов,
соответствующих поисковым критериям. Пока этих знаний нам достаточно.