OPCJA 1: Ogólny koszt utworzenia połączenia TCP są:
- Tworzenie połączenia z gniazdem
- Wysyłanie danych
- Zburzyć połączenia z gniazdem
Krok 1: Wymaga wymianę pakietów, dlatego opóźnienie to z powodu opóźnienia sieci i czasu serwisowego serwera docelowego opóźnia się o &. Nie ma znaczącego użycia procesora w jednym z tych pól.
Krok 2: Zależy od wielkości wiadomości.
Krok 3: IIRC, po prostu wysyła pakiet "zamknięcie teraz", bez czekania na potwierdzenie celu, więc nie ma opóźnień.
Opcja 2: Koszty UDP: *
- Tworzenie obiektu UDP
- Wysyłanie danych
- W pobliżu obiektu UDP
Krok 1: wymaga minimalnej konfiguracji, bez latencji martwi , bardzo szybki.
Krok 2: BARDZO TRZEBA ROZMIARU, nie ma retransmisji w UDP, ponieważ nie obchodzi go, czy pakiet został odebrany przez kogokolwiek, czy nie. Słyszałem, że im większa wiadomość, tym większe prawdopodobieństwo, że otrzymywane dane zostaną uszkodzone, a regułą jest to, że stracisz pewien procent wiadomości powyżej 20 MB.
Krok 3: Minimalna praca, minimalny czas.
Opcja 3: Wykorzystanie ZeroMQ Zamiast
Ty porównując TCP UDP w celu zmniejszenia czasu włączeniem. NIESAMOWITY KOMPROMIS: Gniazda ZeroMQ.
ZMQ pozwala skonfigurować gniazdo do publikowania, w którym nie obchodzi Cię, czy ktoś nasłuchuje (np. UDP), i ma wiele detektorów na tym gnieździe. To NIE jest gniazdo UDP - jest to alternatywa dla obu tych protokołów.
Patrz: ZeroMQ.org w celu uzyskania szczegółowych informacji.
Jest bardzo szybki i odporny na uszkodzenia, i jest z tego powodu coraz popularniejszy w branży finansowej.
Myślę, że opóźnienie uścisku dłoni jest najbardziej znaczącym kosztem. – CodesInChaos
Ahh dobry punkt. Połączenie nie jest uznawane za otwarte, dopóki nie zakończy się cały uścisk dłoni. Jednak po otwarciu można przesyłać dane bez oczekiwania na potwierdzenie w każdym segmencie (z powodu przesuwanego okna) – seand
nie ma "potwierdzenia w każdym segmencie". – EJP