Artem
Люди, кто обладает опытом работы с websocket, объясните пожалуйста, в чем идеологический смысл в го реализовывать для каждого клиента две горутины на чтение и запись через каналы, в чем не кошерность способа применяемого в том же питоне, когда мы в мэп собираем всех клиентов и ожидаем от кого-то из них данные, а потом циклом проходим по всем и пишем им данные. Пока писал, появилась идея, что это связанно с отсутствием конструкции try, catch, я прав?
Daniel
нет
Daniel
это свуязано с синхронностью ввода-вывода в go
randle
Юзает кто-нибудь neo4j в го?
Artem
это свуязано с синхронностью ввода-вывода в go
Был бы крайне признателен, если бы вы подсказали где почитать про это можно, если на русском языке было бы совсем шикарно, заранее благодарен!
Daniel
ввод-вывод в го блокирующий, синхронный
Daniel
соответственно, писать в разные сокеты надо из разных горутин, иначе первая же заблокировавшаяся запись остановит весь цикл
Anonymous
Был бы крайне признателен, если бы вы подсказали где почитать про это можно, если на русском языке было бы совсем шикарно, заранее благодарен!
https://habrahabr.ru/post/276255/ вот мне понравилось, даже с интерактивчиком небольшим, мб не совсем по теме блокирующих операций...
Artem
Я немного не о том. В питоне ввод-вывод тоже блокирующий. Но там это решается через async. Тут через горутины, по сути такой же async. Суть в самом подходе, тут во всех реализациях, которые я видел для го, для клиента стартуем сразу две горутины, вместо того чтобы при появлении данных на сокете, в цикле создавать горутины на отправку, которые после отправки данных самозавершатся
Artem
https://m.habrahabr.ru/company/mailru/blog/331784/
Artem
Вот тут, как я понимаю, и идёт речь об отказе запуска двух горутины на клиента
Daniel
да
Daniel
но оно перестает быть простым и кросплатформенным
Daniel
зачем это нужно, если ты не мейлру - вопрос открытый
Artem
Ну когда нужна производительность
Daniel
нет
Daniel
производительность не изменится
Artem
Ну либо сервер. Обслуживает 10к клиентов, либо 100к, разница есть
Daniel
опять нет
Daniel
разницу на 10К и 100К вы не увидите
Евгений
Там решалась конкретная задача mail.ru: нужно держать большое количество неактивных веб-сокетов, обновления идут в небольшом % из них. Суть решения - не выделять память и горутины на неактивные соединения. Как только нужно что-то отрпвить, создается нормальная горутина со всеми данными и буферами.
Pawel
Мэп только читают несколько, а пишет только одна, которая апгрейд соединения делает
даже если так - это детали, которые суть картины (конкурентный доступ) не меняют. Но вообще то вебсокет-клиентов > 1, и все они одновременно пишут. "мы в мэп собираем всех клиентов и ожидаем от кого-то из них данные, а потом циклом проходим по всем и пишем им данные." - вот это вот ни к чему. Правильно - это писать в мапу в каждом обработчике хтттп соединения, устанавливающего вебсокет коннект
Евгений
Если у вас не такой паттерн: активны 5% из 10М, то вам это не нужно.
Daniel
и даже если паттерн такой - все, что вы наэкономите, это RAM
Artem
Если у вас не такой паттерн: активны 5% из 10М, то вам это не нужно.
У меня много получателей и всего n<100 отправителей данных
Artem
Ну собственно вопрос был именно про паттерн реализации задачи в го
Artem
Спасибо всем откликнувшимся
Евгений
там вопрос не в получателях: а вообще в актвиных сокетах - т.е. тех, в которых передаются данные
Евгений
т.е. у вас получается ~100% активных )
Евгений
Я не ругаю решение, оно отличное. Но оно под специфическую задачу - очень редких уведомлений для большой группы клиентов.\
Artem
т.е. у вас получается ~100% активных )
Да, но для получателей будет только одна горутины, с отправкой данных
Евгений
одна на все сокеты?
Евгений
и один общий буфер?
Artem
Кстати вот ещё вопрос, в догонку, если я не буду читать то, что шлют мне клиенты, чем это мне грозит?
Daniel
буфер переполнится, сокет закроется
Artem
одна на все сокеты?
Не, там две горутины на клиента, была мысль сделать по одной, только на write
Daniel
еще раз - чтобы что?
Евгений
имхо вы усложните все сильнее, чем выиграете
Artem
буфер переполнится, сокет закроется
Коротко, ясно, исчерпывающе, спасибо!!!
Artem
имхо вы усложните все сильнее, чем выиграете
Я пока прорабатываю варианты, и выясняю почему именно так, а не иначе.
Artem
еще раз - чтобы что?
Чтобы не тратить ресурсы на чтение, но понял, что не вариант, будем читать в _
Artem
Спасибо всем откликнувшимся, в общих чертах стало понятнее
Niko
Добрый вечер! В последнее время на web-сервере подозрительная активность Идут GET запросы: /.git/HEAD /tasktracker.jsp /dfshealth.jsp /jobtracker.jsp /flumemaster.jsp /browseDirectory.jsp /status.jsp /master.jsp Мой проект кто-то пытается взломать?
Anonymous
у меня такое начинается сразу после аренды VPS у любого провайдера через пару дней
Anonymous
IP в освновном китайские
Anatoly
бурят брутят
Niko
Просто таких запросов в последнее время становится все больше
Илья
зарули jsp в blackhole
Alexey 〒.
Просто таких запросов в последнее время становится все больше
ставь ограничение на колличество запросов, с блоком на 5-10 мин
Mike
Просто таких запросов в последнее время становится все больше
Порежь в нгинксе всех китайцев, их все равно много, специальная страна для ддоса
Mike
Или всех кто джсп просит бань
Anonymous
Или всех кто джсп просит бань
ну там не только jsp могут быть...
Niko
А что еще?
Anonymous
по идее должен быть уже какой-то модуль для бана вот сканнеров
Anonymous
А что еще?
ну пробивают phpMyAdmin, дырки в CMS: Joomla, WordPress; уязвимость shellshock к примеру
Anonymous
самое распространённое дырявое ПО в двух словах
Anonymous
возвращай zip-бомбу)
кстати идея))) если как-то узнать ПО сканера, то можно поискать дыры в нём и поэкспериментировать с овтетами, может получиться довольно забавно)
Alexey 〒.
https://habrahabr.ru/post/332580/
Niko
Всем спасибо за направления в нужные русла))) пошел читать
Anonymous
https://habrahabr.ru/post/332580/
как-то глупо... вряд ли сканер захочет открыть zip/gzip
Alexey 〒.
как-то глупо... вряд ли сканер захочет открыть zip/gzip
страницы жмутся же в gzip если в хедерах прописана доступность
Alexey 〒.
Смотря что чекают
Alexey 〒.
может контент на странице
Anonymous
может контент на странице
А если HEAD'ом запросить размер, он сжатый выдаст или оригинальный?
Constantine️
может тупо формы сабмитят
Konstantin
парни никто opencv3 не юзает на go?
Мерль
GopherCon 2017: Alan Shreve - grpc: From Tutorial to Production https://youtu.be/7FZ6ZyzGex0 #golang
Мерль
http://gocv.io/ is making OpenCV 3 easier for #golang devs, e.g. face detection in 60 lines of Go. By… https://twitter.com/i/web/status/917554768402354177