Welcome to Sign in | Help

Re: Sincronizare SQLServer Express

  •  07-02-2007, 7:43 PM

    Re: Sincronizare SQLServer Express

    crestinul:

    Din cate am inteles ca transport se foloseste udp care e un protocol conectionless adica nu se garanteaza ca se primesc toate datagramele si nici oridinea lor,asta trebuie facuta la nivel de aplicatie.

    Service broker garanteaza asta adica sa zicem la momentul t imi pica linia si nu se poate transmite datagrama ce se intampla cu ea ramane in coada locala urmand ca apoi sa fie transmisa toata coada de server broker.

    Si cum gestioneaza acknolegmentul adica de unde stiu eu de pe sender ca datagrama a fost transmisa ok -din ce stiu eu udp nu face chestia asta fiind protocol conectionless.

    Multumesc

    Protocolul folosit este TCP, nu UDP. Insa asta e irelevant, pentru ca SSB trebuie sa ofere garantzii intre baze de date, nu intre socket-uri. Cum SSB garanteaza livrarea mesajelor in baza de date, confirmarea oferita de TCP nu este suficienta. Pe deasupra mesajele pot traversa mai multe hop-uri (prin forwarding, vezi mai sus) si in acest caz din nou garantziile oferite de TCP nu sint suficiente. Ca urmare mesajele sint impartzite in fragmente (de 90k marime) si sint sint tratate foarte mult ca o datagrama UDP: SSB retine fiecare mesaj trimis pina cind este confirmat de destinatar. Confirmarea (acknowledgement) este trimisa de destinatar doar dupa ce mesajul este inscris in queue-ul final si transactia este comisa. Ssender-ul foloseste un sliding window cite mesaje sa trimita si fae retry periodic la mesajele ne-confirmate. Pentru cine este familiar cu cum functioneaza TCP intern, este exact acelasi mecanism.
     


    http://rusanu.com
View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems