C/C++で開発された「サーバー」にTCPソケットを介して接続するJavaアプリがあります。
アプリとサーバーの両方が同じマシン、Solaris ボックスで実行されています (ただし、最終的には Linux への移行を検討しています)。交換されるデータのタイプは単純なメッセージです (ログイン、ログイン ACK、クライアントが何かを要求し、サーバーが応答します)。各メッセージの長さは約 300 バイトです。
現在、ソケットを使用しており、すべて問題ありませんが、IPC メソッドを使用して、データを交換するためのより高速な方法 (低レイテンシー) を探しています。
私はネットを調査しており、次のテクノロジーへの参照を思いつきました。
- 共有メモリ
- パイプ
- キュー
- DMA (ダイレクト メモリ アクセス) と呼ばれるものと同様に
しかし、それぞれのパフォーマンスの適切な分析を見つけることができず、JAVA と C/C++ の両方でそれらを実装する方法 (相互に通信できるようにするため) も見つかりませんでした。
このコンテキストでの各方法のパフォーマンスと実現可能性について誰でもコメントできますか? 有用な実装情報へのポインタ/リンクはありますか?
編集・更新
ここで得たコメントと回答に続いて、Unix Domain Sockets に関する情報を見つけました。これは、パイプのすぐ上に構築されているようで、TCP スタック全体を節約してくれます。これはプラットフォーム固有なので、JNI またはjudsまたはjunixsocketでテストする予定です。
次の可能なステップは、パイプの直接実装、次に共有メモリですが、余分なレベルの複雑さについて警告されています...
ご協力いただきありがとうございます