Node.UNIX 도메인 소켓을 사용하고 싶습니다.

입문


Node.js가 사용할 수 있는 통신 방식은 TCP 플러그인, 유동식 IPC 단점과 HTTP 인터페이스가 있다.HTTP 인터페이스는 TCP 콘센트로 실제로 이동되기 때문에 사실상 앞의 두 개이다.
그렇다면 TCP 소켓과 유동식 IPC 단점은 어떤 차이가 있습니까?
TCP 소켓은 TCP/IP에서 소켓을 사용하여 통신하는 방식입니다.
한편, 유동식 IPC 단점은 IPC(InterProcess Communication)에서 같은 기계에서 유동식 전송을 통해 프로세스 간 통신을 하는 통신 방식이다.
유닉스에서 이 유동식 IPC 단점을 실현하는 기술은'유닉스 도메인 소켓'이다.

UNIX 도메인 소켓이란 무엇입니까?


로컬에서 열린 플러그인 파일을 통해 서버 측과 클라이언트가 통신하는 방법
Node.js에서는 사용할 수 없지만 일반적으로 unix:// 에서 URL이 시작됩니다.
TCP와 달리 로컬 파일을 지정하여 통신하기 때문에 도메인 해결 및 외부 통신을 하지 않습니다.
따라서 TCP보다 빠릅니다.
그 검증에 관해서는 보십시오Performance Analysis of Various Mechanisms for Inter-process Communication.

한번 써보세요!이 문장의 견본 프로그램unix-domain-socket에서.
UNIX 도메인 소켓은 Node입니다.js의 구축 모듈net에서 제공합니다.
따라서 이 글은 주로 net 을 사용하여 프로그램을 쓴다.
Net | Node.js

송신자


다음 프로그램을 만들었습니다.
import net from 'net';

// UNIXドメインソケットのコネクションを作成する
// net.createConnectionの引数にファイルを指定するとUNIXドメインソケットで繋がる
const client = net.createConnection('/tmp/unix.sock');
client.on('connect', () => {
  console.log('connected.');
});
client.on('data', (data) => {
  console.log(data.toString());
});
client.on('end', () => {
  console.log('disconnected.');
});
client.on('error', (err) => {
  console.error(err.message);
});
client.write('hello');

수신단


다음 프로그램을 만들었습니다.
import net from 'net';
import fs from 'fs';

// サーバーを設定
const server = net.createServer((connection) => {
  console.log('connected.');
  connection.on('close', () => {
    console.log('disconnected.');
  });
  connection.on('data', (data) => {
    console.log(data.toString());
  });
  connection.on('error', (err) => {
    console.error(err.message);
  });
  connection.write('unix domain socket');
  connection.end();
});

// ソケットファイルを削除(存在するとlistenできない)
try {
  fs.unlinkSync('/tmp/unix.sock');
} catch (error) {}

// UNIXドメインソケットでlistenする
server.listen('/tmp/unix.sock');

실행해 보다


모두 동일한 가상 서버에서 실행됩니다.
왼쪽은 발송자, 오른쪽은 수신자.

끝내다


이 UNIX 도메인 소켓은 로컬 컴퓨터에서 프로세스 간에 통신할 때 사용할 수 있습니다.
예를 들어, Kubernetes의 Pod 내의 컨테이너 간에 통신할 때 사용할 수 있습니다.
볼륨을 공유하고 마운트하면 도메인 이름 해석에 얽매이지 않고 통신할 수 있습니다.
포트에서 통신하는 것에 비하면 제한을 받지 않는 부분도 있으니 한번 사용해 보는 것은 어떨까요?

좋은 웹페이지 즐겨찾기