Пожалуйста, обратите внимание, что пользователь заблокирован
Задумался над таким вопросом. Вот есть у нас ботнет, который, к примеру, брутит к чему-то там пароли (архивы, хэши, цмски). Есть бот, который устанавливается на машине юзера, получает с админки список паролей, и перебирает; и есть админка, которая собственно, контролирует успешные/неуспешные попытки, выдает пароли и так далее.
Вопрос вот в чем - как грамотно синхронизировать выдачу этих самых паролей ботам? Вот есть у нас, допустим, файл на 100кк различных английских слов. И есть 3-5к ботов. Как распределить это все грамотно между ними? Где хранить пароли в админке,чтобы не пришлось каждый раз перечитывать весь этот огромный файл?
Я вижу несколько вариантов:
1. Разбить большой файл на десятки/сотни небольших (допустим, по тысячи или около того слов), вести в админке учет, вида - file1.txt отдали, file2.txt свободен.
Самое простое решение,но и самое примитивное.
2. Загрузить файл в базу данных - в плане, или создать базу на миллионы записей varchar/char с максимальной оптимизацией для выборки, либо разделить, опять таки, на записи по несколько сотен и тысяч слов, и их хранить в базе.
Это решение более интересное, позволяет вести какую-то статистику, добавлять/удалять данные, но - доп. нагрузка на базу , и сам факт поддержки еще Mysql. + надо грамотно споектировать таблицы (индексы и все такое).
3. Использовать HTTP Range. Что это такое - см. в гугле,вкратце - это заголовок , который позволяет получить не весь документ, а допустим, байты с 300 по 500, 200 байтов с конца файла и так далее. Т.е. алгос такой - бот отправляет запрос в админку,ему идет ответ в виде диапазона, отправляет этот диапазон файлу со словами, получает данные.
С одной стороны, решение очень простое, не надо ни с чем морочиться, разбивать файлы. С другой - все ли вебсервера его поддерживают? (Apache точно, nginx - хз), и главное - как это скажется на производительности при файлах на сотни миллионов записей?
Вопрос вот в чем - как грамотно синхронизировать выдачу этих самых паролей ботам? Вот есть у нас, допустим, файл на 100кк различных английских слов. И есть 3-5к ботов. Как распределить это все грамотно между ними? Где хранить пароли в админке,чтобы не пришлось каждый раз перечитывать весь этот огромный файл?
Я вижу несколько вариантов:
1. Разбить большой файл на десятки/сотни небольших (допустим, по тысячи или около того слов), вести в админке учет, вида - file1.txt отдали, file2.txt свободен.
Самое простое решение,но и самое примитивное.
2. Загрузить файл в базу данных - в плане, или создать базу на миллионы записей varchar/char с максимальной оптимизацией для выборки, либо разделить, опять таки, на записи по несколько сотен и тысяч слов, и их хранить в базе.
Это решение более интересное, позволяет вести какую-то статистику, добавлять/удалять данные, но - доп. нагрузка на базу , и сам факт поддержки еще Mysql. + надо грамотно споектировать таблицы (индексы и все такое).
3. Использовать HTTP Range. Что это такое - см. в гугле,вкратце - это заголовок , который позволяет получить не весь документ, а допустим, байты с 300 по 500, 200 байтов с конца файла и так далее. Т.е. алгос такой - бот отправляет запрос в админку,ему идет ответ в виде диапазона, отправляет этот диапазон файлу со словами, получает данные.
С одной стороны, решение очень простое, не надо ни с чем морочиться, разбивать файлы. С другой - все ли вебсервера его поддерживают? (Apache точно, nginx - хз), и главное - как это скажется на производительности при файлах на сотни миллионов записей?