Ini mungkin pertanyaan konyol tapi saya dan beberapa teman telah membahas keterbatasan potensial TCP. Kami memiliki aplikasi yang akan mendengarkan klien (pikirkan gateway) dan rutekan semua data klien yang terhubung melalui satu penerbit kafka yang terhubung ke satu topik.
Salah satu teman saya mengatakan bahwa TCP akan menjadi masalah bagi gateway ini karena akan membuat koneksi baru untuk setiap pesan yang dikirim (bukan kafka tetapi protokol transportasi yang mendasarinya sendiri adalah masalahnya), membutuhkan port baru setiap kali. Pada tingkat kita akan mengirim pesan klien ini (gigabytes), kafka akan kehabisan port untuk membaca ??
Saya telah melakukan pengembangan selama beberapa tahun dan belum pernah mendengar ini sebelumnya dan ingin mendapatkan pemahaman tingkat yang lebih rendah (yang saya pikir saya miliki) tentang cara kerja TCP. Pemahaman saya adalah bahwa ketika Anda membuat koneksi TCP, koneksi itu tetap terbuka sampai waktunya habis oleh aplikasi atau ditutup secara paksa oleh server atau klien. Data yang dikirim melalui koneksi ini adalah stream dan tidak akan membuka / menutup koneksi baru terlepas dari 3 V (volume, kecepatan, variasi).
Sejauh port pergi, satu port digunakan untuk penyiaran dan port deskriptor file internal adalah sesuatu yang dikelola aplikasi untuk baca / tulis klien individu. Saya tidak pernah mengerti TCP untuk membuat koneksi baru untuk setiap paket yang ditulisnya.
Saya minta maaf sebelumnya jika pertanyaan ini tidak langsung dan atau terlalu kabur. Saya benar-benar bingung dan berharap seseorang dapat memberikan lebih banyak konteks untuk apa yang dikatakan rekan saya?
SO_REUSEADDR
untuk menutup soket lebih cepat, meningkatkan jangkauan port sementara dll. Selain itu TCP_FASTOPEN
dan beberapa toggle tingkat OS dapat digunakan untuk mengatasi keterbatasan TCP yang terkenal lainnya. Either way, tidak ada gunanya membahas keterbatasan TCP ketika Anda bahkan tidak memiliki beban kerja untuk menguji.