Tüm Ürünler
Search
Belge Merkezi

Tair (Redis® OSS-Compatible):Algılanamayan Geçiş

Son Güncelleme:Oct 03, 2026

Tair, hem küme hem de tekil mimarilerde algılanamayan geçişi destekler. Çekirdek protokolü, istemci SDK'sı ve ağ katmanları arasındaki uçtan uca iş birliği sayesinde; ölçeklendirme, yüksek kullanılabilirlik (HA) yük devretme ve küçük sürüm yükseltmeleri sırasında sıfır hata ve bağlantı kesintisi olmadan işlem yapar.

Arka Plan

Redis veya Valkey gibi açık kaynaklı veritabanlarında başlıca yüksek kullanılabilirlik mimarileri şunlardır:

  • Tekil: Birincil düğüm okuma ve yazma hizmetlerini sunarken, ikincil düğüm yük devretme adayı olarak görev yapar. Topluluk genellikle, birincil düğüme ulaşılamadığında otomatik olarak yük devretmeyi başlatan bağımsız bir izleme ve karar verme bileşeni olan Sentinel'ı tanıtır.

  • Küme: Tüm anahtar alanı, her biri isteğe bağlı çoğaltma düğümlerine sahip birden çok birincil düğüm arasında dağıtılan 16.384 bölüme ayrılır. Bir birincil düğüm arızalandığında, kopyası oylama mekanizmasıyla otomatik olarak terfi eder. İstemciler, MOVED/ASK yönlendirmelerini aldıklarında otomatik yönlendirme yük devretmesi gerçekleştirir.

Bu mimarilerde sürüm yükseltmeleri, HA yük devretmeleri veya ölçeklendirme işlemleri kaçınılmaz olarak bağlantı kesintilerine, hatalara veya veri geçişinin engellenmesine neden olur. Tair, hem küme hem de tekil mimariler için algılanamayan geçiş yetenekleri sunar.

Küme Mimarisinde Kesintisiz Ölçeklendirme

Ölçeklendirme (parça ekleme veya kaldırma) sırasında Tair, yerel Redis kümelerinin üretebileceği -ASK ve -TRYAGAIN hatalarını ortadan kaldırmak için Bölüm çoğaltma tabanlı kesintisiz veri geçişini kullanır.

Açık Kaynak Redis Cluster Veri Geçişi: İlkeler ve Zorluklar

Açık kaynak Redis Cluster, Bölümleri Anahtar Başına (Per Key) yaklaşımıyla geçirir ve anahtarları toplu halde tarayıp taşıyarak tek bir Bölüm geçişini tamamlar. Süreç akışı aşağıdaki gibidir:

  1. Hedef parçada içe aktarma durumunu ayarlayın.

  2. Kaynak parçada taşıma durumunu ayarlayın.

  3. Taşınacak Bölümün anahtar listesini kaynak parçadan alın.

  4. Kaynak parçaya bir anahtar grubuyla birlikte migrate komutunu gönderin. Migrate komutu senkron ve engelleyicidir. Anahtarları geri yükleme için hedef parçaya gönderir, ardından bunları kaynaktan siler. Bu işlem anahtar listesi boşalana kadar tekrarlanır.

  5. Taşınan Bölümü hedef düğüme atamak için setslot komutunu kullanın.

Anahtar Başına geçiş yaklaşımının aşağıdaki zorlukları bulunur:

  • Migrate komutu senkron ve engelleyicidir; bu durum diğer isteklerin işlenmesini engeller. Büyük anahtarların taşınması uzun süreli engellemeye neden olur.

  • Bir anahtar kaynak parçada bulunmadığında, istek hedef parçaya yönlendirilir ve bu durum ekstra bir yönlendirme atlama sayısı ekler.

  • Çoklu anahtar komut istekleri TRYAGAIN hatası alabilir.

  • Tek bir Bölümün verileri iki parça arasında dağıtılır. Bir istisna oluşursa, geçiş sorunsuz şekilde geri alınamaz.

Tair Bölüm Çoğaltma Tabanlı Kesintisiz Veri Geçişi

