
~hummingbirdwhocode
20.02.2017
16:15:57

Alexandre
20.02.2017
16:16:17
но это должен уметь делать брокер
в общем, я понял, что брокер - это помойка, которая умеет хорошо сортитовать мусор и отдавать записавшимся

~hummingbirdwhocode
20.02.2017
16:17:37

Google

~hummingbirdwhocode
20.02.2017
16:17:57

Alexandre
20.02.2017
16:18:08
кстати про QoS
если я правильно понял, то уровень QoS определяет посылатель, так?
для данных, разумеется

~hummingbirdwhocode
20.02.2017
16:18:52
Ага, для каждого сообщения.

Alexandre
20.02.2017
16:19:44
но только до брокера, ибо я не могу знать, сколько клиентов хотят это сообщение и сколько захотят в ближайшем будущем...
или я туплю?
+ retain

~hummingbirdwhocode
20.02.2017
16:21:24
Оно идёт с заданным QoS до брокера и отправитель про него забывает.
Потом брокер смотрит всех подписчиков на данный момент, и отсылает им пакет, либо прося прислать подтверждение (QoS=1), либо делая хендшейк (QoS=2).

Alexandre
20.02.2017
16:22:19
похоже, что ключевое - "всех подписчиков на данный момент"

~hummingbirdwhocode
20.02.2017
16:23:24
+ retain
Окей, retained message запоминается брокером вместе с его QoS, и потом отдаётся всем вновь подписавшимся, а уровень QoS становится глобальным для этого топика.
Скорее, не глобальным, а стандартным.

Alexandre
20.02.2017
16:23:46
ок. а когда забывает?

Google

Alexandre
20.02.2017
16:24:16
только если попросят?
Retained messages should be kept over restarts of the server.
A server may delete a retained message if it receives a message with a zero-length
payload and the Retain flag set on the same topic.

~hummingbirdwhocode
20.02.2017
16:24:56

Alexandre
20.02.2017
16:25:29
замечательная метода завалить сервер надолго ненужными данными

~hummingbirdwhocode
20.02.2017
16:28:06
Вообще, я чёта никогда не задумывался что это очень удобно.

Alexandre
20.02.2017
16:29:20
ну да, подписался - и сразу же получил последние данные, без ожидания новых

~hummingbirdwhocode
20.02.2017
16:32:45

Alexandre
20.02.2017
16:36:26

~hummingbirdwhocode
20.02.2017
16:37:43
Отловить дисконнект - да, нельзя, особенность концепции протокола. Только если это нормальное (запланированное) отключение, можно отправлять LWT.
В иных случаях - только heartbeat на своей логике.

Dolphin
20.02.2017
16:38:07
пинг-понг?

Alexandre
20.02.2017
16:38:11

Dolphin
20.02.2017
16:39:10
угу, смотрю одна и та же проблема у всех протоколов ))
друган 15 лет решал это гавно в штатах

Alexandre
20.02.2017
16:39:46
у OPC UA нет этой болезни, но там протокол и псложнее и понавороченнее

~hummingbirdwhocode
20.02.2017
16:40:38
Опять грёбанное критическое мышление.

Google

~hummingbirdwhocode
20.02.2017
16:41:08
Отлавливать нормальный дисконнект можно на брокере.
Но только если соответственно, устройство само отключается, а не связь дропается.

Dolphin
20.02.2017
16:42:04
под нормальным дисконнектом подразумевается - "bye" !?

Alexandre
20.02.2017
16:42:18

Dolphin
20.02.2017
16:43:03
скользкая дорожка, имхо ))

Alexandre
20.02.2017
16:43:48
просто мне иногда жизненно важно знать, это (новых) данных нет или связи нет

Dolphin
20.02.2017
16:46:54
в нормальном протоколе, буе выполняется как:
- Разрыв связи, как понял, прием...
- Разрыв связи, вас понял, прием...
- дисконнект...
Но где гарантия, что разрыв связи не произойдет где-то между?
И что самое стремное, следующий на очереди, может уйти по таймауту, потому что брокер еще ждет ответа от первого.

~hummingbirdwhocode
20.02.2017
16:47:02
означает, кстати, что нужен нестандартный брокер
В mosquitto есть расширяемый функционал, но не уверен что настолько расширяемый. Точно знаю что он позволяет дописывать свои плагины авторизации.
А так, я писал свой брокер, как раз чтобы мониторить сеть на уровне протокола. В Node.js, например, это было очень просто с модулем Mosca.

