Ahoj,
Ja používam, knižnicu Netty https://netty.io/ a serializáciu mám urobenú
cez https://github.com/RuedigerMoeller/fast-serialization.
Dlho som testoval rôzne možnosti a toto vychádza najlepšie. Ďalšia
výhoda je, že keď to beží na Linuxe dá sa zapnúť Epoll
(EpollEventLoopGroup) a je to o dosť výkonnejšie ako Javácke NIO.
Mám na tom postavený Scada systém, v reále tam býva pripojených cez 20
klientov a každému sa streamuje cca. 200KB/s. (cca. 24000 meraní)
Postavené je to presne ako píšeš, po pripojení dostane klient obraz
všetkých meraní a potom mu už chodia len zmeny. Frontu mám urobenú tak,
že keď linka nestíha začne zahadzovať zmeny, ktoré nestíha posielať..
Arsi
------------------------------------------------------------------------
*From:* Ing. Rastislav Siekel
*Sent:* Thursday, November 16, 2017 10:01AM
*To:* Konference
*Subject:* Ako posielať veľké dáta - REST, alebo JMS, ...
Ahojte Javisti,
chcel by som sa spýtať, či má niekto praktické skúsenosti s posielaním
veľkého množstva dát ce REST alebo JMS, alebo inak.
Máme aplikáciu, ktorá posiela zmeny dát pomocou JMS. Potrebujeme
dorobiť, aby klient pri inicializácii dostal všetky dáta a potom bude
dostávať už len zmeny.
Napadlo nám viacero riešení:
1. Použiť REST. Ale príprava takého množstva dát môže byť dlhá a môže
nastať timeout. Preto môžeme posielať dáta po stránkach, kde v
každej stránke bude URL na nasledujúcu stránku. Napr. ako tu:
https://stackoverflow.com/questions/13872273/api-pagination-best-practices.
Tam môže nastať problém čo s dátami, ktoré sa zmenia medzitým.
<https://stackoverflow.com/questions/13872273/api-pagination-best-practices>
2. Použiť JMS - klient si pripraví dočasnú frontu a server mu tam dáta
pošle cez JMS. Po odoslaní dát sa fronta zruší. Tam je potrebné mať
JMS klienta na oboch stranách, ako je to popísané napr. tu:
http://activemq.apache.org/how-should-i-implement-request-response-with-jms.html
Nemáte s tým niekto praktické skúsenosti? Použili ste REST alebo JMS,
alebo niečo úplne iné?
Vďaka za každý názor,
Rastislav "Bedo" Siekel.