Tair, birincil-çoğaltma çoğaltmasının üzerine inşa edilerek çekirdek düzeyinde Bölüm çoğaltma teknolojisini (Slot Mig) geliştirmiştir. Düğümler arasında veriyi Bölümleri çoğaltarak senkronize eder ve milisaniye düzeyinde Bölüm Bekleme yazma engellemesini kontrol eden merkezi bir denetleyici (CS) ile birleştirir. Küme topolojisi değiştirildiğinde, istemci istekleri MOVED semantiğiyle yönlendirilir.

Slot Mig geçişinin akışı aşağıdaki gibidir:

  1. CS, hedef parçaya slotRepl geçiş komutunu gönderir.

  2. Hedef düğüm, kaynak düğüme bir slotPsync komutu gönderir.

  3. Kaynak düğüm, taşınacak Bölümün anlık görüntüsünü oluşturur.

  4. Hedef düğüm anlık görüntü verilerini alır.

  5. Kaynak düğüm, artımlı verileri hedef düğüme senkronize eder.

  6. CS, senkronizasyon boşluğunu dinamik olarak değerlendirir ve yazmayı milisaniye düzeyinde engellemek için slotReplWait gönderir. Engelleme eşik değeri aşarsa, geri alma işlemi otomatik olarak tetiklenir.

  7. CS, senkronizasyon tamamlandıktan sonra küme topolojisini değiştirir. Eski istemci istekleri MOVED semantiğiyle yönlendirilir.

  8. Kaynak düğüm, taşınan Bölüm verilerini siler.

Slot Mig geçişinin avantajları şunlardır:

  • Salt okunur hataları ve bağlantı kopmaları yaşanmaz.

  • Yalnızca topoloji değiştikten sonra MOVED semantiği kullanılır, ASK semantiği yoktur.

  • Büyük anahtarlar ve çoklu anahtar istekleri etkilenmez.

  • Tek bir Bölümün verileri artık bölünmez ve süreç tek adımda geri alınabilir.

Karşılaştırma: Tair Slot Mig ve Topluluk Anahtar Başına Yaklaşımı

Öğe

Tair Slot Mig

Topluluk Anahtar Başına

Geçiş sırasında istek durumu

İki durum: Değişim öncesi normal erişim; sonrasında MOVED yönlendirmesi, ASK yok.

Üç durum: MOVED/ASK yönlendirmesi; TRYAGAIN hatası; migrate sırasında engelleme.

Salt okunur hataları

Yok

Yok

Yazma engelleme

Milisaniye düzeyinde Bölüm engelleme.

Eksik anahtarlı çoklu anahtarlar; migrate komutu engellemesi.

Bağlantı kopmaları

Yok

Yok

Tamamlanmadan önce geri alma

Evet

Hayır

Notlar

  • Doğrudan bağlantı modu için istemcinin MOVED komutlarını işlemesi gerekir.

  • Proxy modunda, ölçeği küçültme proxy düğümlerini serbest bırakır ve bu durum bağlantı kopmalarına neden olur. İstemcinin yeniden bağlantı kurma özelliğine sahip olması gerekir.

  • Veri dışı komutlar (PING, INFO gibi) ile PUB/SUB ve BLOCKING komutları, Bölüm geçişinden sonra otomatik olarak yönlendirilemez. Uygulamanın yönlendirme tablosunu periyodik olarak güncellemesi gerekir.

  • Veri tutarlılığını sağlamak için, geçişin son aşamasında ilgili Bölüm için yazma isteği gecikme süresi artabilir ancak istek başarısız olmaz.

Küme Mimarisinde Algılanamayan HA Geçişi

Redis standart protokolü RESP'e göre, bir kümede birincil-çoğaltma değiştikten sonra çoğaltma, mevcut isteklere MOVED döndürür. İstemci yönlendirme tablosunu yeniler ve yeniden dener; böylece algılanamayan geçiş sağlanır.

Tair, doğrudan bağlantılı küme mimarisini aşağıdaki iyileştirmelerle geliştirdi:

  • Geçişten sonra bağlantı sürekliliğini sağlamak için VIP mekanizması tanıtıldı.

  • Dağıtılmış protokol belirsizliğini ortadan kaldırmak amacıyla gossip yerine, birleşik yönlendirme tablosu dağıtımı için merkezi bir Yapılandırma Sunucusu kullanıldı.

