| |
Практическая часть. Алгоритм добавления и выполнения задачи
I Новая задача
- К какому RIR 'у принадлежит ip -адрес
- Если принадлежит Ripe / Apnic
- Поиск в КЭШе сети, к которой принадлежит ip -адрес
- Если сеть существует и её статус ASSIGNED , то
- Поиск в КЭШе персоны, nichdl которой равен tech - c найденной сети.
- Если такая персона найдена
- Разрешение уже выполнено.
- Иначе Добавление Задачи ( ip -адрес).
Добавление Задачи в Список Задач
- Проверка по Таблице Списков Задач, нужно ли создать новый Список Задач. Задача добавляется в Список, который соответствует текущему дню.
- Добавление задачи.
- Пересчет минимального приоритета неразрешённых задач в текущем Списке Задач. Изменение этого значения в Таблице Списков.
II Выполнение задачи
- Выбор того Списка Задач, который содержит неразрешённую задачу с минимальным приоритетом.
- Если такой Список есть
- Выбираем задачу с минимальным приоритетом из этого списка
- Если за последнюю минуту количество запросов к данному серверу <= N
- Выполняем запрос по данным задачи
- Запоминаем время выполнения запроса (вне зависимости от успешности)
- Если ответ от сервера получен
- Если задачи в текущем Списке Задач ещё остались, то пересчитываем для Списка Задач значение минимального приоритета
- Записываем время ответа сервера
- Иначе помечаем, что все задачи в этом Списке выполнены
- Если запрос поступил по ip -адресу
- Смотрим, содержится ли в КЭШе информация о сети
- Если не содержится
- Разбираем ответ от сервера и добавляем запись об этой сети
- Смотрим, содержится ли в КЭШе информация о персоне (атрибут tech - c в объекте inetnum , полученном в качестве ответа)
- Если не содержится, то Добавление Задачи ( tech - c )
- Если запрос поступил по персоне
- Если в КЭШе информация о персоне не содержится
- Разбираем ответ от сервера и добавляем запись о персоне
- *Поиск по базе городов – заполнение поля city *
Работа с задачами разделена на две части – добавление задачи(I) и выполнение(II).
Очередь задач сформирована при помощи Списков Задач и Таблицы Задач.
Задачи хранятся в Списках Задач – таблицах, которые содержат задачи, поступившие в определённый день. Таблицы имеют соответствующие имена, например таблица task20040601 содержит задачи, которые поступили 1-го июня 2004 года. Информация об этих таблицах (название; дата создания; флаг – есть ли неразрешённые задачи; минимальный приоритет неразрешённых задач) содержится в Таблице Списков.
Задача добавляется в Список, соответствующий текущему дню. Т.е. при добавлении необходимо проверить, нужно ли создавать новый Список Задач.
При разрешении ищем по Таблице Списков тот Список, который содержит задачу с минимальным приоритетом. После разрешения необходимо проверить, не содержатся ли уже в КЭШе данные, которые мы получили. Такая ситуация возможна и не является ошибкой. При добавлении ip-диапазона возникает такая ситуация, если этот диапазон имеет статус, отличный от ASSIGNED. При добавлении персоны – если на неё ссылаются несколько объектов inetnum.
Если после разрешения задач в этом Списке нет – этот Список помечается как разрешённый (если только он не соответствует текущему дню; Список, соответствующий текущему дню по умолчанию не является разрешённым).
Блок, добавляющий задачу, только добавляет записи в Список и Таблицу; в Таблице он также может изменять поле последней записи о значении минимального приоритета в данном Списке.
Блок, выполняющий задачу, только удаляет записи из Списков; в Таблице он может менять поле о значении минимального приоритета и флаг, означающий разрешённость Списка.
Списки, отмеченные как разрешённые, могут быть изъяты из системы без всяких последствий, так как с ними не работает ни один из блоков.
При однократном запуске блока I добавляется одна задача – по полю inetnum.
Задачи, которые содержатся в Списках, не подобны изначальной задаче. Они являются основой для составления запроса к whois-серверу. Т.е. изначальная задача здесь состоит из двух: 1) запрос по inetnum, 2) запрос по tech-c. Таким образом, при однократном запуске блока II, исходная задача в лучшем случае будет выполнена полностью. В худшем – будет выполнен запрос только по inetnum.
Условие, написанное в строке (4) обозначает, что необходимо ограничивать количество запросов к одному whois-серверу. Вообще, необходимо ограничивать количество запросов по объектам, содержащим личные данные. Однако, в связи с тем, что ограничения по количеству запросов за определённый промежуток времени, могут в будущем коснуться и других объектов, то можно проверять данный параметр, как по отдельным объектам данного сервера, так и по серверу в целом.
|
|