@gogolang

Страница 1331 из 1630
Wingman
31.08.2018
14:37:20
спасибо

Roman
31.08.2018
14:37:37
а кто основатель канала тут?

Roman
31.08.2018
14:37:59
@twentydraft ?

Google
Мерлин
31.08.2018
14:56:48
Roman
31.08.2018
15:01:58
Все ок, просто уточнил

Danil
31.08.2018
15:28:17
заблочили в старой группе, думаю за какие грехи

Виктор
31.08.2018
15:28:49
заблочат всех, чтобы все в этот канал переехали. там же Даниил Подольский запинил сообщение соответствующее

Sparrow
31.08.2018
15:29:36
заблочили в старой группе, думаю за какие грехи
Пыхой балуешься по ночам, наверное

Виктор
31.08.2018
15:30:03
да, начали с самых грешных. я вот питонист, поэтому меня заблочили в первой партии

Danil
31.08.2018
15:30:09
Sparrow
31.08.2018
15:31:37
Виктор
31.08.2018
15:31:57
Sparrow
31.08.2018
15:33:06
Я на яваскрипте, но это только ради денег!

Roman
31.08.2018
15:43:18
А посоветуйте плз. Есть у меня штука, вынесенная в отдельный сервис: она будет ходить по различному оборудованию и собирать с него кучу самых разнообразных данных. В результате - структурированные однообразные ответы, либо ошибка. В неё пулять задание (объекты для обхода) будет какая-то другая штука. Так вот, думаю я о том, как и что лучше сделать: делать http(s)-запрос с нужными параметрами, и ждать ответ, либо поднимать tcp-сессию и гонять туда-обратно нужные данные. Учитывая, что опрос одной железки может и на 5-10 минут затянуться, а таких задания может быть несколько тысяч в течение 5 минут - оверхед (в смысле сложности) с сокетами и своим мини-протоколом может быть оправдан...
HTTP/1.1 ни в коем случае, он не умеет multiplex. HTTP/2 можно, он не будет блокировать другие запросы TPC/IP можно, но сложно а ещё можно https://github.com/qbeon/webwire-go, это WebSocket со всеми удобствами

Wingman
31.08.2018
15:43:52
Благодарю, схоронил)

Roman
31.08.2018
15:45:32
А посоветуйте плз. Есть у меня штука, вынесенная в отдельный сервис: она будет ходить по различному оборудованию и собирать с него кучу самых разнообразных данных. В результате - структурированные однообразные ответы, либо ошибка. В неё пулять задание (объекты для обхода) будет какая-то другая штука. Так вот, думаю я о том, как и что лучше сделать: делать http(s)-запрос с нужными параметрами, и ждать ответ, либо поднимать tcp-сессию и гонять туда-обратно нужные данные. Учитывая, что опрос одной железки может и на 5-10 минут затянуться, а таких задания может быть несколько тысяч в течение 5 минут - оверхед (в смысле сложности) с сокетами и своим мини-протоколом может быть оправдан...
суть в том что TCP/IP по умолчанию не умеет multiplex REQ-REP, ошибки, аутентификацию и т.д. и т.п. а webwire всё это предоставляет в довольно простом интерфейсе, имеется клиент и сервер на Go и клиент на JS

Google
Wingman
31.08.2018
15:45:49
Примерно понятно)

Wingman
31.08.2018
15:48:43
а чем вариант с парой очередей не нравится?
В смысле? Я скорее нн про очереди, а про интерфейс общения между сервисами

Roman
31.08.2018
15:50:54
Сделайте асинхронную очередь. На сервисе который выдаёт задачи - отправить задачу и периодически пинговать статус. На сервисе который выполняет - принять и поставить в очередь на обход, сохранить статус у себя
так себе, если можно послать запрос: ctx := context.WithTimeout(context.Background(), 50 * time.Second) result, err := client.Request(ctx, "getSomething", /*data*/) и проверить, удался ли запрос, провалился по причине ошибки или timeout'нулся: if err != nil { if wwr.IsTimeoutErr(err) { // timeout! } else { // error! // err.Code // err.Message } } думаю это намного элегантнее чем polling особенно в связке с goroutine'ами где можно просто запустить 1к горутин за заблокировать их на этих запросах

