MCP Protokolünde Oturum Durumu: Sticky, Redis ve Continuation Kıyaslaması
MCP'nin oturum yerine continuation taşıması Rust rmcp v3 üzerinde ölçüldü: sticky, Redis ve sealed continuation kıyaslaması.
Model Context Protocol'ün Temmuz 2026 güncellemesi, sunucu tarafında tutulan oturumları (Mcp-Session-Id) kaldırıp yerine MRTR (Multi Round-Trip Requests) desenini getirdi: sunucu bir girdi istediğinde durum, opak bir requestState alanına gömülüp istemciye geri veriliyor. Protokol bu alanın içeriğine karışmıyor — seçim artık geliştiricide.
Rust tabanlı rmcp v3 SDK'sı üzerine kurulu bir deney, bu üç olası yaklaşımı tek bir trait arkasında uygulayıp aynı makinede, aynı kodekle karşılaştırdı: replika belleğinde tutulan 'sticky' oturum, Redis destekli oturum deposu ve HMAC ile imzalanmış, tamamen payload içinde taşınan 'sealed continuation'. Referans olarak farklı transport ve kodek kullanan bir gRPC held-stream de eklendi. 74.550 örnekle yapılan ölçümler, küçük veri boyutlarında tel üzerinde durum taşımanın pratikte ölçülemez bir maliyeti olduğunu, ancak durum büyüdükçe (250→923 bayt) tur başına yaklaşık 120 mikrosaniye eklendiğini gösterdi.
Redis deposu dört çağrılık bir diyalogda dokuz ayrı Redis gidişi gerektirip yakın mesafede 1.4 ms, 1 ms gecikmeli depoda 4.84 ms/tur maliyete yol açtı; ayrıca Redis çöktüğünde tüm diyalog başarısız oldu. Sticky bellek modeli, terk edilen 100 diyalogun 100'ünü de süreç sonlanana kadar bellekte tuttu. En çarpıcı bulgu: eski bir requestState'in yeniden sunulması, bir diyalogu geçerli iki farklı rezervasyona (1.388,80 ve 804,00) çatallayabildi — protokoldeki tüm korumalar 'SHOULD' seviyesinde, yalnızca 'at-most-once' garantisi 'MUST' ama bu da sunucu tarafı durum gerektiriyor. Yazı, Rust'ın async fn'i CPS closure'ları canlı tutmak yerine sabit boyutlu bir durum makinesine derlemesiyle paralellik kuruyor.
Bu sentez, kaynağından yapay zeka tarafından üretildi; insan editör ya da elle onay adımı yoktur. Nasıl çalışıyoruz