Re: Ako posielať veľké dáta - REST, alebo JMS, ...

2017-11-21 Tema obsahu arsi

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.
   
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.











Re: Ako posielať veľké dáta - REST, alebo JMS, ...

2017-11-20 Tema obsahu Oto Buchta
REST neznamená ani JSON a už vůbec ne ORM. To jsou jen možné implementace.
REST WS, neboli JSON CORBA, jsou na big data samozřejmě vysoce nevhodné.
Do FTP bych já osobně nešel...

Dne 20. 11. 2017 19:52 napsal uživatel "Lukas "lzap" Zapletal" <
luka...@zapletalovi.com>:

> Jak REST tak JMS nejsou vhodné technologie na přenos velkých dat. Nicméně,
> máme exporter do formátu CSV a dělat to jako službu REST je velmi nevhodné
> pro dávkové posílání - velké množství alokací a pomalost při použití ORM.
> Takže pro přenos se udělal speciální ne-REST HTTP endpoint, který data
> streamuje.
>
> Nejefektivnější by byl samozřejmě speciální kanál (např. FTP/SSL) kam by se
> nahrály dávkové soubory (surová data) a ta se naimportovala, pokud je
> taková
> možnost průchodná.
>
>
>
> -
> Later,
>  Lukas
> --
> Sent from: http://konference-java-cz.958153.n3.nabble.com/
>


Re: Ako posielať veľké dáta - REST, alebo JMS, ...

2017-11-20 Tema obsahu Ing. Rastislav Siekel
Vďaka za reakciu, 

zatiaľ to máme pripravené cez JMS, ale ani ten streamovaný HTTP nie je
zlý nápad. Len tam by sme museli celú štruktúru robiť ručne. 

Rastislav "Bedo" Siekel. 

On 20.11.2017 19:52, Lukas "lzap" Zapletal wrote:

> Jak REST tak JMS nejsou vhodné technologie na přenos velkých dat. Nicméně,
> máme exporter do formátu CSV a dělat to jako službu REST je velmi nevhodné
> pro dávkové posílání - velké množství alokací a pomalost při použití ORM.
> Takže pro přenos se udělal speciální ne-REST HTTP endpoint, který data
> streamuje.
> 
> Nejefektivnější by byl samozřejmě speciální kanál (např. FTP/SSL) kam by se
> nahrály dávkové soubory (surová data) a ta se naimportovala, pokud je taková
> možnost průchodná.
> 
> -
> Later,
> Lukas
> --
> Sent from: http://konference-java-cz.958153.n3.nabble.com/

Re: Ako posielať veľké dáta - REST, alebo JMS, ...

2017-11-20 Tema obsahu Lukas "lzap" Zapletal
Jak REST tak JMS nejsou vhodné technologie na přenos velkých dat. Nicméně,
máme exporter do formátu CSV a dělat to jako službu REST je velmi nevhodné
pro dávkové posílání - velké množství alokací a pomalost při použití ORM.
Takže pro přenos se udělal speciální ne-REST HTTP endpoint, který data
streamuje.

Nejefektivnější by byl samozřejmě speciální kanál (např. FTP/SSL) kam by se
nahrály dávkové soubory (surová data) a ta se naimportovala, pokud je taková
možnost průchodná.



-
Later,
 Lukas
--
Sent from: http://konference-java-cz.958153.n3.nabble.com/


Re: Ako posielať veľké dáta - REST, alebo JMS, ...

2017-11-16 Tema obsahu Ing. Rastislav Siekel
Díky, toto je dobrý postup v každom prípade. 

Bedo. 

On 16.11.2017 11:44, Oto Buchta wrote:

> Ahoj, 
> 
> pokud je problem co s daty, ktere se zmeni behem strankovani, stejny problem 
> je i v pripade, kdyz to trva dlouho byt v prubehu jednoho requestu. 
> Jenom je race-condition mene pravdepodobna. 
> 
> Doporucil bych nasledujici postup: 
> 1) Klient se registruje na JMS a bude bufferovat zpravy, dokud neprobehne 
> prvotni inicializace 
> 2) Asynchronne si vyzada data pres REST 
> 3) Server udela kopii/klon/branch dat 
> 4) Server do souboru/db/... nacpe data v predepsanem formatu 
> 5) V ramci async volani vrati data v jednom baliku. 
> 6) Nakonec smahne data 
> 7) Klient doresi inicializaci a odblokuje buffer 
> 
> Snad to pomuze... 
> 
> 2017-11-16 10:01 GMT+01:00 Ing. Rastislav Siekel :
> 
>> 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í: 
>> 
>> * 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. [1]
>> * 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
>>  [2]
>> 
>> 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.
> 
> -- 
> Oto 'tapik' Buchta, ta...@buchtovi.cz, http://tapikuv.blogspot.com
 

Links:
--
[1]
https://stackoverflow.com/questions/13872273/api-pagination-best-practices
[2]
http://activemq.apache.org/how-should-i-implement-request-response-with-jms.html

Re: Ako posielať veľké dáta - REST, alebo JMS, ...

2017-11-16 Tema obsahu Zatkovský Dušan

Nesla by na to pouzit kafka?


Dňa 16. 11. 2017 o 11:44 Oto Buchta napísal(a):

Ahoj,

pokud je problem co s daty, ktere se zmeni behem strankovani, stejny 
problem je i v pripade, kdyz to trva dlouho byt v prubehu jednoho 
requestu.

Jenom je race-condition mene pravdepodobna.

Doporucil bych nasledujici postup:
1) Klient se registruje na JMS a bude bufferovat zpravy, dokud 
neprobehne prvotni inicializace

2) Asynchronne si vyzada data pres REST
3) Server udela kopii/klon/branch dat
4) Server do souboru/db/... nacpe data v predepsanem formatu
5) V ramci async volani vrati data v jednom baliku.
6) Nakonec smahne data
7) Klient doresi inicializaci a odblokuje buffer

Snad to pomuze...

2017-11-16 10:01 GMT+01:00 Ing. Rastislav Siekel >:


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.


 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.






--
Oto 'tapik' Buchta, ta...@buchtovi.cz , 
http://tapikuv.blogspot.com




Re: Ako posielať veľké dáta - REST, alebo JMS, ...

2017-11-16 Tema obsahu Oto Buchta
Ahoj,

pokud je problem co s daty, ktere se zmeni behem strankovani, stejny
problem je i v pripade, kdyz to trva dlouho byt v prubehu jednoho requestu.
Jenom je race-condition mene pravdepodobna.

Doporucil bych nasledujici postup:
1) Klient se registruje na JMS a bude bufferovat zpravy, dokud neprobehne
prvotni inicializace
2) Asynchronne si vyzada data pres REST
3) Server udela kopii/klon/branch dat
4) Server do souboru/db/... nacpe data v predepsanem formatu
5) V ramci async volani vrati data v jednom baliku.
6) Nakonec smahne data
7) Klient doresi inicializaci a odblokuje buffer

Snad to pomuze...

2017-11-16 10:01 GMT+01:00 Ing. Rastislav Siekel :

> 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.
>
> 
>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.
>
>
>
>


-- 
Oto 'tapik' Buchta, ta...@buchtovi.cz, http://tapikuv.blogspot.com