Roman
еще одно поле в табличке, типа job_owner_id
Roman
главное в такой схеме, что сами воркеры могут быть вообще на разных машинах даже
Roman
>мультиплекс это очень важная фича нет, потому что HOL Blocking.
HOL как-раз и решается мултиплексом, поэтому я немного удивлён слышать что мултиплекс не нужен?!
Wingman
пфф, ну добавить id каждому
Ну Один сдох, а мы его результаты держим в памяти до бесконечности
Wingman
Ладно, я придираюсь)
Roman
HOL как-раз и решается мултиплексом, поэтому я немного удивлён слышать что мултиплекс не нужен?!
у тебя там внизу tcp-соединение, поверх которого фрейминг. если какая беда случается, то аффектит вообще все, а не только 1 коннект
Roman
ну и да, на long fat network да с потерями запросто получишь невозможность утилизировать всю полосу
Roman
а скорее, вообще все будет еле ползать
Roman
ну ясное дело, однако какова вероятность?
шумный wifi, перегруженная 3g/4g сота
Roman
шумный wifi, перегруженная 3g/4g сота
ты уверен что если у тебя wifi band похерится то спасут 6 TCP/IP соединений?
Roman
они-же все встанут по идеи
Roman
я думаю, @irc0p может больше вариантов рассказать когда такое бывает
Roman
Roman
когда tcp window маленький, то печаль-беда
Roman
Daniel
ну и да, на long fat network да с потерями запросто получишь невозможность утилизировать всю полосу
о какой полосе речь вообще? вот у меня 100 мегабит полоса - как мне ее утилизировать-то? всем насрать сегодня, даже на мобилке при нормальном сигнале полоса на порядок избыточная
Daniel
так и лейтенси сегодня все хорошо
Daniel
жаэе на мобилке rtt единицы миллисекунд
Daniel
и ты смотришь как оптимист, не глядя на реалии
да ладно :) я же делал мобильную рекламу
Wingman
Смотря докуда, смотря вообще какой кейс
Roman
+ У меня давно ощущение, что сети по умолчанию можно считать быстрыми, но ненадёжными
тут вопрос был в том, надёжнее ли HTTP/1.1 со своими 6-8 параллельными TCP/IP соединениями без мултиплекса, или HTTP/2 со своим 1 TCP/IP соединением но с мультиплексом
Daniel
а вот тут прячется ответ
Wingman
Проверочное задание - понять, почему openvpn / tcp работает в разы медленнее udp
Daniel
6-8 параллельных ssl это дорого для сервера
Daniel
и именно эту проблему решает гугл. для себя!
Roman
Daniel
это, кстати, не всегда так
Daniel
потому, что RSA
Roman
плюс 6х - 8х прирост голода на память
Daniel
сегодня мы в проц упираемся - у нас тупо rsa пары медленно генерятся
Roman
Daniel
это как?
Roman
в 6х - 8х больше file-descriptor'ов на котоых select'ить (хотя я не уверен насколько это дороже для современных kqueue, epoll)
Roman
жаэе на мобилке rtt единицы миллисекунд
50ms, вот только проверил - 65ms до ya.ru
Pavel
Roman
O(1)
в любом не может быть 6-8 соединений настолько же дёшево как 1
Daniel
50ms, вот только проверил - 65ms до ya.ru
у меня - 30. видимо, что-то изменилось
Roman
и не факт что долетит
Да, на радио не такое бывает
Roman
у меня - 30. видимо, что-то изменилось
Сильно зависит от соты, ее загруженности и ещё кучи факторов
Daniel
угум
Daniel
но даже 30 - это очень мало
Roman
т.е. я правильно понимаю что HTTP/2 хуже себя поведёт в случае высокого packet-loss?
Daniel
так же он себя поведет
Daniel
просто ретрансмиты будут все соединения тормозить, а не одно
Roman
так же он себя поведет
я просто предполагал что @pragus имеет ввиду, что при наличии нескольких TCP/IP соединений, когда например соединение 1 делает запрос но валится - он естественно откатывается на sleep чтоб предотвратить загрузку и без того загруженной сети а следующий запрос будет осуществлять соединением 2, и тут например сеть будет менее насыщеной и поэтому потери пакетов не будет и запрос выполнится ещё до того, как соединение 1 перепошлёт свой первый запрос так? т.е. если у нас несколько соединений, то timeout wait на каждое соединение индивидуально и вероятность восстановления сети до timeout'а выше, следственно throughput чуток выше но latency инициализации соединений будет больше чем с 1 и памяти больше будет жрать, и если в сети потерь мало, то всё это - напрасно
Daniel
эммм
Daniel
если мы не уперлись в полосу - а мы не уперлись - мы уперлись в rtt
Daniel
rtt у нас одинаковый, что мы один пакет шлем, что 10
Daniel
latency будет одинкавая, соответсвенно, хоть 1 соединение устанавливай, хоть 10
Daniel
но если соединение одно с мультиплексированием - на один пакет, в среднем, больше информации приходится, и потеря его, соответственно, больнее отзывается
Roman
rtt у нас одинаковый, что мы один пакет шлем, что 10
мм, я думаю я не про round-trip-time, a про retransmit delay
Roman
если мне не отказывает память, то TCP/IP старается беречь сеть нагружая её меньше обнаружив packet loss
Roman
latency будет одинкавая, соответсвенно, хоть 1 соединение устанавливай, хоть 10
А сколько алгоритмов congestion control у нас будет исполняться в случай 1 и 10 соединений?
Roman
т.е. от первого retransmit до второго может вырасти delay
Roman
А сколько алгоритмов congestion control у нас будет исполняться в случай 1 и 10 соединений?
короче если я тебя правильно понял, то в сетях с большой потерей - несколько соединений выгоднее потому-что congestion control откатывает на более высокий delay индивидуально на каждое соединение (однако непредсказуемо, насколько это выгодно, зависит от сети, как повезёт) а в случае сетей с низким уровнем потерь или вообще их отситствием - несколько соединений лишь сжирают лишнюю память и CPU
aadz
Сетей без потерь не бывает, или бывают, но на некоторое время, и при некотором объеме траффика
Daniel
вопрос в сочетании количества потерь и latency.
Daniel
одного я понять не могу - в штатах отвратительный инет, хоть стационарный, хоть мобильный. для кого гугл пилит все эти оптимизации?..
Roman
Сетей без потерь не бывает, или бывают, но на некоторое время, и при некотором объеме траффика
суть я думаю в том, что networtk congestion чаще возникает не из-за interference'а беспровоной сети, а переполнения буферов роутеров. В таком случае, если packet loss происходит в результате router buffer excess - ни 2, ни 8, ни 100 паралелльных TCP/IP соединений в теории не спасут и не будут агировать лучше одного единственного
Roman
Да, объем передаваемых данных один и тот же Ну за счёт того что они размазаны по нескольким соединениям tcp не настолько пессимистичен
интересная мысль однако. Нужно подумать как реализовать поддержку нескольких underlying TCP/IP с round-robin в webwire-go, для конкретно таких случаев спасибо за мысль!
Roman
По этой причине, например, syncthing на длинных дистанциях не может делегировать всю полосу
да уж, это хреново. в любом случае нужно тестировать, создать виртуальную сеть с симуляцией больших потерь и опробовать на ней webwire 2.0, попробовать добавить поддержку нескольких underlying соединений в 2.1 и сравнить throughput & latency
Roman
в идеале webwire должен сам понять, какое колво соединений в каком случае лучше использовать учитывая какое макс. колво разверешает сервер... но это уже звучит сложнее..
Мерль
На стороне сервера ты вынимаешь значение из query, а надо десереализовать тело запроса
Мерль
Вот, но с помощью не родного роутера, а с посредством gin (вообще, рекомендую) https://medium.com/go-to-golang/создания-api-restful-сервера-с-golang-и-mysql-3085133bab91
Мерль
И вот неплохая статья https://pragmacoders.com/building-a-json-api-in-golang/