Przesylanie duzych danych

0

Sprawa wyglada tak.

Jest server ktory codziennie dostaje od clientow (zalozmy ze okolo 20) dane od 200 MB do 1.5 GB (codziennie). Jest to dosc spora paczka codziennie do wyslania

  1. Plik jest zipowany
  2. Plik jest wysylany 1-2 dziennie
  3. plik jest wysylany na ftp

Problemy sa nastepujace

  1. Brak live stream informacji. Jezeli chcemy wiedziec co sie stalo godzine temu... musimy czekac 24 godziny.
  2. Jezeli jest slaby internet (bo klient jest na pustyni np) to: zrywa polaczenie, plik jest uszkodzony, wysylanie trwa bardzo dlugo

Znalazlem dwa sposoby na rozwiazanie tego. I nie jestem pewien ktory bylby lepszy

Na 100% zamiast tworzenia jednego pliku (zip) trzeba bedzie to wysylac co jakas minute moze co 5 minut to co program wygeneruje (mam dostep do kodu zrodlowego tego co generuje te pliki)

I teraz mam zagawodke jak to wysylac

  1. https://www.rabbitmq.com/
    postawic u klientow rabbitmq oraz na serverze. Napisac prosty skrypt ze jezeli cos dostal rabbitmq to ma to wyslac. Jezeli nie moze (bo nie ma internetu) to musi to kolekcjonowac.
    Nigdy wczesniej z tym nie pracowalem, ale wyglada dosc fajnie. Wazne jest ze dziala na windowsie (tak, taki wymog...)
  2. P2P
    Napisac prosty skrypt ktory sprawdza czy jest cos w folderze. Jezeli jest to wysyla to do servera po czym usuwa. Po stronie servera, jezeli plik jest gotowy to przeniesc go na miejsce docelowe (na podstawie nazwy pliku)

problem przy 1) jest taki, ze w sumie ten rabbitmq nadaje sie dobrze do routingu a nie do prostego polaczenia. Dodatkowo bede musial wysylac zdjecia.
problem przy 2) jest taki, ze klient uslyszy P2P/Torrent i moze nie zechciec tego (tak uslyszalem...). No i trzeba bedzie obsluzyc polaczenie recznie. Przez co moze byc wiecej bledow (bedzie trzeba obsluzyc wiecej przypadkow niz przy 1))

zaleta 1) jest taka, ze jest to gotowe narzedzie ktore jest uzywane przez duze firmy.
zaleta 2) jest taka, ze jest to customowe rozwiazanie. Wiec jezeli bedzie trzeba zrobic cos dziwnego. Mozna to zrobic. Do tego to rozwiazanie wydaje sie lzejsze.

Moze macie jakies inny pomysly? Co Wy byscie wybrali?

2

Dropbox jakiś? ;)

2

A zróbcie dedykowanego klienta torrenta. Protokół torrent zapewnia paczkowanie - składanie dużych plików z małych części, pozwala na ponowienia transmisji, weryfikuje poprawność przesłanych paczek itp...

0

Prędkości transferu nie da się w magiczny sposób przeszkoczyć, można za to walczyć z compression ratio. Więc widze tutaj jedynie problem redefinicji wymagań funkcjonalnych (zastanawienie sie czy trzeba to wysylac nawet z pustyni) oraz problem 'Hutter Prize' (zastanowic sie jak powiekszyc compression ratio). Jak dla mnie to może wystarczyłby pigz -> scp ?

Ponadto, jeżeli tylko parę bajtów się zmienia w całych dużych danych to chmura byłaby strzałem w dziesiątke - dropbox ma algorytm do wysyłania tylko zmienionych bloków danych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1