Индексатор. Первые итоги.
Пару часов назад закончил работу над первой стабильной версией индексатора. Скорость его работы не особо впечатляет: в 10 потоках из сети загружается около 100 страниц в минуту на средней скорости 75 килобайт в секунду.При этом загрузка двухъядерного процессора составляет от 40 до 100 процентов, а температура каждого из ядер достигает 60 градусов. Придется придумывать дополнительные средства для охлаждения. Скорее всего это будет просто дополнительный вентилятор на выдув.
На момент написания этих строк было загружено 4994 страницы, а в очереди на индексацию находятся еще 48256 страниц. Если учесть текущую скорость, то до достижения отметки в 10 миллионов страниц мне потребуется всего навсего 69 дней непрерывной закачки. В общем, не так и много.
Но время - это ведь не все, что мне потребуется. Для хранения данных мне потребуется место на диске. Эти 4994 страницы занимают 350 мегабайт места. Можно сделать предположение, что при базировании исходных данных на таком количестве файлов погрешность подсчетов будет достаточно мала. Поэтому, я полагаю, что для хранения этих десяти миллионов страниц мне потребуется около 700 гигабайт места на диске. На текущем диске осталось всего 180 гигабайт свободного места, так что вскоре мне потребуется очищать его, чтобы все данные поместились на одном диске. В дальнейшем я разнесу хранилище на разные диски, которые мне еще придется купить, а пока что пусть все накапливается там, где есть место.
Кстати, пока писал, количество загруженных страниц достигло шести тысяч, а очередь на индексацию увеличилась на 19 тысяч, достигнув значения в 67 тысяч страниц. Количество серверов, с которых эти страницы будут загружаться тоже увеличилось с 1800 до 3000 штук.
Теперь о том, что нужно будет сделать в индексаторе, чтобы он соответствовал индустриальным стандартам.
- сохранять время загрузки каждой из страниц. Это нужно для того, чтобы в дальнейшем в первую очередь загружать страницы с более быстрых серверов, оставляя более медленные сервера на закуску.
- реализовать балансировку загрузки, чтобы не перегружать одни и те же сервера сотнями запросов в минуту. Впрочем, сто запросо в минуту - не так и много даже для самого дохлого сервера.
- расширить статистику по загружаемым страницам и по их серверам. Опять же нужно для нормальной балансировки.
- реализовать механизм динамеческого переопределения места для хранилища. Это позволит мгновенно перенаправлять потоки файлов в нужные места, в том числе и на сетевые диски.
- реализовать сжатие сохраняемых файлов. Это позволит сэкономить от 20 до 50 процентов места. Правда, это увеличит время последующей обработки этих файлов, так что нужно будет еще подумать над тем, чтобы реализовать этот механизм наиболее правильно.
- увеличить скорость загрузки страниц, чтобы использовался весь доступный входящий канал. Сейчас он у меня 2 мегабита в секунду, или 240 килобайт в секунду. В нстоящий момент используется всего лишь 25% канала.
Как можно заметить, задач осталось больше, чем сделано. И это при том, что я описал только задачи только для индексатора. В общем, работы еще непочатый край. Правда, пока странички грузятся (а до первой вехи в 10 миллионов страниц у меня как минимум два с половиной месяца), у меня будет возможность поработать как над архитектурой этого проекта, так и доделать кое что из задач, оставшихся для синонимайзера.



Последние комментарии