Czy ktoś mógłby mi opisać zalety i wady korzystania z pliku gniazda Unix vs. localhost tcp / ip: port podczas konfigurowania usług na serwerze (Ubuntu, FWIW)?
W tym konkretnym przypadku jest to serwer Python WSGI (uWSGI), ale interesuje mnie ogólnie (np. Wiem, że możesz skonfigurować MySQL na dwa sposoby).
Zdaję sobie sprawę, że korzystanie z tcp / ip oznacza, że usługi mogą być udostępniane innym komputerom, ale interesuje mnie tylko to, czy występują jakieś kompromisy w wydajności podczas lokalnego dostępu do usług.
Twoje zdrowie.
Odpowiedzi:
Gniazda unixowe są trochę szybsze, ponieważ nie masz narzutu TCP. Jeśli zauważysz, że utrata wydajności jest kwestią obciążenia serwera. Jeśli nie masz bardzo dużego obciążenia serwera, nie rozpoznasz go.
Jeśli używasz Jails (FreeBSD) lub innej technologii wirtualizacji, aby oddzielić np. MySQL-Server od Webserver, często używasz konfiguracji tcp / ip zamiast gniazd. Jednak reguły zapory muszą ograniczać dostęp.
Musisz dowiedzieć się, czy twój system jest obciążony, więc gniazdo jest koniecznością, lub możesz skupić się na ładnym projekcie systemu (oddzielanie usług), wtedy rozwiązanie tcp / ip byłoby lepsze.
Tak więc krótko odpowiedz:
Tak, istnieje różnica w wydajności, gniazda są szybsze. Jeśli nie odczuwasz dużego obciążenia serwera, po prostu wybierz to, co lepiej pasuje do projektu twojego systemu.
źródło
socket(AF_INET, SOCK_STREAM, ...)
)Jest to w zasadzie kompromis między wydajnością a elastycznością. Gniazda domeny uniksowej zapewniają nieco lepszą wydajność, a gniazdo podłączone do localhost zapewnia nieco lepszą przenośność. Możesz łatwo przenieść aplikację serwera do innego systemu operacyjnego, po prostu zmieniając adres IP z localhost na inną nazwę hosta.
Gniazdo domeny Unix korzysta z lokalnego systemu plików, aby utworzyć mechanizm IPC między procesami serwera i klienta. Zobaczysz plik w / var gdzieś po podłączeniu gniazda domeny Unix.
Jeśli szukasz wyłącznie rozwiązania zapewniającego najwyższą wydajność, możesz poznać IPC z pamięcią współużytkowaną. Ale to trochę bardziej skomplikowane.
źródło
Plusy gniazd domeny Unix.
Wady gniazd domeny Unix
źródło