на главную    
     
 
  Проект | Содержание | Заключение  
   
 

Практическая часть.
Алгоритм добавления и выполнения задачи

I
Новая задача

  1. К какому RIR 'у принадлежит ip -адрес
  2. Если принадлежит Ripe / Apnic
  3. Поиск в КЭШе сети, к которой принадлежит ip -адрес
  4. Если сеть существует и её статус ASSIGNED , то
  5. Поиск в КЭШе персоны, nichdl которой равен tech - c найденной сети.
  6. Если такая персона найдена
  7. Разрешение уже выполнено.
  8. Иначе Добавление Задачи ( ip -адрес).

Добавление Задачи в Список Задач

  1. Проверка по Таблице Списков Задач, нужно ли создать новый Список Задач. Задача добавляется в Список, который соответствует текущему дню.
  2. Добавление задачи.
  3. Пересчет минимального приоритета неразрешённых задач в текущем Списке Задач. Изменение этого значения в Таблице Списков.

II
Выполнение задачи

  1. Выбор того Списка Задач, который содержит неразрешённую задачу с минимальным приоритетом.
  2. Если такой Список есть
  3. Выбираем задачу с минимальным приоритетом из этого списка
  4. Если за последнюю минуту количество запросов к данному серверу <= N
  5. Выполняем запрос по данным задачи
  6. Запоминаем время выполнения запроса (вне зависимости от успешности)
  7. Если ответ от сервера получен
  8. Если задачи в текущем Списке Задач ещё остались, то пересчитываем для Списка Задач значение минимального приоритета
  9. Записываем время ответа сервера
  10. Иначе помечаем, что все задачи в этом Списке выполнены
  11. Если запрос поступил по ip -адресу
  12. Смотрим, содержится ли в КЭШе информация о сети
  13. Если не содержится
  14. Разбираем ответ от сервера и добавляем запись об этой сети
  15. Смотрим, содержится ли в КЭШе информация о персоне (атрибут tech - c в объекте inetnum , полученном в качестве ответа)
  16. Если не содержится, то Добавление   Задачи ( tech - c )
  17. Если запрос поступил по персоне
  18. Если в КЭШе информация о персоне не содержится
  19. Разбираем ответ от сервера и добавляем запись о персоне
  20. *Поиск по базе городов – заполнение поля city *

Работа с задачами разделена на две части – добавление задачи(I) и выполнение(II).

Очередь задач сформирована при помощи Списков Задач и Таблицы Задач.

Задачи хранятся в Списках Задач – таблицах, которые содержат задачи, поступившие в определённый день. Таблицы имеют соответствующие имена, например таблица task20040601 содержит задачи, которые поступили 1-го июня 2004 года. Информация об этих таблицах (название; дата создания; флаг – есть ли неразрешённые задачи; минимальный приоритет неразрешённых задач) содержится в Таблице Списков.

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

При разрешении ищем по Таблице Списков тот Список, который содержит задачу с минимальным приоритетом. После разрешения необходимо проверить, не содержатся ли уже в КЭШе данные, которые мы получили. Такая ситуация возможна и не является ошибкой. При добавлении ip-диапазона возникает такая ситуация, если этот диапазон имеет статус, отличный от ASSIGNED. При добавлении персоны – если на неё ссылаются несколько объектов inetnum.

Если после разрешения задач в этом Списке нет – этот Список помечается как разрешённый (если только он не соответствует текущему дню; Список, соответствующий текущему дню по умолчанию не является разрешённым).

Блок, добавляющий задачу, только добавляет записи в Список и Таблицу; в Таблице он также может изменять поле последней записи о значении минимального приоритета в данном Списке.

Блок, выполняющий задачу, только удаляет записи из Списков; в Таблице он может менять поле о значении минимального приоритета и флаг, означающий разрешённость Списка.

Списки, отмеченные как разрешённые, могут быть изъяты из системы без всяких последствий, так как с ними не работает ни один из блоков.

При однократном запуске блока I добавляется одна задача – по полю inetnum.

Задачи, которые содержатся в Списках, не подобны изначальной задаче. Они являются основой для составления запроса к whois-серверу. Т.е. изначальная задача здесь состоит из двух: 1) запрос по inetnum, 2) запрос по tech-c. Таким образом, при однократном запуске блока II, исходная задача в лучшем случае будет выполнена полностью. В худшем – будет выполнен запрос только по inetnum.

Условие, написанное в строке (4) обозначает, что необходимо ограничивать количество запросов к одному whois-серверу. Вообще, необходимо ограничивать количество запросов по объектам, содержащим личные данные. Однако, в связи с тем, что ограничения по количеству запросов за определённый промежуток времени, могут в будущем коснуться и других объектов, то можно проверять данный параметр, как по отдельным объектам данного сервера, так и по серверу в целом.

 
     
  Проект | Содержание | Заключение