私は、新しい情報が利用可能であることを通知するために、別のサーバにUDPパケットを送信しようとしています。パケットのデータはかなり小さく、およそ100バイトです。基本的にイベントタイプとUUIDです。単一のパケットを送信すると、サイズはどれくらいかかりますか?
私は1つのパケット(What is the largest Safe UDP Packet Size on the Internet)にどれくらいの情報が収まるかという制限があることに気付きましたが、それに問題はないようです。私の場合はUDPパケットが落とされる可能性があることを知っています。私のケースではパケットは単なる提案で、他のサーバが新しいデータを知っている時間を最適化します。物を壊さないでください。
これを念頭に置いて、私の質問は、そのパケットのサイズがどのくらい重要かということです。 JSONとして情報をエンコードすると、約75-100バイトのように見えます。私はまた、はるかに小さくなる生のバイナリ形式で情報をエンコードすることができます(私はおそらく30バイト以下のようなものに収めることができます)。
100バイトペイロードのUDPパケットは、30バイトペイロードよりも「低速」に移動しますか?私は各パケットにオーバーヘッドがあることを知っていますが、断片化を避けているとパケットサイズがパフォーマンスにどのくらいの影響を与えるかはわかりません(明らかに遅く、信頼性の低いものになります)。ペイロードのサイズは、パケットが廃棄される可能性に影響しますか?
要約すれば、よりわかりやすくコンパクトなフォーマットを作成する方が良いか、アプリケーションの進化に伴って下位互換性を維持しやすくするためにJSONを使うのが良いかどうかを判断しようとしていますが、各パケットのサイズの点で。
あなたが言っている限界はそれほど重要ではありません。イーサネットにも*最小*サイズがあることに注意する必要があります。したがって、実際に小さくすると効果が全くないかもしれません。 – EJP
もう少し考えてみると、ネットワークが飽和していない場合には、実質的に違いはないようです。パケットは送信されますが、それより長い場合は、比較的少ないナノ秒(1Gbネットワークではビットあたり約1ナノ秒)かかることがあります。これらのパケットがネットワークを飽和させた場合、余分な60%のスペースが問題になる可能性があります(小さいサイズによるネットワークの飽和を避けることによって)。さもなければ、それは本当に何の具体的な効果もないようです。私のユースケースはネットワークをまったく飽和させるとは思わないが、私はそれについて本当に考えなかった。 –