@proGO

Страница 1306 из 1674
Александр
22.03.2018
10:12:54
https://github.com/firstrow/tcp_server

Roman
22.03.2018
10:13:06
какие?!
ну как ты включишь jumbo где-нибудь в докере?

Daniel
22.03.2018
10:13:25
Roman
22.03.2018
10:13:48
на хосте включу
а потом на другом хосте..

Google
Daniel
22.03.2018
10:13:50
может tcp просто бахнуть?
ты бы сформулировал задачу, а?

Roman
22.03.2018
10:13:57
а потом окажетс что у людей оверлейная сеть

Daniel
22.03.2018
10:14:04
а потом на другом хосте..
на хосте, на хосте и на свитче, да

Roman
22.03.2018
10:14:07
на каком-нибудь vxxlan

на хосте, на хосте и на свитче, да
это адский геморрой. и фактически нереально, если инфраструктура не своя

Александр
22.03.2018
10:15:05
два процесса на гоу, возможно через интернет, возможно рядом сидят - перекинуть структуру данных в 2 килобайта, гарантированно, но не важно с какой задержкой

Александр
22.03.2018
10:15:44
что отправленный пакет данных доедет до адресата

а не потеряется

Daniel
22.03.2018
10:15:54
TCP, как мы знаем, гарантирует доставку в буфер OS, а не приложению

Roman
22.03.2018
10:16:47
что отправленный пакет данных доедет до адресата
вариантов 2: 1) udp + подтверждение доставки 2) tcp + подтверждение доставки

Александр
22.03.2018
10:16:52
https://dchua.com/2017/06/23/sending-your-structs-across-the-wire-(tcp-connection)/

Google
Александр
22.03.2018
10:17:02
а чем такой сырой вариант не соотвествует?

Roman
22.03.2018
10:17:15
в случае с udp правда еще надо реассемблинг делать

Daniel
22.03.2018
10:17:32
то есть - реализовывать tcp :)

Roman
22.03.2018
10:17:57
то есть - реализовывать tcp :)
ну, в tcp сильно-сильно больше.

Daniel
22.03.2018
10:18:17
а чем такой сырой вариант не соотвествует?
мы пока не знаем, чему именно оно (не) соответствует

Александр
22.03.2018
10:18:44
подтверждения доставки нет
ну там же tcp, он почти всегда доедет

Roman
22.03.2018
10:18:57
Daniel
22.03.2018
10:18:58
udp тоже почти всегда доедет

Roman
22.03.2018
10:19:10
Александр
22.03.2018
10:19:29
доедет куда?
до "приёмника"

Roman
22.03.2018
10:19:37
а, и еще не в том порядке может доехать

Mykyta
22.03.2018
10:19:54
udp это траханье с доставкой ?
Хе-хе, это ты еще SIP не видел! Вот где настоящее траханье которое невозможно охладить

Roman
22.03.2018
10:20:02
до "приёмника"
в socket buffer приемника. не более. дальше нет гарантий

Daniel
22.03.2018
10:21:09
кусками )
мой опыт говорит, что в локалке потерь практически нет, а в интернете и tcp продалбывается. часами можно писать в сокет, который на той стороне отвалился давно. особенно на мобильном инете

Roman
22.03.2018
10:23:56
мой опыт говорит, что в локалке потерь практически нет, а в интернете и tcp продалбывается. часами можно писать в сокет, который на той стороне отвалился давно. особенно на мобильном инете
у меня иной опыт. udp продалбывается в локалке довольно легко, как только у свитча кончаются буфера. а чтобы они не кончались, надо ставить не говно. в случае с tcp в интернетах надо включать so_keepalive и настраивать его.

Daniel
22.03.2018
10:25:18
с буферами у свитча - на этом месте у tcp начнутся ретрансмиты, которые тоже приведут к потерям в конце концов

Александр
22.03.2018
10:25:27
может через вебсокет прокинуть и все? хммм

Daniel
22.03.2018
10:25:28
so_keepalive не помогает

Google
Daniel
22.03.2018
10:26:04
может через вебсокет прокинуть и все? хммм
как только ты задачу сформулируешь внятно - ответ станет очевиден

Roman
22.03.2018
10:26:10
so_keepalive не помогает
это еще почему?

Daniel
22.03.2018
10:26:19
ну - такова реальность

Александр
22.03.2018
10:26:20
я же сформулировал?

Daniel
22.03.2018
10:26:23
нет

ты не сформулировал, гарантий чего ты хочешь

потери - нет. ретрансмиты - да.
а где накапливаться будут данные, пока там ретрансмиты и новые переполнения?

Александр
22.03.2018
10:28:25
type Client interface { Send(s *MyStruct) } type Server interface { Receive() chan *MyStruct }

Roman
22.03.2018
10:28:29
ну - такова реальность
да ладно? я ж говорю: мало просто включить, надо еще и настроить, а не использовать дефолтные значения

Александр
22.03.2018
10:28:31
и я не хочу знать что внутри ?

Roman
22.03.2018
10:29:38
а где накапливаться будут данные, пока там ретрансмиты и новые переполнения?
всмысле? свитч просто дропнет фрейм. дальше этот дроп обработает tcp.

Александр
22.03.2018
10:29:58
тут нет ничего про гарантии
это "спрятанная реализация"

