Комментарии 11
пишет свою собственную систему фильтрации трафика и защищает с помощью нее бизнес от DDoS-атак, ботов, парсеров, а также многого другого.
Не понимаю, почему все пытаются защититься от парсинга? Пустая трата ресурсов и времени, информацию всё равно достанут. И чем сложнее её будет достать, тем агрессивнее будут методы её получения.
Лучше бы наоборот старались предоставить самый простейший инструмент для выкачивания информации.
Взять тот же 2gis — как то была статья на хабре, что из 2гис слишком легко доставать инфу и они не пользуются никакими защитами, мол какие нехорошие ребята. А что нехорошего? Это же наоборот прекрасно — если информацию в любом случае можно получить, зачем стараться усложнить способы её получения? Зачем платить за защиты, которые не будут работать (я говорю именно о парсинге). Зачем нагружать специалистов изобретать способы предотвращения парсинга, если это только усложнит обслуживание ресурса.
- парсеры нагружают ресурс, и эта нагрузка может составлять до 50% от трафика
- информацию можно использовать для получения конкурентных преимуществ, например для поднятия своего предложения в товарном аггрегаторе при сортировке по цене
И так далее. Аргумент про то, что все равно достанут, вечен. Как и противостояние снаряда и брони. Остановить нельзя, можно только продолжать совершенствовать технологии.
- std::deque либо ограничиваем в размере, либо переводим на std::list (редко), либо оставляем на стандартном аллокаторе (редко, блокеры)
- std::vector — смотри 1
- std::string либо не используется (работаем с бинарными данными из variti::chunk и variti::streambuf через стандартные алгоритмы), либо оставляем на стандартном аллокаторе (редко, блокеры)
- std::unordered_map не используется (размеры наших коллекций небольшие и данные редко меняются после инициализации, а еще надо помнить о том, что вычисление хэш-функции может быть дорогим занятием, поэтому мы храним данные в std::deque, сортируем его через std::sort, а потом ищем в нем с помощью std::lower_boud)
Итого, у нас было не так много подводных камней, как кажется. В производительности мы потеряли больше на репостах в соответствующие io контексты делитеров slab объектов, чем на алгоритмах хранения и обработки данных.
Проблема частого создания и удаления объектов в C++