Dolphin
20.02.2017
16:47:22
Именно так все и делают, и стандарта нет ?

Alexandre
20.02.2017
16:47:47

~hummingbirdwhocode
20.02.2017
16:51:04

Alexandre
20.02.2017
16:53:38
это жестоко и отбивает охоту ? ведь кто есть брокер? кабель между двумя сетевушками...

metaclass
20.02.2017
17:02:17
или же "гарантированная доставка сообщения что источник закончил работу"
но например, если источник навечно отпилили от интернета

Alexandre
20.02.2017
17:03:00

Google

metaclass
20.02.2017
17:03:39
я тут ща принимаю участие в качестве научного руководителя по диплому на эту тематику :)
распределенные mq без брокеров.

Dolphin
20.02.2017
17:04:11
В нормальных условиях, источнику, которого отпиливают от интернета, сообщают, что он будет отпилен от интернета, чтобы он сообщил другим, и попрощался ?

metaclass
20.02.2017
17:04:27
нормальных да. а в ненормальных сначала отгнивает свитч
а потом выключают питание потому что сдох аккум упса, а дизель не завелся)

~hummingbirdwhocode
20.02.2017
17:04:45

Dolphin
20.02.2017
17:04:48
Вкурсе, вкурсе ))

metaclass
20.02.2017
17:04:48
да

~hummingbirdwhocode
20.02.2017
17:05:00
Чёта жёстко звучит.

metaclass
20.02.2017
17:05:09
это моя бредовая идея, которую я навязал практикантке в качестве диплома :)

Admin
ERROR: S client not available

metaclass
20.02.2017
17:05:26
приблизительная идея: в каждом процессе системы своя нода-брокер
она же сервер, она же клиент

Dolphin
20.02.2017
17:05:41
Чёта жёстко звучит.
На самом деле, все чаще, когда возвращаюсь к этой теме, нахожу выход именно таким.

metaclass
20.02.2017
17:06:02
впилить протоколы консенсуса и продумать как реализовать гарантии доставки
и все это поверх коненчо же ADSL, wifi 3g и прочего плохо работоспособного интернета :)

Dolphin
20.02.2017
17:06:53
Я бы еще назначал бродкастеров в сети, для оповещения о глобальных изменениях

metaclass
20.02.2017
17:06:55
и чтобы работало на mediatek linkit :)
да, можно протоколом консенсуса выбирать лидеров типа
которые будут вещать всем остальным

Google

metaclass
20.02.2017
17:07:28
и нужно еще чо-то вроде spanning tree

Alexandre
20.02.2017
17:07:41
вауваувау :)

metaclass
20.02.2017
17:07:48
строить таблицы маршрутизации поверх нестабильных и дублирующихся связей между нодами.

Dolphin
20.02.2017
17:08:00
Не ожидал таки, что здесь способны обсуждать подобное :)
Алексу - успехов! ?

Alexandre
20.02.2017
17:08:32

metaclass
20.02.2017
17:08:37
короче, я думаю, тут одного консенсуса, транспортного слоя и написания пояснительной записки к диплому хватит чтобы все сошли с ума :)

Dolphin
20.02.2017
17:08:49
?

metaclass
20.02.2017
17:09:15
там нижний уровень - тупо либа которая держит постоянно поднятыми tcp линки независимо ни от чего.
в нее плагинами - парсеры-сериализаторы протоколов
протоколы асинхронные - пока stomp, потом вот можно mqtt впилить или чо нить такое

Alexandre
20.02.2017
17:10:01

metaclass
20.02.2017
17:10:29
и некий алгоритм, который поверх вот этого строит собственно сначала маршрутизацию
потом консенсусы и репликацию сообщений
в общем, боль :)

Dolphin
20.02.2017
17:11:43
Не получится - просто вверх

~hummingbirdwhocode
20.02.2017
17:12:03

metaclass
20.02.2017
17:12:12
дубликаты не надо ликвидировать
это невозможно без глобальных транзакций

Dolphin
20.02.2017
17:12:39
тут либо планы репликации пересекаются с нижним - канальным, либо нижний - канальный, зависит от репликации и отношений

metaclass
20.02.2017
17:13:08
не, у меня ща в прототипе почти не пересекается
верхний уровень использует нижний.
в качестве среды передачи сообщений.