Dies mag eine dumme Frage sein, aber ein Ich und einige Freunde haben die möglichen Einschränkungen von TCP diskutiert. Wir haben eine Anwendung, die auf Clients wartet (denken Sie an ein Gateway) und alle verbundenen Client-Daten über einen einzigen verbundenen Kafka-Publisher zu einem Thema weiterleitet.
Einer meiner Freunde sagt, dass TCP ein Problem für dieses Gateway sein wird, da es für jede gesendete Nachricht eine neue Verbindung herstellen wird (nicht Kafka, sondern das zugrunde liegende Transportprotokoll selbst ist das Problem) und jedes Mal einen neuen Port benötigt. Bei der Geschwindigkeit, mit der wir diesen Clients Nachrichten (Gigabyte) senden, gehen kafka die Ports aus, von denen gelesen werden kann ??
Ich habe mehrere Jahre lang an der Entwicklung gearbeitet und noch nie davon gehört. Ich würde gerne ein tieferes Verständnis (von dem ich dachte, ich hätte es) für die Funktionsweise von TCP erlangen. Wenn Sie eine TCP-Verbindung herstellen, bleibt diese nach meinem Verständnis geöffnet, bis die Zeitüberschreitung durch die Anwendung abgelaufen ist oder der Server oder der Client die Verbindung zwangsweise geschlossen hat. Daten, die über diese Verbindung gesendet werden, sind ein Stream und öffnen / schließen keine neuen Verbindungen, unabhängig von den 3 V (Lautstärke, Geschwindigkeit, Sorte).
In Bezug auf die Ports wird ein Port für die Übertragung verwendet, und der interne Dateideskriptor-Port wird von der Anwendung zum Lesen / Schreiben einzelner Clients verwaltet. Ich habe nie verstanden, dass TCP für jedes Paket, das es schreibt, neue Verbindungen herstellt.
Ich entschuldige mich im Voraus, wenn diese Frage nicht direkt und / oder zu vage ist. Ich bin wirklich verblüfft und hoffe, dass jemand mehr Kontext zu den Aussagen meiner Kollegen liefern kann?
SO_REUSEADDR
zu umgehen : Verwenden Sie , um Sockets schneller zu schließen, die Reichweite von ephemeren Ports usw. zu erhöhen. Darüber hinaus können TCP_FASTOPEN
mehrere Umschalter auf Betriebssystemebene verwendet werden, um andere bekannte Einschränkungen von TCP zu umgehen. In beiden Fällen macht es keinen Sinn, die Einschränkungen von TCP zu diskutieren, wenn Sie nicht einmal eine Workload zum Testen haben.