GNU/Linux >> Linux Esercitazione >  >> Linux

Unix socket vs host TCP/IP:porta

Soluzione 1:

I socket Unix sono un po 'più veloci in quanto non hai l'overhead tcp. Se ti rendi conto che questa perdita di prestazioni è una questione di carico del server. Se non hai un carico del server molto elevato, non lo riconoscerai.

Se usi Jails (FreeBSD) o qualche altra tecnologia di virtualizzazione per separare ad es. MySQL-Server dal server Web, si utilizza spesso l'impostazione tcp/ip invece dei socket. Tuttavia, le regole del firewall devono limitare l'accesso.

Devi scoprire se il tuo sistema è sottoposto a un carico pesante in modo che un socket sia un must o puoi concentrarti su una buona progettazione del sistema (separando i servizi), quindi una soluzione tcp/ip sarebbe migliore.

Quindi rendi breve una risposta lunga:

Sì, c'è una differenza di prestazioni, le prese sono più veloci. Se non soffri di un elevato carico del server, scegli quello che si adatta meglio al design del tuo sistema.

Soluzione 2:

È fondamentalmente un compromesso tra prestazioni e flessibilità. I socket di dominio Unix ti daranno prestazioni leggermente migliori, mentre un socket connesso a localhost ti darà una portabilità leggermente migliore. Puoi spostare facilmente l'app server su un altro sistema operativo semplicemente modificando l'indirizzo IP da localhost a un nome host diverso.

Un socket di dominio Unix utilizza il file system locale per creare un meccanismo IPC tra i processi server e client. Vedrai un file in /var da qualche parte quando il socket del dominio Unix è connesso.

Se stai cercando esclusivamente la soluzione per le massime prestazioni, potresti voler esplorare un IPC a memoria condivisa. Ma questo è un po' più complesso.

Soluzione 3:

Vantaggi dei socket di dominio Unix.

  1. L'accesso può essere gestito tramite il sistema di autorizzazioni utente Unix impostando le autorizzazioni sul socket stesso o tramite il server che legge il nome utente del client che si connette.
  2. Minori possibilità di esporre inavvertitamente la presa al mondo esterno. Ad esempio, se il server esegue anche un proxy Web, ciò potrebbe inavvertitamente consentire connessioni ai socket su localhost.

Svantaggi dei socket di dominio Unix

  1. Non portabile su sistemi non unix.
  2. Può essere scomodo con chroot, jail o simili

Linux
  1. Erlang:Supporto socket di dominio UNIX?

  2. Quale tecnica Linux IPC usare?

  3. Effetto di SO_SNDBUF

  4. Come posso eliminare la porta TCP 16969 in Bash?

  5. Differenza tra i socket STREAM di dominio UNIX e DATAGRAM?

Come connettere NGINX a PHP-FPM usando UNIX o TCP/IP Socket

controlla tutti i socket aperti nel sistema operativo Linux

Crea una connessione alla porta seriale virtuale su TCP

Utilizzo della comunicazione TCP/IP localhost in un programma:sempre sicuro?

Monitora il traffico TCP su una porta specifica

SSH si connette a un socket UNIX invece che al nome host