Roman
31.08.2018
15:52:06
В смысле? Я скорее нн про очереди, а про интерфейс общения между сервисами
2 запроса: один принимает пачку заданий и возвращает id каждого задания, второй - принимает пачку id и возвращает статусы

Лемур
31.08.2018
15:53:54
громоздко
Зато устойчиво. Сервисы друг от друга отвязываются.

Лемур
31.08.2018
15:54:12
а если воркер грохнется?
А если сеть упадёт?

ДЦ сгорит

Roman
31.08.2018
15:54:22
А если сеть упадёт?
тоже да, вариант

Лемур
31.08.2018
15:54:47
Надо все риски учитывать. И смотреть с чем ты можешь смирится, чтобы не оверхедить.

Roman
31.08.2018
15:57:19
а зачем в этой задаче мультиплексирование?
хмм, момент, ещё раз перечитал внимательно. Тут говорится о нескольких тысячах параллельных запросов. Если речь идёт о 1к конкурентных клиентов то да мультиплекс особо не нужен.... НО! есть огромное НО: но если вдруг таки понадобится одновременно с 1 клиента посылать например 2 запроса а у нас HTTP/1.1 то нам кранты, ибо если первый запрос заблокирует связь на 5-10 минут, то нам придётся создавать для каждого запроса отдельное подключение, а это 2х нагрузка на сервер если-же изначально у нас имеется мултикплекс, то такая проблема исключена в принципе, запросы не блокируют друг друга

а если воркер грохнется?
всмсл? не совсем понял что имеется ввиду под воркером и что может быть если он грохнется

Виктор
31.08.2018
15:58:21
воркер это инстанс приложения, вроде

Roman
31.08.2018
15:58:32
Roman
31.08.2018
16:00:02
Зачем? Что мешает принимать и отдавать пачкой?
пачками больше кода и сложнее получится, ты считай переизобретаешь в таком случае мультиплекс, который в webwire имеется по умолчанию. Да и работать оно будет гораздо хуже.. например у тебя 2 типа запроса: первый занимает 5-10 минут, второй секунд 30, так вот без мультиплекса придётся в 2 соединения шмалять, ибо первый блокирует подключение к чертям на 10 минут и второй не сможет одновременно в 30 секундных интервалах гоняться или я что-то не так понял?

Google
Roman
31.08.2018
16:01:47
Процесс, упадет по сегфолту или панике
хмм, а причём тут протокол коммуникации и падающий процесс по сегфолту?!

Roman
31.08.2018
16:02:15
Именно с нескольких клиентов куча запросов, да. С 1..5
каждый клиент по 1 запросу или несколько?

Wingman
31.08.2018
16:02:26
Roman
31.08.2018
16:02:32
Кажжый - тысячи
тогда тебе обязательно нужен мультиплект, без него просто не будет работать либо придётся создавать тысячи соединений и это маразм.

Roman
31.08.2018
16:03:48
Зачем тут мультиплекс?
ну он же говорит: 1 клиент = 1000 запросов

Wingman
31.08.2018
16:03:58
Ну не запросов

Wingman
31.08.2018
16:04:08
1000 "выдаваемых заданий"

Можно и в одном запросе

Но дико не нравится

Roman
31.08.2018
16:04:27
Pavel
31.08.2018
16:04:47
хм?
Без мультиплекса — збс.

Roman
31.08.2018
16:05:09
Можно даже взять какой-нибудь mysql/postgres и в нем хранить

Pavel
31.08.2018
16:05:10
И H1 — one love.

Google
Roman
31.08.2018
16:05:41
1000 "выдаваемых заданий"
ааа, ну это конечно другое дело. тогда да, мультиплекс будет не нужен, но, повторюсь, если он вдруг понадобится по каким либо причинам в будущем (клеитн теперь не только проверяет статус 100500 железок, но и статус XYZ) тогда придётся всё переписывать, ибо невыгодно выйдет без мултиплекса я о том что мультиплекс хорошо иметь за-пазухой на всякий пожарный

