unix domain socketでファイル記述子をやりとりするソケットプーリングを書いてみた
unix domain socket経由でプロセス間でファイル記述子のやりとりができるので、コネクションをプーリングして、unix domain socket経由で別プロセスに貸し出すスクリプトを試しに書いてみました。
poold.pl は起動すると 127.0.0.1:11211 へのコネクションを 3 つ作って保持し、unix domain socketをlistenしてクライアントからの貸し出し要求を待ちます。
ちなみに、unix domain socket は名前付きのではなく、abstract namespace のを作っています。これの利点は、パスに依存しないので、chroot内のプロセスと外のプロセスがやりとりできる点です。
client.pl は起動すると、unix domain socket 経由でソケットを獲得して、使い終わったらまたunix domain socket経由でプーリングプロセスに返却します。
- 利点
- ファイル記述子を貸し出してあとの通信には関与しないので、通信量が多いほど、proxy型のプーリング機構より早いと思います。ロードバランサに例えるなら、L7のproxy型とL4のDSRの違いのようなものです。
- 難点