Ana içeriğe geç
Programlama

Go 1.27 HTTP/1 bağlantı yeniden kullanımını hızlandırdı

Öne çıkanlar

  • Go 1.27, okunmamış HTTP/1 yanıt gövdelerini arka planda 256 KB veya 50 milisaniyeye kadar otomatik tüketiyor.
  • Yeni mekanizma sayesinde test senaryosundaki istek süreleri 710 milisaniyeden 150 milisaniyeye geriledi.
  • Geliştiricilerin bağlantıyı korumak için elle yazdığı gövde boşaltma rutinlerine duyulan ihtiyaç sona erdi.

Go ekibi, Go 1.27 sürümüyle birlikte standart kütüphanedeki net/http paketine otomatik gövde tüketme mekanizması ekledi. Önceki sürümlerde HTTP/1 protokolü kullanılırken yanıt gövdesi tamamen okunmadan kapatıldığında bağlantı yeniden kullanılamıyor ve her istek için sıfırdan TCP ile TLS el sıkışması yapılıyordu. Yeni sürüm, okunmamış yanıt gövdelerini arka planda otomatik olarak tüketerek mevcut bağlantıların korunmasını sağladı ve testlerde işlem süresini yaklaşık 5 kat kısalttı.

HTTP/1 protokolünde istek ve yanıtlar aynı bağlantı üzerinde sıralı bayt akışı olarak iletiliyor. İstemci uygulama gövdenin tamamını okumadan yanıtı kapattığında veya JSON ayrıştırıcıları sonda kalan tek bir yeni satır karakterini okumadığında net/http paketi akışın nerede bittiğini kestiremediği için bağlantıyı kapatıyordu. Geliştiriciler bu durumu aşmak için manuel olarak yanıt gövdesini boşaltan karmaşık eşzamanlı kodlar yazmak zorunda kalıyordu.

Go 1.27 ile birlikte net/http.Transport mekanizması devreye girerek okunmamış gövdeleri 256 KB boyutuna veya 50 milisaniyeye kadar arka planda asenkron olarak tüketmeye başladı. Başlıkta kapatma komutu bulunan durumlarda ise gereksiz işlem yapmaktan kaçınan paket, geliştiricilerin artık manuel boşaltma kodlarına ihtiyaç duymadan yalnızca gövdeyi kapatmalarını yeterli kılıyor.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.