Okuma Kopyaları ve Bağlantı Yönlendirme
Salt okunur trafiği PgBouncer veya akıllı bir sürücüyle kopyalara yönlendirin ve güncellik gecikmesi ödününü kabul edin.
Okuma Kopyaları ve Bağlantı Yönlendirme, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.
Okuma Replikaları Neden Kullanılır?
Okuma ağırlıklı iş yükleri SELECT sorgularını replikalara aktarabilir:
- Birincil sunucu yazma işlemlerini yönetir
- Replikalar okumaların çoğunu yönetir
- Parçalama olmadan yatay okuma ölçekleme
Sonunda Tutarlılık Uyarısı
Replikalar birincil sunucunun gerisinde kalır. Az önce sipariş veren bir kullanıcı siparişini replikada henüz göremeyebilir. Şunlardan birini yapın:
- Yazma sonrası okumaları birincil sunucuya yönlendirin
- Replikanın güncel duruma gelmesini bekleyin
- Yazma sonrası durumu uygulamada önbelleğe alın
Yönlendirme Stratejileri
- Uygulama düzeyinde yönlendirme — uygulama kodu birincil sunucu ile replika arasında seçim yapar
- Sürücü düzeyinde yönlendirme — JDBC, pgjdbc ve pgxpool havuzu ana sunucu ile replika ayrımını bilir
- Vekil düzeyinde yönlendirme — pgpool, pgbouncer ve HAProxy okuma/yazma işlemlerini algılar
Uygulama Yönlendirmesi
Her rol için bir tane olmak üzere iki bağlantı havuzu:
const primary = new Pool({ host: 'primary', ... });
const replica = new Pool({ host: 'replica', ... });
// reads go to replica:
await replica.query('SELECT ...');
// writes (and read-your-writes) go to primary:
await primary.query('INSERT ...');PgPool-II
SQL'i ayrıştıran, SELECT sorgularını replica sunucularına ve yazma işlemlerini primary sunucusuna yönlendiren vekil sunucu. Yük dengeleme ve bağlantı havuzlamasını destekler:
# pgpool.conf
backend_hostname0 = 'primary'
backend_hostname1 = 'replica1'
load_balance_mode = onpg_isready Denetimleriyle HAProxy
HAProxy SQL'i anlamaz; ancak bağlantı noktalarına göre yönlendirme yapabilir — yazma işlemleri için primary sunucusuna giden bir ön yüz, okuma işlemleri için de sağlık denetimleriyle replica sunucularına giden başka bir ön yüz:
frontend writes
bind *:5432
default_backend primary_pool
frontend reads
bind *:5433
default_backend replicas_pool
balance roundrobinAWS RDS Uç Noktaları
RDS, tek bir yazıcı uç noktası ve tüm replica sunucuları arasında yük dengelemesi yapan bir okuyucu uç noktası sağlar — buluttaki en basit seçenek.
Çoğaltma Gecikmesiyle İlgili Hususlar
Gecikmeyi izleyin ve çok geride kalan replica sunucularına yönlendirme yapmaktan kaçının:
-- On primary:
SELECT client_addr, replay_lag FROM pg_stat_replication;
-- HAProxy / pgpool can use a custom health check that fails if replay_lag > threshold.Yapışkan Oturum Deseni
"Kendi yazdıklarınızı okuma" için yazma işleminden sonra kullanıcının oturumunu N saniye boyunca primary sunucusuna sabitleyin. Alternatif olarak yazma işleminin LSN değerini kaydedin ve yanıt vermeden önce replica sunucusunun yeniden oynatmasını bekleyin.
LSN Tabanlı Bekleme
Bir yazma işleminden sonra LSN değerini alın; replica sunucusundan okuma yapmadan önce, replica sunucusu bu LSN değerine kadar yeniden oynatana dek bekleyin:
-- After write on primary:
SELECT pg_current_wal_lsn(); -- save this
-- Before read on replica:
SELECT pg_last_wal_replay_lsn() >= $saved_lsn;
-- spin or wait until trueReplica Olarak Önbelleğe Alma
Bazen Redis / Memcache, okuma işlemlerini ölçeklendirmek için bir "replica" görevi görür — sık erişilen anahtarlar için başka bir PostgreSQL örneğinden çok daha hızlıdır.
Replica Ne Zaman KULLANILMAMALI
İş yükünüz yazma ağırlıklıysa replica sunucuları hız kazandırmadan çoğunlukla maliyet ekler. Okuma işlemleri primary sunucusunda zaten hızlıysa bunlara ihtiyacınız olmayabilir.
Olağanüstü Durum Kurtarma ile Okuma Ölçeklendirmesi Arasındaki Fark
HA yük devretme replica sunucuları, okuma ölçeklendirmesi için kullanılan replica sunucularından farklı bir konudur. Çoğu zaman ikisine de sahip olursunuz.
Özet
Okuma replica sunucuları okuma işlemlerini ölçeklendirir, ancak gecikme taşır.
- Uygulama / sürücü / vekil sunucu yönlendirmesi
- Çoğaltma gecikmesi = nihai tutarlılık
- Kendi yazdıklarınızı okumak için primary sunucusuna sabitleme veya LSN bekleme
- Gecikmeyi izleyin, çok geride kalırsa primary sunucusuna geri dönün
Hızlı Kontrol
Bir kullanıcı yorum gönderiyor ve hemen sayfayı yeniliyor. Sayfa bir replica sunucusundan okuma yapıyor ve yorumu göstermiyor. Sorun nedir ve bir çözüm nedir?
Sıkça Sorulan Sorular
“Okuma Kopyaları ve Bağlantı Yönlendirme” dersi ücretsiz mi?
Evet — “Okuma Kopyaları ve Bağlantı Yönlendirme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.
“Okuma Kopyaları ve Bağlantı Yönlendirme” dersinde ne öğreneceğim?
Salt okunur trafiği PgBouncer veya akıllı bir sürücüyle kopyalara yönlendirin ve güncellik gecikmesi ödününü kabul edin. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
SQL Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Okuma Kopyaları ve Bağlantı Yönlendirme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Akış Kopyalama ve WAL
- Parçalama için Mantıksal Kopyalama
- Yük Devretme ve Lider Seçimi (Patroni, Stolon)
- Okuma Kopyaları ve Bağlantı Yönlendirme