Anonymous
разве что ты парсишь вообще весь интернет
Loyd
Anonymous
ну вообще я уже немного изменил свою задачу
Anonymous
и теперь я парсю сообщения которые приходят с сокет соединения
Anonymous
Чего это вдруг?
а сколько может физически отдать бекенд на пыхепитонеруби по твоему ?
Loyd
Почему бекенд именно? Неважно кто и неважно на чём. Зависит от кучи факторов
Loyd
Если там сервачок с 1000 rps и пиковой 10к, то твои 10/с никто не заметит. Ну и так далее
Loyd
сервачок -> балансер + сервачки скорее
Anonymous
где ты такое видел ?
Loyd
Мы о чём говорим вообще сейчас?
Anonymous
о вебне?
Loyd
Тезис какой?
Anonymous
серваки не раздают так быстро чтобы был смысл качать на расте
Anonymous
и конкретно у тайпикал сайта не более чем 100рпс
Anonymous
вконтакт в свое время вообще специально ограничивал тремя реквестами в секунду
Loyd
Loyd
Anonymous
Это к одному хосту
а тут серьёзный бизнес и выкачивают с десятков тысяч проксей ?
Loyd
Да откуда я знаю? Иди спроси у того, кто выкачивает
Anonymous
можно распаралелить
Anonymous
хотя это на любом языке можно
Anonymous
да, руст тут не нужен, но он нужен мне
Loyd
Да хватит об абстракциях говорить
Loyd
Конкретная задача
Loyd
Вот у меня был самописный поисковик, причём вытаскивал со страниц я только основное содержимое
Loo
Loyd
И вот вытаскивание его (readability) занимало 100% cpu постоянно
Anonymous
Loo
в коллекцию цитат, к таким великим фразам как "кажется я знаю, как сделать заебись"
Loyd
Я больше 50к страниц/сек тупо выкачивать не мог, ибо даже шустрая реализация readability стратило, например, на среднюю статью в википедии по 300-400мс
Loyd
Сейчас я ленты выкачиваю в реалтайме. Лент много, надо по сайтам ходить и основное содержимое тащить
Loyd
Переписал алгоритм на раст и ускорилось на порядок
Anonymous
а для чего качаешь?
Anonymous
>50к страниц/сек
>300-400мс
ты же понимаешь что 300-400мс даст 3 станицы в сек ?
Loyd
Ты про параллелизацию вообще хоть что-то слышал?
Anonymous
у тебя 20 тысяч ядер ?
Loyd
Loyd
Но и не все статьи это статьи в википедии
Anonymous
>асио
>cpu-bound парсинг
kitsu
там же 300 на сеть, не?
Anonymous
300 ядер на сеть, 10000 на парсинг. серьёзный бизнес
kitsu
300мс на сеть
Anonymous
на реквест ?
Loyd
Loyd
50к/час
Loyd
Потому и жалуюсь
Anonymous
олсо насколько я понимаю ридабилити это и есть дрочка libxml над документом. в ней и ботлнек. а она на сях
Loyd
Да парсинг это ерунда по сравнению с самим readability
Loyd
Ну, если парсинг xml
Loyd
С html5 всё сильно сложнее
Loyd
Там вообще sax не подходит, и всё становится грустно
Anonymous
ну libxml умеет хреновый хтмл в хмлподобный формат
Anonymous
да, надо полностью пережевывать
Anonymous
ну в любом случае если нужно кверить надо полностью
Loyd
Поэтому либо берёшь какой-нибудь readabilitysax, который часть страниц распарсить верно не может, но зато быстро (80мс на ту же среднюю вики страницу), либо точно, но медленее
Loyd
А тот же mozilla/readability во всю кверит, но там производительность жесть вообще (пару секунд). Для пользователя, который юзает как фичу в браузере это нормально
Loyd
А для парсинга это жопа
Anonymous
примерно понял что оно делает
Anonymous
с другой стороны зачем тебе ридабилити... ты бы мог просто вытащить текста из страницы
Anonymous
это должно делаться быстро
Loyd
Ладно, подытожу свою мысль: похер на чём писать фетчинг, хоть на пыхе, главное чтобы мультиплексированием было и был доступ на уровень tcp (довольно часто парсить и хранить http заголовки даже не надо)
Loo
тогда уж что мелочиться
Loo
предложите ему свой tcp/ip реализовать на dpdk в user space
Loyd
А вот дальнейшая обработка — парсинг, кверинг, вытаскивание содержимого, нормализация всякая, разбор документа в вектор и так далее, то есть что cpu требует, вот тут уже важно на чём ты
Anonymous
>был доступ на уровень tcp (довольно часто парсить и хранить http заголовки даже не надо)
лол ну вот опять же говорим о ботлнеке в парсинге но всёравно опускаемся в байтоебство
Loyd
Loyd
Loyd
Но с парсингом в расте неплохо
Loyd
Вон html5ever
Loyd
Там парсер может кастомный дом собирать
Loyd
Если тебе нужен прям солидный dom такой, с блумами всякими для быстрого кверинга и так далее, то один дом, если структура нужна и пару атрибутов, то гораздо проще.
Loyd
Хотя такое и на интерфейсах простых сделать можно было, но не видел такого подхода ещё.
Anonymous
в расте есть монады?
Meowbe/BSD-2-Clause
Option, Result
Meowbe/BSD-2-Clause
Vec