#programowanie #iot #nodejs #nodered #embedded #express
Mam dwa procesy napisane w node.js w oparciu o Express (jeden to node-RED) , które muszą wymieniać cyklicznie dane pomiędzy sobą - wartości pomiarów itd. W jaki sposób najlepiej to zrobić pod kątem wydajności? API RESTfulowe, MQTT, websockety, SQLite?
Aplikacja ma chodzić na jakimś systemie embedded, więc wydajność jest tu kluczowa. Samych danych ma być wymieniane docelowo kilkaset-kilka tysięcy pomiarów.
Proszę o wyrozumiałość, dopiero się uczę( ͡° ͜ʖ ͡°)
Mam dwa procesy napisane w node.js w oparciu o Express (jeden to node-RED) , które muszą wymieniać cyklicznie dane pomiędzy sobą - wartości pomiarów itd. W jaki sposób najlepiej to zrobić pod kątem wydajności? API RESTfulowe, MQTT, websockety, SQLite?
Aplikacja ma chodzić na jakimś systemie embedded, więc wydajność jest tu kluczowa. Samych danych ma być wymieniane docelowo kilkaset-kilka tysięcy pomiarów.
Proszę o wyrozumiałość, dopiero się uczę( ͡° ͜ʖ ͡°)
Saly
2021-09-16 18:50:37
+2
@Wegrzynski: najszybszym mechanizmem komunikacji pomiędzy procesami to pamięć dzielona. Tylko kilkaset-kilka tysięcy to zupełnie nie ta skala. Jakbym robił coś takiego sam to pewnie użył bym web socketow, bo są proste i wygodne. Ale liczba możliwych podejść które będą działały jest ogromna
Wegrzynski
[OP]
2021-09-16 16:56:57
+1
@tlaziuk: Jest kluczowa, ale równie kluczowe są możliwości Node-RED'a ( ͡° ͜ʖ ͡°)
t.....k
2021-09-16 16:53:08
+0
@Wegrzynski jeśli wydajność jest kluczowa to node może nie być dobrym wyborem
4191727801
2021-09-16 18:43:56
+0
@tlaziuk: node.js skaluje się pieknie, ale musi mieć na czym :) embeded to raczej słaby use case
4191727801
2021-09-16 18:55:25
+0
@Saly: ciekawa koncepcja mireczku. Robiłeś coś takiego? Jaka skala i jaka wydajność?
Saly
2021-09-16 18:58:00
+0
@Wegrzynski: nie, tylko tak strzelam.
Wegrzynski
[OP]
2021-09-16 19:34:07
+0
node.js skaluje się pieknie, ale musi mieć na czym :) embeded to raczej słaby use case
@4191727801: Jeszcze nie wybrałem, ale mówimy o jakimś ARM-ie czy dokładniej SoMie( ͡° ͜ʖ ͡°) Na pewno nie będzie 8-bitowy AVR-erek ( ͡° ͜ʖ ͡°)
najszybszym mechanizmem komunikacji pomiędzy procesami to pamięć dzielona. Tylko kilkaset-kilka tysięcy to zupełnie nie ta skala. Jakbym robił coś takiego sam to pewnie użył bym web socketow, bo są proste i wygodne. Ale liczba możliwych podejść które będą działały jest ogromna
@Saly: Czyli jak mówimy o ARM-ie to nie są ilości gdzie powinienem się przejmować? No właśnie trochę się gubię które podejście będzie najlepsze, ale jak rozumiem przy tego typu wymaganiach to nie ma raczej znaczenia?
groman43
2021-09-16 20:20:29
+0
@Wegrzynski: #nodejs i #embedded - wybierz tylko jeden, serio.
Serio, nodejs przecież nie bedzie dzialał bare metal ani na żadnym RTOSie. Czy z góry pakujesz się w jakieś mega drogi hardware. Dodatkowo pakujesz jakiś mega wypasiony stack do czegoś prostego - zbierania i wysyłania pomiarów. Poza tym, tych pomiarów ma być kilkaset / kilka tysięcy na minutę / na dobę / na dzień? Po cholerę tak dużo?
Embedded to sztuka minimalizmu. Ty natomiast na siłę pakujesz wszystko co tylko się da.
Serio, nodejs przecież nie bedzie dzialał bare metal ani na żadnym RTOSie. Czy z góry pakujesz się w jakieś mega drogi hardware. Dodatkowo pakujesz jakiś mega wypasiony stack do czegoś prostego - zbierania i wysyłania pomiarów. Poza tym, tych pomiarów ma być kilkaset / kilka tysięcy na minutę / na dobę / na dzień? Po cholerę tak dużo?
Embedded to sztuka minimalizmu. Ty natomiast na siłę pakujesz wszystko co tylko się da.
Wegrzynski
[OP]
2021-09-17 05:46:45
+0
#nodejs i #embedded - wybierz tylko jeden, serio.
Serio, nodejs przecież nie bedzie dzialał bare metal ani na żadnym RTOSie.
@groman43: Pisałem, że na ATiny tego nie zamierzam robić :P
Czy z góry pakujesz się w jakieś mega drogi hardware.
@groman43: SoMy nie są koniecznie jakieś drogie, myślę o czymś w stylu Rasberry.
Dodatkowo pakujesz jakiś mega wypasiony stack do czegoś prostego - zbierania i wysyłania pomiarów. Poza tym, tych pomiarów ma być kilkaset / kilka tysięcy na minutę / na dobę / na dzień?
@groman43: Na sekundę.
Embedded to sztuka minimalizmu.
@groman43: Powiedz to twórcom telefonów komórkowych, które też są systemami embedded ( ͡° ͜ʖ ͡°)
groman43
2021-09-17 08:54:44
+0
@Wegrzynski: Zacznijmy od tego, że ostatnie trzy lata spędziłem pisząc soft dla modemu 5G. Więc zaryzykuje hipotezę, że wiem jak działają telefony komórkowe. I owszem, zwykle bazują na dość złożonych SoC, ale to tylko dlatego że wspierają jednocześnie GSM / 3G (we wszystkich jego odmianach) / LTE / NR / 802.11 / Bluetooth / NFC / cholera wie jeszcze co. Natomiast sama architektura 5G modemu nie jest super skompikowana, więc Twój argument zaliczę raczej do tych analnych.
Na stronie Raspberry Pi jest napisane, że cena zaczyna się od $35. Owszem, dostajesz dużo w tej cenie, ale czy na przykład będziesz codziennie wykorzystał HDMI? Wątpie. Moim zdaniem opieranie projektów na tej platformie, nawet hobbystycznych, zwykle jest wywaleniem pieniędzy w błoto (no chyba, że musisz oddać działający projekt do poniedziałku).
Kilka tysięcy pomiarów na sekundę - z czystej ludzkiej ciekawości dwa pytania. Cóż za magiczny sensor może zrobić kilka tysięcy pomiarów na sekundę? Jedyne, co przychodzi mi do głowy, to że masz jakieś ADC, które sampluje z częstotliwością kilku megaherzów. Jeśli natomiast chcesz obsłużyć jakąś większą matrycę sensorów, nawet super duper ARMem średnio to widzę - moim zdaniem będziesz musiał wszystko zrównoleglić i zamiast MCU przyda Ci się FPGA.
W końcu, jeśli to nie tajemnica, co zamierzać mierzyć kilka tysięcy razy na sekundę. Pytam, bo po prostu nie chcę mi się wierzyć, że potrzebujesz aż takiej rozdzielczości. Moim zdaniem, Twój projekt nie jest dobrze przemyślany.
Na stronie Raspberry Pi jest napisane, że cena zaczyna się od $35. Owszem, dostajesz dużo w tej cenie, ale czy na przykład będziesz codziennie wykorzystał HDMI? Wątpie. Moim zdaniem opieranie projektów na tej platformie, nawet hobbystycznych, zwykle jest wywaleniem pieniędzy w błoto (no chyba, że musisz oddać działający projekt do poniedziałku).
Kilka tysięcy pomiarów na sekundę - z czystej ludzkiej ciekawości dwa pytania. Cóż za magiczny sensor może zrobić kilka tysięcy pomiarów na sekundę? Jedyne, co przychodzi mi do głowy, to że masz jakieś ADC, które sampluje z częstotliwością kilku megaherzów. Jeśli natomiast chcesz obsłużyć jakąś większą matrycę sensorów, nawet super duper ARMem średnio to widzę - moim zdaniem będziesz musiał wszystko zrównoleglić i zamiast MCU przyda Ci się FPGA.
W końcu, jeśli to nie tajemnica, co zamierzać mierzyć kilka tysięcy razy na sekundę. Pytam, bo po prostu nie chcę mi się wierzyć, że potrzebujesz aż takiej rozdzielczości. Moim zdaniem, Twój projekt nie jest dobrze przemyślany.
Wegrzynski
[OP]
2021-09-17 09:26:50
+0
Zacznijmy od tego, że ostatnie trzy lata spędziłem pisząc soft dla modemu 5G. Więc zaryzykuje hipotezę, że wiem jak działają telefony komórkowe. I owszem, zwykle bazują na dość złożonych SoC, ale to tylko dlatego że wspierają jednocześnie GSM / 3G (we wszystkich jego odmianach) / LTE / NR / 802.11 / Bluetooth / NFC / cholera wie jeszcze co. Natomiast sama architektura 5G modemu nie jest super skompikowana, więc Twój argument zaliczę raczej do tych analnych.
@groman43: Spokojnie, bez spiny ( ͡° ͜ʖ ͡°) Po prostu podałem przykład, że systemy embedded to nie tylko sterowniczki silników krokowych ( ͡° ͜ʖ ͡°)
Na stronie Raspberry Pi jest napisane, że cena zaczyna się od $35.
Podałem Malinkę jako przykład, żeby jeszcze raz podkreślić, że to nie jest projekt na goły mikrokontroler.
Kilka tysięcy pomiarów na sekundę - z czystej ludzkiej ciekawości dwa pytania. Cóż za magiczny sensor może zrobić kilka tysięcy pomiarów na sekundę? Jedyne, co przychodzi mi do głowy, to że masz jakieś ADC, które sampluje z częstotliwością kilku megaherzów. Jeśli natomiast chcesz obsłużyć jakąś większą matrycę sensorów, nawet super duper ARMem średnio to widzę - moim zdaniem będziesz musiał wszystko zrównoleglić i zamiast MCU przyda Ci się FPGA.
W końcu, jeśli to nie tajemnica, co zamierzać mierzyć kilka tysięcy razy na sekundę. Pytam, bo po prostu nie chcę mi się wierzyć, że potrzebujesz aż takiej rozdzielczości. Moim zdaniem, Twój projekt nie jest dobrze przemyślany.
@groman43: Widzę że myślisz jak elektronik ( ͡° ͜ʖ ͡°) Chodzi o wartości kilkuset-kilku tysięcy wartości pomiarów zbieranych ze sterowników PLC, czujników, liczników energii itd. To nie ma być wykonywane kilka tysięcy pomiarów w ciągu, tylko przesyłanie tylu wartości pomiarów w pakietach raz na sekundę, które później mają być wizualizowane, archiwizowane itd.
PS Dzięki za zainteresowanie, jak masz doświadczenie to proszę o radę jak to zrobić najlepiej ;)
groman43
2021-09-17 09:46:03
+0
@Wegrzynski: Jeśli chcesz wysłać kilka tysięcy różnych pomiarów raz na sekundę, to musisz wcześniej zebrać kilka tysięcy pomiarów w ciągu sekundy. Matematyka jest tutaj raczej nieubłagana.
A zebranie kilku tysięcy pomiarów, biorąc pod uwagę, że rozmawiasz ze światem zewnętrznym, samo w sobie jest czasochłonne - MCU pewnie większość czasu będzie czekało aż sterownik PLC wyślę odpowiedź. Dlatego na Twoim miejscu wpakowałbym wszystko w FPGA, które będzie gadało z kilkoma sterownikami PLC w tym samym czasie.
W końcu, zamiast bawić się w robótki ręczne, poszukałbym czy nie ma gotowego rozwiązania na rynku. Może będzie drogo, ale zaufaj mi, w ostatecznym rozrachunku i tak będzie szybciej i taniej niż robić wszystko od początku.
A zebranie kilku tysięcy pomiarów, biorąc pod uwagę, że rozmawiasz ze światem zewnętrznym, samo w sobie jest czasochłonne - MCU pewnie większość czasu będzie czekało aż sterownik PLC wyślę odpowiedź. Dlatego na Twoim miejscu wpakowałbym wszystko w FPGA, które będzie gadało z kilkoma sterownikami PLC w tym samym czasie.
W końcu, zamiast bawić się w robótki ręczne, poszukałbym czy nie ma gotowego rozwiązania na rynku. Może będzie drogo, ale zaufaj mi, w ostatecznym rozrachunku i tak będzie szybciej i taniej niż robić wszystko od początku.
korni007
2021-09-18 19:45:28
+0
@Wegrzynski nodered to kobyla, do iot się nie nadaje. Są fanatycy, ale prawda taka że to szit.
Wegrzynski
[OP]
2021-09-19 10:47:59
+0
nodered to kobyla, do iot się nie nadaje. Są fanatycy, ale prawda taka że to szit.
@korni007: I dlatego wszyscy go pakują do IoT :P Mam nadzieję, że uzasadnisz dlaczego to takie gunwo, jestem bardzo ciekawy :P