LINUX.ORG.RU

Чем заменить HTTP клиента?

 , ,


0

1

Опять очень нуждаюсь в идеи )

Есть большой парк (несколько тысяч) простых железок, часть функционала в которых реализована через HTTP, другая часть это SIP и MQTT.

Есть непреодолимое желание выпилить функционал на HTTP именно с самих железок, который причем использует одновременно 2 сервера и служащий для того, чтобы железка после событий пришедших из SIP или MQTT (к слову находящихся сейчас физически там же где и HTTP) что то сделала, например, полазила в БД или отправила push на андройд и тд.

Есть мысль уж коли приходит что то в mqtt, то и ответить надо туда же, а уж на стороне сервера эта перенесенная часть функционала будет слушать и делать то же самое, что делает множество железок, НО возникает момент, что это может стать узким местом в алгоритме из-за однопоточности обработки очереди сообщений из mqtt.

Как бы Вы поступили???

ЗЫ. цель выпиливания - упрощение и увеличение надежности работы самих железок, а так же появится простая возможность обернуть железки в простое api

★★★

Последнее исправление: wolverin (всего исправлений: 1)

Ответ на: комментарий от thesis

на каждой железке условные 2 хттп клиента, туда через сип или мктт что то шлешь, а они ответы в хттп заворачивают, а шлют их в зависимости от логики на один из двух физических хттп серверов.

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 3)
Ответ на: комментарий от Zhbert

Что это за функциональность?

например, полазила в БД или отправила push на андройд и тд.

Чем оно обусловлено?

упрощение и увеличение надежности работы самих железок, а так же появится простая возможность обернуть железки в простое api

wolverin ★★★
() автор топика
Ответ на: комментарий от wolverin

полазила в БД или отправила push на андройд

HTTP здесь причем вообще?

упрощение и увеличение надежности работы самих железок

Новых только если. ИМХО, все эти нововведения на старом парке в 1000 железяк приведут к гемморою и получению в конце по башке за простои.

появится простая возможность обернуть железки в простое api

Ну вот это, конечно, круто, но сильно зависит от того, как они выходят в сеть.

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

так нет клиента для БД, поэтому через ХТТП, ну пуш и того понятней почему

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

в сеть вообще как годно выходить могут, тут нет никакого ограничения.

wolverin ★★★
() автор топика
Ответ на: комментарий от wolverin

нет клиента для БД, поэтому через ХТТП, ну пуш и того понятней почему

Звучит как три полностью несвязанных между собой технологии, имеющих друг к другу посредственное отношение, но объединенные почему-то в одну мысль.

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

в сеть вообще как годно выходить могут, тут нет никакого ограничения.

Как сейчас это реализовано?

Zhbert ★★★★★
()
Последнее исправление: Zhbert (всего исправлений: 1)
Ответ на: комментарий от wolverin

Твое описание задачи и нюансов работы системы заставляет очень сильно сомневаться в том, что ты вообще знаешь, что делаешь. Серьезно.

Поэтому совет тут может быть один: Чем заменить HTTP клиента? (комментарий).

Если ты все равно хочешь что-то менять: флаг тебе в руки, штош. Только перед этим советую более глубоко понять, что ты хочешь делать, и как это должно работать.

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

) ну подожду других советов, как уже сказал этот не подходит.

да, уже приблизительно половину сделал, полагаю знаю, про что не знаю вот спросил.

wolverin ★★★
() автор топика
Ответ на: комментарий от thesis

верно, но без ответа ага - т.е. после события, только неторопливо хз какому (потому что пока не полностью в логике разобрался) вебсерверу

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 2)
Ответ на: комментарий от wolverin

Выходит, тебе надо логику на обоих концах mqtt править. Я в целом просто так потрындеть зашел, в рамках мозгового штурма, а вообще хз, есть ли подходящие многопоточные серверы mqtt для твоих железок. Ты узнавал?

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от thesis

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

не узнавал, из мыслей только использовать несколько обработчиков… хотя опять же какой в этом смысл если сам мктт однопоточный вроде как, если только попытаться несколько брокеров использовать.

wolverin ★★★
() автор топика
Ответ на: комментарий от wolverin

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

Syncro ★★★★★
()
Ответ на: комментарий от wolverin

сам мктт однопоточный

Я не разбираюсь, но кмк тут ты чот не то говоришь. Там есть механизмы распедаливания нескольких клиентов.
Веб-серверам однопоток не мешает держать несколько подключений же.

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)

Ни черта не понятно из описания. Что за железки, что за серверы, что за «функционалы».

Задавая вопрос нужно сбросить все свои кеши и сформулировать проблему от и до, с уважением к контексту, которого у аудитории нет. А затем, сформулировав вопрос, ответ с большой вероятностью сам спустится в твою голову прямиком от боженьки.

filosofia
()
Ответ на: комментарий от thesis

Похоже что нет иба кто то через аппач на вдс сервере с меньшей производительностью уже успешно ддосил железный мктт сервер.

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 1)
Ответ на: комментарий от wolverin

А может тогда ддосили именно хттп сервер, а на мктт подумал уже как общее следствие тормозов, а не то что он не вывозил ))

Вопщим надо архитектуру переделать

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 1)

MQTT это трансляция и приём телеметрии, оповещение о состоянии. Многоадресная раздача. На край - некоторые групповые команды «всем выйти из тени». В таком режиме оно великолепно работает, масштабируется и внятно управляется/администрируется. Перерос москита - взял сервер посерьёъзней, их несколько больше 1-го варианта..

Передача команд одному конкретному клиенту MQTT да ещё и с подтверждением в обратку - дикая самопальная дичь. Вот оно ломает архитектуру и возникают существенные вопросы про безопасность.

Под http насколько я понял, ТС подразумевает Rest-клиента, который обращается к его Rest-сервисам. Менять и выпиливать это совершенно точно ненадо.

А вот отправлять Push уведомления на Android, ни одна из тысяч «мелких железок» физически не должна. Вот это вот дело серверов, их мало, их можно контроллировать. Иначе мелко-железко замкнёт и она начнёт слать куда не попадя, а тебе разбираться кто из тысяч такое делает

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

) я через него снимки шлю и все нормально доходит иба у него ограничение 256Мб на одно сообщение, так что оповещение о состоянии это очень узкое использование.

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

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

wolverin ★★★
() автор топика
Ответ на: комментарий от MKuznetsov

пуши конечно же шлет хттп сервер, когда одна из нескольких тысяч железок отправит на него хттп запрос, возможно это и удобно для контроля, но лагает прилично, поэтому полагаю постоянно слушающих мктт клиент все время подключенный к БД будет работать эффективнее.

wolverin ★★★
() автор топика