Gecikme, PHP'nin her gönderme işleminde bir KafkaProducer nesnesini yeniden oluşturmasından kaynaklanır. Her oluşturma işlemi, her broker'a bağlanmayı ve küme meta verilerini getirmeyi gerektirir; bu durum Virtual Private Cloud (VPC) içinde 100 ms'den fazla, İnternet üzerinden ise 500 ms'den fazla gecikme süresi ekler.
Bunun nedeni
Kafka üreticileri, mesaj göndermeden önce her bölümün lider broker'ını belirlemelidir. Bu işlem, konuları bölümlere ve bölümleri broker adreslerine eşleyen bir meta veri isteği gerektirir. Üretici daha sonra ilgili broker'lara bağlantı kurar.
Çoğu programlama dilinde KafkaProducer nesnesi bir kez oluşturulur ve istekler boyunca yeniden kullanılır. Örneğin bir Java istemcisi, üreticiyi başlangıçta başlatır, broker bağlantılarını açık tutar ve meta verileri önbelleğe alır. Sonraki gönderimler ihmal edilebilir düzeyde gecikme süresi ekler.
PHP genellikle paylaşumsuz, istek başına süreç modelinde çalışır. Üretici yaşam döngüsünü açıkça yönetmediğiniz sürece her istek yeni bir KafkaProducer nesnesi oluşturur ve tam başlatma sırasını (meta veri getirme, broker bağlantıları ve bölüm lideri keşfi) tekrarlar. Tekrarlanan bu başlatma işlemi, gecikmenin temel kaynağıdır.
Beklenen gecikme süresi
| Ağ | Başlatma başına ek yük |
|---|---|
| VPC | > 100 ms |
| Internet | > 500 ms |
Üretici başlatıldıktan sonra sonraki gönderimler ihmal edilebilir düzeyde gecikme süresi ekler. Üreticiyi yeniden kullanmak, mesaj başına düşen başlatma ek yükünü ortadan kaldırır.