Roman
22.03.2018
10:30:03
я проводил эксперименты.
ээээ... а как тестил? потому что у меня _внезапно_ все работает.

Александр
22.03.2018
10:30:13
зачем мне как клиенту знать, что там происходит

с моей стороны вылетело, как там транспортный протокол думает мне похрену

Daniel
22.03.2018
10:30:50
всмысле? свитч просто дропнет фрейм. дальше этот дроп обработает tcp.
у тебя поток данных больше, чем ты передать в состоянии. это значит, что какой-то буфер будет копиться, пока не дропнется. или ты сам сообразишь, или oom придет

Александр
22.03.2018
10:30:52
главное что бы до сервера на другом конце долетело

Google
Daniel
22.03.2018
10:31:42
главное что бы до сервера на другом конце долетело
сформулируй это человеческим языком. пока все, что ты говоришь, переводится на русский как "гарантии доставки не нужны"

Александр
22.03.2018
10:32:02
what? O_o

Daniel
22.03.2018
10:32:04
ну так в tcp есть flow control. ты не сможешь писать в сокет )
и что станет с теми данными, которые ты не смог записать в сокет?

Александр
22.03.2018
10:32:40
Daniel
22.03.2018
10:32:40
what? O_o
ты не хочешь знать, долетело ли оно. значит, тебе не важно, долетело ли

Александр
22.03.2018
10:33:18
пусть транспорт проверят доставку

но если ему совсем кабель порезали физически, тогда ошибка

Roman
22.03.2018
10:33:34
Daniel
22.03.2018
10:33:53
а что она может нарешать, кроме как дропнуть их?

Admin
ERROR: S client not available

Александр
22.03.2018
10:33:55
type Client interface { Send(s *MyStruct) error }

Roman
22.03.2018
10:34:40
а что она может нарешать, кроме как дропнуть их?
во-первых, мы словим EAGAIN. во-вторых, когда в SO_SNDBUF будет место, мы сможем туда что-то записать

Daniel
22.03.2018
10:34:55
окуда оно там возьмется?!

и что мы делаем с данными, которые генерятся, пока у нас eagain?

Roman
22.03.2018
10:35:40
окуда оно там возьмется?!
ну мы все-таки отправляем что-то )

и что мы делаем с данными, которые генерятся, пока у нас eagain?
копить в памяти/на диске. вариантов не много

но это лучше, чем просто запульнуть в сеть без каких-то гарантий

Daniel
22.03.2018
10:36:18
мы по условию отправляем больше, чем можем передать.

Roman
22.03.2018
10:37:00
Google
Alexander
22.03.2018
10:37:05
Так если типа гарантии нужны может nats и иже с ними?

Daniel
22.03.2018
10:38:03
ну так тут ничего не спасёт.
именно а если мы отправляем меньше, чем можем передать - и udp ок (в локалке). ну - для некоторых данных.

Igor
22.03.2018
10:41:01
мой опыт говорит, что в локалке потерь практически нет, а в интернете и tcp продалбывается. часами можно писать в сокет, который на той стороне отвалился давно. особенно на мобильном инете
В бинарных протоколах обычно предусматривают сообщения вроде ping, которыми переодически обмениваются клиент-сервер, как раз таки для контроля, что приолжение ещё живое

Daniel
22.03.2018
10:41:15
да, именно

Так если типа гарантии нужны может nats и иже с ними?
это сервер. в zmq, при том, что он говно, вот эта первая z очень полезная бывает

Daniel
22.03.2018
10:48:30
а если страшно - то и tcp не ок, надо на уровне приложения делать контроль

Roman
22.03.2018
12:38:21
Зачем? Если хочешь протестировать неэкспортируемые функции протестировать, то нет
coverage... coveralls считает 78% в test пакете и всего лишь 36% в том пакете который test тестирует но это бред потому-что он должен учитывать coverage пакета из test вызовов

Daniel
22.03.2018
12:39:32
этот процент ценен только одним - возможностью отследить, что он не уменьшается

Roman
22.03.2018
12:41:49
этот процент ценен только одним - возможностью отследить, что он не уменьшается
в смысле? просто на самом деле то библиотека протестирована на 78% а показывает мол 36%, неприятно))

Daniel
22.03.2018
12:42:43
да похрен же

Roman
22.03.2018
12:44:25
да похрен же
да блин, красный бэджик на главной странице в 36% скорее пугает людей нежели обнадёживает.. а при том количестве тестов что уже написано это просто нечестно)))

Daniel
22.03.2018
12:45:24
так это

сделайте зелени

Roman
22.03.2018
12:45:39
Daniel
22.03.2018
12:46:03
ну - напишите правильных тестов, чтобфы покрывали что надо

Roman
22.03.2018
12:47:13
ну - напишите правильных тестов, чтобфы покрывали что надо
так уже написано всё, там более 75% уже проверено.. просто coveralls показывает неверные процент изза того что тесты и библиотека в разных пакетах

Daniel
22.03.2018
12:49:26
он же его не сам вычисляет

он его от go test получает

Roman
22.03.2018
12:50:54
он его от go test получает
ну да, но ибо тесты в под-пакете он неправильный выдаёт coverage %

Daniel
22.03.2018
12:51:35
так это

написать как учат седые строгие отцы

Страница 1306 из 1674