Yüksek Eşzamanlıklı Sistemlerde WebSocket ve Binary Protokol Optimizasyonu
Binlerce kullanıcının aynı anda veri alışverişinde bulunduğu gerçek zamanlı (real-time) uygulamalarda geleneksel HTTP istekleri yetersiz kalır. Çift yönlü (full-duplex) iletişim sunan WebSocket protokolü ve ikili (binary) veri paketleri gecikmeyi minimuma indirir.
1. JSON Yerine Protocol Buffers (Protobuf) Kullanımı
Metin tabanlı JSON formatı yüksek okunabilirlik sağlasa da bant genişliği ve ayrıştırma (parsing) hızı açısından ağır kalır. İkili serileştirme formatları veri boyutunu %70'e kadar küçültür.
"Milisaniyelerin önem taşıdığı socket mimarilerinde ağa gönderilen her fazla byte, sistem genelinde biriken bir gecikmeye dönüşür."
Örnek WebSocket Server Bağlantı Yönetimi (Node.js)
Aşağıdaki JavaScript kodu, istemcilerden gelen socket bağlantılarını yöneten ve kalp atışı (heartbeat) kontrolü yapan basitleştirilmiş bir sunucu örneğidir:
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', (ws) => {
ws.isAlive = true;
ws.on('pong', () => { ws.isAlive = true; });
ws.on('message', (message) => {
console.log('Gelen İkili Paket:', message);
ws.send(Buffer.from([0x01, 0x02, 0x03]));
});
});
2. İletişim Protokollerinin Performans Karşılaştırması
Farklı veri taşıma protokollerinin bant genişliği ve işlemci tüketim değerleri:
| Protokol / Format | Paket Boyutu (Örnek) | Ayrıştırma (Parse) Süresi |
|---|---|---|
| HTTP REST + JSON | ~450 Bytes | 1.2 ms |
| WebSocket + JSON | ~180 Bytes | 0.5 ms |
| WebSocket + Protobuf | ~35 Bytes | < 0.08 ms |
3. Durum Senkronizasyonu ve Reconnection Stratejileri
Anlık ağ kopmalarında kullanıcının kaldığı yerden devam edebilmesi için state synchronization ve expontential backoff algoritmaları entegre edilir.
- Heartbeat / Ping-Pong: Kopan socket bağlantılarını anında tespit ederek kaynakları serbest bırakır.
- Delta Compression: Yalnızca değişen verileri ağ üzerinden ileterek trafik yükünü azaltır.
- Auto-Reconnect Mechanism: Ağ geri geldiğinde üslü katlama süresi ile otomatik yeniden bağlanır.
Sonuç
Düşük gecikmeli ve ölçeklenebilir bir socket altyapısı, doğru protokol seçimi ve hafif veri paketleri ile mümkündür.