Bu aptalca bir soru olabilir, ancak ben ve birkaç arkadaş TCP'nin potansiyel sınırlamalarını tartışıyoruz. Müşterileri dinleyecek (bir ağ geçidi düşünün) ve bağlı tüm müşteri verilerini tek bir bağlı kafka yayıncısı aracılığıyla tek bir konuya yönlendirecek bir uygulamamız var.
Arkadaşlarımdan biri TCP'nin bu ağ geçidi için bir sorun olacağını söylüyor çünkü her mesaj için yeni bir bağlantı kuracak (kafka değil, temel ulaşım protokolünün kendisi sorun), her seferinde yeni bir bağlantı noktası gerektiriyor. Bu istemcilere mesaj göndereceğiz (gigabayt), kafka okumak için liman tükenecek ??
Birkaç yıl boyunca gelişim yaptım ve bunu daha önce hiç duymadım ve TCP'nin nasıl çalıştığına dair daha düşük düzeyde bir anlayış elde etmek istiyorum. Anladığım kadarıyla bir TCP bağlantısı oluşturduğunuzda, bu bağlantı uygulama tarafından zaman aşımına uğrayana veya sunucu veya istemci tarafından zorla kapatılana kadar açık kalır. Bu bağlantı üzerinden gönderilen veriler bir akıştır ve 3 V'lerden (hacim, hız, çeşitlilik) bağımsız olarak yeni bağlantıları açmaz / kapatmaz.
Bağlantı noktaları ilerledikçe, bir bağlantı noktası yayın için kullanılır ve dahili dosya tanımlayıcı bağlantı noktası, uygulamanın tek tek istemcilerin okuma / yazma için yönettiği bir şeydir. TCP'yi yazdığı her paket için yeni bağlantılar kuracağını hiç anlamadım.
Bu soru doğrudan ve çok belirsiz değilse şimdiden özür dilerim. Şaşkınım ve birisinin meslektaşlarımın söylediklerine daha fazla bağlam sağlayabileceğini umuyorum?
SO_REUSEADDR
Yuvaları daha hızlı kapatmak, geçici bağlantı noktalarını genişletmek vb. İçin kullanılır. Ayrıca TCP_FASTOPEN
, TCP'nin diğer iyi bilinen sınırlamaları için birkaç işletim sistemi düzeyinde geçiş kullanılabilir. Her iki durumda da, test edilecek bir iş yükünüz bile olmadığında TCP sınırlamalarını tartışmanın bir anlamı yoktur.