Snusmumriken
Вэб-парсеры ~= вэб-серверы, у которых всё параллелится автоматически последние "тридцать лет".
Snusmumriken
А в третьих, вэб-сервак не умеет параллелиться "на нескольких машинах", и чтобы внезапно наступил "хайлоад" им нужен балансер и всякое такое.
Serezha
это тот же самый уровень мышления и реализации что у веб кодеров
Serezha
ничего плохого не имею ибо сам такой
Serezha
Serezha
Snusmumriken
Кстати, у потоков есть своя фигня, под названием "переключение контекста потока", и оно занимает вполне реальное (и иногда дофига большое) время. И если в вебе 1000 потоков это не очень страшно, ибо большая часть времени — ожидание ответа от сервера, то в "нормальных" приложениях обычно используется кол-во потоков равное (количеству ядер - 1), одно оставляется системе на всякие нужды. Воркеры в nginx'е (который расчитан на высокую нагрузку и минимум переключений контекста) — прямое тому подтверждение, например.
Serezha
всю жизнь работаю со стейтам и синхронизацией в вебе
Pavel
и?
Serezha
нет проблем с параллелизомо
Pavel
Окей. как скажешь_)
все легко паралелится. проблемы не существует
Serezha
проблему решили системные разработчики БД и веб сервера
Serezha
веб кодер просто говнякает 🙂
Pavel
Serezha
игруху да сложно
Serezha
мутексы итд
Serezha
а в вебе не помню чтобы хоть раз мутекс видел
Snusmumriken
Ты их и не мог увидеть, ибо они под капотом глубоко закопаны. Ни один веб-сервер не даст тебе доступ к своим мутексам, ибо запорешь всё нафиг дедлоками.
Pavel
а что ты назваешь вебом? для сайта визитки не нужно.
Serezha
Serezha
все проблемы решили за нас умные дядьки
Snusmumriken
игруху да сложно
На самом деле, есть простой вариант, но будет один сильно нагруженный поток (обсчёт/рендер), и несколько вспомогательных под звук/сеть/сбор данных типа нажатых кнопок. Простой путь слегка увеличить фпс.
А так — игрухи обычно очень плотно связаны и всегда должны выдавать однозначный результат, поэтому плохо параллелятся. Ну там, один объект в этом кадре уже подвинули, и он чего-то коснулся. А в следующем уже другой порядок обсчёта и другой результат. Разница в пару пикселей, но уже жёпка в предсказабельности и в точности действий. И такие различия накапливаются. С учётом того что один кадр в играх — это довольно много времени, получается страшно.
Pavel
конечно. потому что изобретены очереди, шины данных, транзакции, саги, кеши, и множество других инструментов
Pavel
1) любая ресурсоемкая стейтфул задача трудно паралелится. всевозможные обсчеты. нейронки. ИТД.
2) задачи с использованием файлов - к пример загрузил файл на одну тачку а следующий запрос пришел на другую тачку.
3) работа с несколлькими АПИ при запросе.
Pavel
та госпади - любые задачи использующие шардирование как решение.
Snusmumriken
Pavel
Pavel
просто в одном случае ты прямо сидишь и придумываешь схемы и стратегии
Pavel
а в другом - форк, и понеслась
Artem
у кого-то есть опыт работы с nanomsg? не понимаю как работает в req/rep в асинхронном режиме
Artem
с zmq я делал так:
socket:send_all({address, mp.pack(data)})
Artem
то есть явно указывал кому отвечать
Snusmumriken
Ух какая прелесть. Пойду копать.
Snusmumriken
У меня небольшие проблемы с луасокетом: он всем хорош и стандартен, но во-первых, маленький и нерегулируемый буфер для udp, а во-вторых не самая высокая скорость приёма-передачи данных, даже если оптимизировать со всех сторон. Я типа хочу занять весь гигабитный канал, а не получается окупировать и двадцати процентов :<
Anonymous
Сделай форк с своим размепом буффера)
Snusmumriken
Лень
Anonymous
А насчет скорости приема передачи я не знаю , причем здесь луасокет
Anonymous
Как он может влиять?
Anonymous
Чисто технически
Snusmumriken
Условно, на питоне получается в бешеную скорость передачи.
Anonymous
Пиздец тогда, а не либа
Anonymous
Сокетный апи же он прозрачен
Snusmumriken
Да не, для бытовых целей — более чем норм. Для извращений которые иногда нужны — не очень.
Anonymous
Там ничего не надо городить в либе
Anonymous
Ну ок
Anonymous
Ро сокеты есть для луа?
Anonymous
Их попробуй
Snusmumriken
Ну в каком-то виде да. Правда, городить свой TCP с блекджеком у меня мозгов не хватит, но мб есть какие-то надстройки протокольные типа гуглового quic.
Anonymous
Опять же, очень прозрачный апи
Anonymous
Не, свой тцп не надо
Anonymous
Аа кстати
Anonymous
Как вариант можешь взять хттп2 в качестве траспорта
Anonymous
Он не сильно медленнее тсп
Anonymous
Только патчить обе стороны придется
Snusmumriken
Во, у луасокетного udp очень неплохая производительность, но маленький буфер портит всю малину. Во-первых, приходится мутить приёмо-передатчик в отдельном потоке, чисто для того чтобы как можно быстрее очищать этот буфер, сбрасывая всю нагрузку обработки на соседние потоки. В переполненный же буфер ничего не приходит, потому что он, кто бы мог подумать, переполнен.
Anonymous
Так это нормальная практика
Anonymous
Отде:ьный поток под рид райт сенд ремив
Snusmumriken
И у меня на работе упираемся в производительность lua 5.1 без jit. Медленно. Всего 20-40к коротких сообщенек в секунду (30-50мбит/с). Luajit примерно в тридцать раз быстрее. Тут разве что балансить между несколькими машинами, или открывать несколько потоков с несколькими приёмниками и балансить уже на клиентских сторонах а ля "шлём в рандомный сокет из списка".
Snusmumriken
Так что совсем в идеале, нужен сишный бекенд который будет за определённое время всё предельно быстро выгребать и нормально буферизировать (несколько десятков мегабайт) и высылать в луа-стейт в отдельном потоке. Эх.
Anonymous
Ну да, сетевое ядро на си это хорошее решение в таком случае
Anonymous
Там можно традиционные техники дизайна серверов/клиентов применить
Anonymous
Префорк/претред/коротины
Anonymous
Я луа я просто не знаю как там
Snusmumriken
Оно под вендой, поэтому селект ))
Anonymous
Иоцп
Anonymous
Проактор
Anonymous
На винде идеально работает
Anonymous
Загугли проактор паттерн
Snusmumriken
Оки, надо трындеть с теми кто мутит ядро бд, для которой я клепаю скрипты.
Artem
ладно, понял, продолжу мучать исходники))
Snusmumriken
Да, видать никто не копал наномсг, либа видать мало кем используется у местного народа : )
Anonymous
А на чем наномсг построен?
Anonymous
Походу интересная тема раз на него с змку переходят
Serezha
Красота какая - ОпенРести обновился и подтянул свежий джит с кучей нововведений
Snusmumriken
Ура!
Max
подтянул только memory limit, table.* — их личный вклад
Max
в свой форк