deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

Cloudflare Hyperdrive, MySQL için global sonuç önbelleğiyle genel kullanıma açıldı

Cloudflare'ın Hyperdrive pooler'ı artık genel kullanımda Workers için MySQL'i global sorgu sonucu önbelleğiyle destekliyor. Boş sonuç döndüren nadir bir önbellek kodlama hatası, her sonuç için tek bir kanonik kopya saklanarak giderildi.

Cloudflare Hyperdrive, MySQL için global sonuç önbelleğiyle genel kullanıma açıldı

Hyperdrive MySQL genel kullanıma açıldı

Cloudflare Workers için dağıtık bir bağlantı pooler'ı olan Cloudflare Hyperdrive, 14 Ekim 2026'da MySQL için genel kullanım desteği kazandı. Dev.to'da yayınlanan bir Netics yazısına göre sürüm, hizmetin Postgres ötesine ilk kez uzandığı beta sürümünden yaklaşık on sekiz ay sonra geldi ve ürünün global sorgu sonucu önbelleğini MySQL iş yüklerine taşıdı.

Hyperdrive, Cloudflare ağında ısıtılmış (warm) veritabanı bağlantılarını tutar ve tekrarlanan sorguların sonuçlarını her veri merkezine yerel bir önbellekte saklar; böylece Worker istekleri, her çağrı için yeni bir el sıkışma maliyeti ödemek yerine zaten açık olan bağlantıları paylaşır.

İki düğüm, bir paylaşımlı önbellek

Sürümün ardında, Hyperdrive'ın çalıştırdığı iki düğüm arasında bir tutarlılık hatası yatıyor: Worker'ın yanında bir Client düğümü ve veritabanının yanında bir Endpoint düğümü; her biri, aynı tesiste bulunduklarında paylaşabilecekleri bir veri merkezi önbelleğine sahip. Önbelleğe alınmış bir girdi, sorgunun wire mesajlarının bazı normalizasyonlarla hash'i üzerinden anahtarlanır ve değer ham sonuç baytlarıdır.

Anlaşmazlık kodlama hakkındaydı. Her düğüm, Worker'a geri yazdığı baytları önbelleğe alıyordu; dolayısıyla bir düğümün biçiminde saklanan bir sonuç, diğer düğüm tarafından okunup yanlış çevrilebiliyordu. Hata, yüksek hacimli bir müşterinin isteklerinin yaklaşık %0,001'inde boş sorgu sonuçları olarak ortaya çıktı ve yalnızca önbellekleme etkin olan instance'larda görüldü; bu da araştırmacıları pooler yoluna yöneltti.

MySQL yetenek uyuşmazlığı

Kök neden, MySQL'in wire protokolündeki bir müzakere detayı. Yetenekler (capabilities) bağlantı kurulurken kararlaştırılır ve bunlardan biri olan CLIENT_DEPRECATE_EOF, bir sonuç kümesinin sonlanma biçimini değiştirir: metadata dosya sonu (end-of-file) paketi kaybolur ve son paket bir OK paketine dönüşür. MySQL server 5.7.5 ve sonrası bu yeteneği destekler, ancak istemcinin onu talep etmesi gerekir.

Popüler Node.js sürücüsü mysql2 bunu talep etmezken Hyperdrive ediyor. Bu nedenle iki düğüm farklı yetenek kümeleriyle çalışır ve pooler, her sonuç kümesini Worker'ın sürücüsünün beklediği biçime çevirir: dosya sonu paketleri ekler ve OK paketlerini geri dönüştürür. Bu çevrilmiş baytları önbelleğe almak, çeviriyi her iki yönde de bozdu. Hyperdrive'ın kendi kodlamasındaki Endpoint sonucunu bulan bir Client, onu Worker'a çevirmeden gönderdi; bir Client'ın zaten çevirdiği baytları okuyan bir Endpoint ise bunları başka bir Client'a geçirdi ve o Client baytları ikinci kez çevirerek erken bir dosya sonu paketi üretti ya da takıldı.

Sonuş başına tek bir kanonik kopya

Düzeltme, önbelleğe neyin gireceğine dair tek bir kural: her sonucun, hangi düğüm üretmiş olursa olsun, Hyperdrive'ın kendi yetenek kümesiyle kodlanmış tek bir kanonik sürümünü sakla. Böylece Client, çıkışta çeviri yapar ve Endpoint, anladığı bir biçim okur. Düzeltme yayına alındığında boş satır bildirimleri durdu ve istemci bağlantılarının başarı oranı, beta sürümünün doğrulamayı hedeflediği %99,99 seviyesine ulaştı. Bu rakam Cloudflare'in kendi ölçümüdür ve Netics, gönderide bağımsız bir ölçüme atıf yapılmadığını belirtiyor.

Sürümdeki daha küçük kodlama düzeltmeleri

Netics, beta ile genel kullanım arasında yirmi hata düzeltmesi sayıyor; bunlardan ikisi, daha düşük riskli aynı sınıftan kodlama kusurları. Başlangıç el sıkışması, kod noktası başına bir ila üç baytı kapsayan, kullanımdan kaldırılmış bir alias olan utf8'i müzakere ediyordu; bu yüzden veritabanına yazılan emojiler bozuk geri geliyordu; düzeltme utf8mb4 müzakere ediyor. İkincisi, checkout'lar arasındaki oturum temizliğinden kaynaklanıyordu: COM_RESET_CONNECTION bağlantıyı başlangıçta kararlaştırılan kodlamaya değil, sunucu varsayılanına döndürüyor; bu yüzden latin1'e varsayılan sunucu, latin1 bir bağlantı geri veriyor ve pooler her sıfırlamadan sonra kodlamayı yeniden ayarlamak zorunda kalıyordu.

Performans ve geçiş yolu

Netics'in aktardığına göre Cloudflare'in öne çıkardığı rakamlar şöyle: pooler, sorguları yaklaşık üç kat hızlandırıyor; tekrarlanan sorgular önbellekten yüz kata kadar daha hızlı olabiliyor ve önbelleğe alınmış sonuçlar beş milisaniyenin altında dönüyor. Cloudflare'in kendi sayımına göre, bir Worker'dan bölgesel bir veritabanına bağlantı kurmak başka türlü en az beş ağ gidiş-dönüşü tutuyor. Belgelenen geçiş yolu bir connection-string değişimi; desteklenen Node.js sürücüleri arasında mysql2 ve mysql var ve Cloudflare dokümantasyonu, Hyperdrive'ın yönetilen hizmetler ve Postgres uyumlu motorlar dahil herhangi bir MySQL veya Postgres veritabanıyla çalıştığını belirtiyor.

Neden önemli

Serverless arka uçlar kuran ekipler için Hyperdrive'daki MySQL desteği, bu modelin kalıcı sürtünme noktalarından birini ele alıyor: tek bölgeli bir veritabanının önünde duran global dağıtılmış hesaplama. Hata öyküsü ayrıca, pooler veya önbelleğe alınmış bir veri yolu işleten herkes için aktarılabilir bir ders — iki yazıcılı bir paylaşımlı önbellek, üzerinde anlaşılmış tek bir serileştirme ister ve bir çeviri katmanı, önbelleğin hangi tarafında çalıştığına dair net bir kural ister. Öne çıkan rakamlar satıcıdan geldiği için, geçiş planlayan ekipler bu sayıları olduğu gibi kabul etmek yerine kendi trafiğinde önbellek isabet oranlarını, boş veya bozuk yanıtları ve bağlantı başarı oranlarını ölçmeli.

  • #cloudflare
  • #mysql
  • #serverless
  • #database-caching
  • #edge-computing

İlgili yazılar