web-dev-qa-db-ja.com

TCPはまだUDPと比較してかなりのオーバーヘッドと見なされていますか?

受講している大学院クラスの分散アプリケーションに取り組んでいます。ピア接続のヘルスステータスを維持する方法の実装については、多くの議論がありました。考える ゴシップ 。このプロジェクトの主要なテーマの1つは、UDP通信に依存してTCP(ピア間の接続ステータスのこれらのリストを維持する)の「過剰な」帯域幅使用を克服する方法です。

しかし、私がこのスタンスに同意するかどうかはわかりません。私にとって、TCPの主な利点は、接続の信頼性ではなく、それが提供する輻輳制御です。TCP接続の可能性が高いようです。信頼性、輻輳制御、および組み込みの接続障害通知を取得できるため、ホスト間は実際にはUDPよりも軽量です。

UDPパケットを適切に利用できる可能性のあるシナリオの1つは、リンク障害を検出するためのバックアップメカニズムです(これは私が実装し始めたものですが、これが正しいアプローチであるとは確信していません)。ピアへのプライマリ接続はTCPソケットを介して行われ、組み込みの障害検出が行われるという考えですが、このリンクからの切断メッセージを見逃した場合は、 gossipy-他のホストからUDP経由で受信したstleピアリスト。

私はこれをすべて間違って見ていますか?この質問は、複数のノードにまたがる分散アプリケーションでのピア接続と障害の処理に固有のものであることに注意してください。

3
ctote

昔々、CISCitesとRISCitesという2つの強力な軍隊の間で大きな戦争が繰り広げられていました。 RISCの部隊は、彼らの命令セットがより単純だったので、彼らの軍隊はより強力であると信じていました。扱いにくいCISCは、命令セットと実際の実行の間に重い変換レイヤーが必要であり、命令はCISC形式からはるかに単純なRISCのような形式に縮小されたため、最初はRISCを使用するだけで済みます。このオーバーヘッドを排除し、システムのパフォーマンスを大幅に向上させます。

CISCitesは、命令が意味的に強力だったため、システムがより単純であると反論しました使用する

これらの主張は両方とも客観的に真実でした。しかし、結局、何か面白いことが起こりました。世界は変わり続け、ムーアの法則も変わりました。 CISC変換のオーバーヘッドのコストは固定コストでしたが、ハードウェアが高速になるたびにコストは小さくなりました。その間、RISCは使いやすくなりませんでした。今日、CISCは本質的に世界を引き継いでいます。

賢い人は、UDP/TCPの状況との類似点がいかに簡単に現れるかを見ることができるはずです...

3
Mason Wheeler