@ru_arduino

Страница 1420 из 7737
~hummingbirdwhocode
20.02.2017
16:15:57
идем на уровень ниже... то, что паблишер начинает с "/lorem", означает, что сабскрайберу надо об этом знать, иначе не подписаться
Ох, ну это-то да. Но можно сделать какой-то системный топик, допустим "/sys/topics", и через него получать список топиков, на которые в последствии подписываться

Alexandre
20.02.2017
16:16:17
но это должен уметь делать брокер

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

~hummingbirdwhocode
20.02.2017
16:17:37
но это должен уметь делать брокер
Брокер же вообще ничего не должен уметь, кроме как роутить пакеты. Остальное — уровень приложения.

Google
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
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.
Ну то есть, да, или пока брокер не перезапустят, или пока ты не отправишь пустое retained message.

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
убедил, не сильно страшно, только жаль нет на них таймаута, чтобы подчищать за навсегда исчезнувшими клиентами
Если у тебя есть какой-то контроллирующий элемент — то можно написать эту логику самому, отлавливая LWT и дисконнекты.

Alexandre
20.02.2017
16:36:26
Если у тебя есть какой-то контроллирующий элемент — то можно написать эту логику самому, отлавливая LWT и дисконнекты.
ах да, дисконнекты... я так понимаю, нет стандартной возможности узнать, присоединен ли источник моих подписок или нет?

~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 нет этой болезни, но там протокол и псложнее и понавороченнее

Google
~hummingbirdwhocode
20.02.2017
16:41:08
Отлавливать нормальный дисконнект можно на брокере.

Но только если соответственно, устройство само отключается, а не связь дропается.

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

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
?
и началось... ?

В mosquitto есть расширяемый функционал, но не уверен что настолько расширяемый. Точно знаю что он позволяет дописывать свои плагины авторизации. А так, я писал свой брокер, как раз чтобы мониторить сеть на уровне протокола. В Node.js, например, это было очень просто с модулем Mosca.
я этого боялся... потому что стандартизация брокера означает, что данные можно послать "куда угодно", хоть через цепочку cloud-брокеров на другой конец мира, а так - теряется все преимущество стандарта

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

metaclass
20.02.2017
17:02:17
просто мне иногда жизненно важно знать, это (новых) данных нет или связи нет
это невозможно, максимум что можно - таймаут на приход данных

или же "гарантированная доставка сообщения что источник закончил работу"

но например, если источник навечно отпилили от интернета

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
распределенные mq без брокеров.
Распределённые Message Queues?

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
не, у меня ща в прототипе почти не пересекается

верхний уровень использует нижний.

в качестве среды передачи сообщений.

Страница 1420 из 7737