Pavel
31.08.2018
16:05:59
H2 по сути только глупым браузерам нужен, где вшит лимит 2 подключения на домен ?

Roman
31.08.2018
16:06:32
Да не нужен он тут от слова совсем
а я спорю?)) я-ж согласен

Pavel
31.08.2018
16:06:35
В других вариантах от него символический профит, если он вообще есть.

Roman
31.08.2018
16:06:37
H2 по сути только глупым браузерам нужен, где вшит лимит 2 подключения на домен ?
Нет, оно надо только там где люди не умеют батчить и на long fat net

Roman
31.08.2018
16:07:03
Но дико не нравится
действительно, почему?

Admin
ERROR: S client not available

Roman
31.08.2018
16:08:35
Без мультиплекса — збс.
ну раз так, тогда и HTTP/2 не нужен и вообще дураки его изобрели по непонятной причине)) мультиплекс это очень важная фича, и я не уверен говорим ли мы действительно об одном и том-же

Daniel
31.08.2018
16:09:39
при чем тут константа?

Wingman
31.08.2018
16:10:27
Чем?
1) громоздкостью) 2) сдох "выдающий задания", а "исполнитель" результаты так и держит в памяти. Надо крутить таймауты. Геморройно и громоздко

Daniel
31.08.2018
16:10:27
что - нет? не важная?

Pavel
31.08.2018
16:10:29
при чем тут константа?
У вас есть шутка лучше?

Daniel
31.08.2018
16:10:48
я чет в этот юмор не врубаюсь

Pavel
31.08.2018
16:11:18
Гугл изобрёл Quic чтобы ускорить свой сайтик.

Daniel
31.08.2018
16:11:56
ну?

они и браузер свой изобрели, чтобы держать сообщество за яйца

Google
Roman
31.08.2018
16:12:22
1) громоздкостью) 2) сдох "выдающий задания", а "исполнитель" результаты так и держит в памяти. Надо крутить таймауты. Геморройно и громоздко
поэтому я и предложил запускать 1000 конкурентных запросов с индивидуальными таймаутами и ошибками, нежели 1 запрос с 1000 заданиями

Wingman
31.08.2018
16:13:21
ну так надо дополнить "отдать список всех заданий"
А если несколько независимых "контролеров"? Нах им чужие задания?

Pavel
31.08.2018
16:13:46
nyet
Ну поправь фактом.

Roman
31.08.2018
16:14:02
еще одно поле в табличке, типа job_owner_id

главное в такой схеме, что сами воркеры могут быть вообще на разных машинах даже

Roman
31.08.2018
16:14:42
>мультиплекс это очень важная фича нет, потому что HOL Blocking.
HOL как-раз и решается мултиплексом, поэтому я немного удивлён слышать что мултиплекс не нужен?!

Wingman
31.08.2018
16:14:47
пфф, ну добавить id каждому
Ну Один сдох, а мы его результаты держим в памяти до бесконечности

Ладно, я придираюсь)

Roman
31.08.2018
16:15:43
HOL как-раз и решается мултиплексом, поэтому я немного удивлён слышать что мултиплекс не нужен?!
у тебя там внизу tcp-соединение, поверх которого фрейминг. если какая беда случается, то аффектит вообще все, а не только 1 коннект

Roman
31.08.2018
16:16:25
ну и да, на long fat network да с потерями запросто получишь невозможность утилизировать всю полосу

а скорее, вообще все будет еле ползать

ну ясное дело, однако какова вероятность?
шумный wifi, перегруженная 3g/4g сота

Roman
31.08.2018
16:17:12
шумный wifi, перегруженная 3g/4g сота
ты уверен что если у тебя wifi band похерится то спасут 6 TCP/IP соединений?

они-же все встанут по идеи

Roman
31.08.2018
16:17:28
я думаю, @irc0p может больше вариантов рассказать когда такое бывает

Страница 1331 из 1630