Tekil Mimari Algılanamayan Geçişi

Küme mimarisinin yerel yönlendirme yeteneğinin aksine, tekil mimari iki zorlukla karşı karşıyadır: tekil ve küme modları arasındaki protokol uyumsuzluğu ve Sentinel'ın çekirdek düzeyindeki bağlantı davranışını kontrol edememesi. Tair, üç katmanlı yenilikle algılanamayan geçiş gerçekleştirdi.

Çekirdek Katmanı: REDIRECT Protokolü

Tair, Valkey topluluğuna dahil edilen algılanamayan geçiş protokolünü çekirdek düzeyinde uyguladı. Yeni protokol formatı REDIRECT HOST PORT şeklindedir; burada REDIRECT, istemcinin isteği hedef düğüme yönlendirmesi gerektiğini belirtir.

İstemci Katmanı: SDK Desteği

Tair, Valkey-Java istemcisinde algılanamayan geçiş desteğini uyguladı. Devam eden bağlantılar için, iki katmanlı bir kilitleme mekanizması bağlantı havuzunun yeniden başlatılmasını kontrol eder: ilk katman, aday yenileme için ReentrantLock'un tryLock özelliğini kullanır ve ikinci katman okuma-yazma kontrolü için ReentrantReadWriteLock'u kullanır.

İstemcilerin Valkey-Java 5.3.0 veya sonraki bir sürüme yükseltilmesi gerekir:

<dependency>
  <groupId>io.valkey</groupId>
  <artifactId>valkey-java</artifactId>
  <version>5.3.0</version>
</dependency>

Ağ Katmanı: Bağlantı Boşaltma

Tair, "LB + VIP" mimarisini kullanır. VIP geçişinden sonra, Bağlantı Boşaltma mekanizması eski bağlantıları yapılandırılabilir bir süre boyunca canlı tutar ve eski birincil düğümün bağlantıyı zarif bir şekilde kapatmadan önce REDIRECT komutunu iletmek için yeterli zamana sahip olmasını sağlar.

Test Sonuçları

Geçiş sırasında istemci hatalarını ve RT'yi (yanıt süresi) değerlendirmek için açık kaynaklı bir araç olan Tair-pulse kullanılarak yapılan karşılaştırmalı testler şunları gösterir:

  • Orijinal yaklaşım 5 tür hatayla karşılaşırken, algılanamayan geçiş sıfır hatayla sonuçlanır.

  • Orijinal yaklaşım yaklaşık 5 saniyelik kullanılamazlığa neden olurken, algılanamayan geçiş yaklaşık 1 saniyelik RT artışına neden olur.

Not

Algılanamayan geçiş yaklaşımı yazmayı duraklatmayı kullanır; bu durum komut zaman aşımlarına (yaklaşık 1 saniyeye kadar) neden olabilir. Sıfır hata sağlamak için zaman aşımını artırabilirsiniz.

Sınırlamalar

Küme Mimarisinde Kesintisiz Ölçeklendirme Sınırlamaları

  • Örnek cloud diskleri kullanmalıdır.

  • Örnek küme mimarisini kullanmalıdır.

  • Desteklenen sürümler: Redis OSS 5.0 (küçük sürüm 5.2.0+), 6.0 (küçük sürüm 6.0.2.0+), 7.0; Redis 5.0 ile uyumlu Tair Memory-Optimized (küçük sürüm 5.0.34+), 6.0, 7.0; Tair Persistent Memory; Tair Disk-Based.

  • İstemci MOVED komutlarını işlemeli (doğrudan mod) veya yeniden bağlantı kurma yeteneğine sahip olmalıdır (proxy modu).

Tekil Mimari Algılanamayan Geçişi Sınırlamaları

Tekil mimari için algılanamayan geçiş aşağıdaki küçük sürüm gereksinimlerine sahiptir:

  • Redis OSS: Yalnızca sürüm 7.0, küçük sürüm 0.2.9 veya üzeri.

  • Tair (Enterprise): Tüm ana sürümler, küçük sürüm 25.11.0.0 veya üzeri.

Not

Valkey-Java 5.3.0 veya sonraki bir sürüm istemci de gereklidir.