Sunucusuz uygulamanızı saniyede binlerce işlem veya yüz binlerce eşzamanlı kullanıcının ötesine ölçeklendirmeyle ilgili yol gösterici bilgiler için bu dokümanı okuyun. Bu doküman, Google Dokümanlar ve Google’da ve sistemi derinlemesine kavradığınıza emin olmalısınız. Cloud Firestore'ü kullanmaya yeni başladıysanız hızlı başlangıç kılavuzuna göz atın.
Cloud Firestore ve Firebase mobil/web SDK'ları, istemci tarafı kodun doğrudan veritabanına eriştiği sunucusuz uygulamalar geliştirmek için güçlü bir model sağlar. SDK'lar, müşterilerin verilerde yapılan güncellemeleri gerçek zamanlı olarak dinlemesini sağlar. Siz sunucu gerektirmeyen duyarlı uygulamalar oluşturmak için gerçek zamanlı güncellemeleri kullanabilir geliştirmenin harika bir yoludur. Bir şeyi yayınlanır hale getirmek çok kolay olsa da, Cloud Firestore oluşturan sistemlerdeki kısıtlamaları anlamak Böylece sunucusuz uygulamanız trafik arttığında iyi ölçeklendirilir ve iyi performans gösterir.
Uygulamanızı ölçeklendirmeyle ilgili öneriler için aşağıdaki bölümlere bakın.
Kullanıcılarınıza yakın bir veritabanı konumu seçin
Aşağıdaki şemada gerçek zamanlı bir uygulamanın mimarisi gösterilmektedir:
Kullanıcının cihazında çalışan bir uygulama (mobil veya web),
Cloud Firestore bağlantısı varsa bağlantı bir
Aynı içinde Cloud Firestore ön uç sunucusu
veritabanınızın bulunduğu bölge. Örneğin,
veritabanınız us-east1
konumundaysa bağlantı da
us-east1
içinde de Cloud Firestore ön ucu. Bu bağlantılar
uzun ömürlü olmalı ve uygulama tarafından açıkça kapatılana kadar açık kalmalıdır. İlgili içeriği oluşturmak için kullanılan
ön uç temel Cloud Firestore depolama sistemlerinden veri okur.
Kullanıcının fiziksel konumu ile Cloud Firestore arasındaki mesafe veritabanı konumu kullanıcının yaşadığı gecikmeyi etkiler. Örneğin, Uygulaması Kuzey Amerika'nın Google Cloud bölgesindeki bir veritabanıyla iletişim kuran Hindistan'daki bir kullanıcı ve uygulamanın, veritabanının sanal makinelere kıyasla daha yavaş ve örneğin Hindistan'da veya Asya'nın başka bir bölgesinde bulunuyordu.
Güvenilirlik sağlayacak tasarım
Aşağıdaki konular uygulamanızın güvenilirliğini iyileştirir veya etkiler:
Çevrimdışı modu etkinleştirme
Firebase SDK'ları çevrimdışı veri kalıcılığı sağlar. Kullanıcının cihazındaki uygulama Cloud Firestore'e bağlanamazsa uygulama, yerel olarak önbelleğe alınmış verilerle çalışarak kullanılabilir durumda kalır. Bu sayede veriler kullanıcıların internet bağlantılarında kesinti veya sorun olduğunda bile birkaç saat veya gün boyunca erişiminizi tamamen kaybetmeniz gerekir. Çevrimdışı mod hakkında daha fazla bilgi için Çevrimdışı verileri etkinleştirme başlıklı makaleyi inceleyin.
Otomatik yeniden denemeleri anlama
Firebase SDK'ları, yeniden deneme işlemlerini ve yeniden kurulmasını sağlar bir durum değildir. Bu şekilde, ortaya çıkan geçici hataların giderilmesine yardımcı olur. İstemci ile istemci arasındaki ağ sorunları veya sunucuları yeniden başlatarak
Bölgesel ve çok bölgeli konumlar arasında seçim yapın
Bölgesel ve bölgesel müzakereler arasında seçim yaparken çok bölgeli konumlar. Aradaki temel fark, verilerin kopyalama şeklidir. Bu uygulamanızın kullanılabilirlik garantilerini artırır. Çok bölgeli örnek daha güçlü bir sunum güvenilirliği sağlar ve verilerinizin dayanıklılığını artırır. maliyettir.
Gerçek zamanlı sorgu sistemini anlama
Anlık görüntü dinleyicileri olarak da adlandırılan gerçek zamanlı sorgular, uygulamanın dinlemesine verileri alır ve veriler en kısa sürede düşük gecikmeli bildirimler alırsınız. anlamına gelir. Bir uygulama, veritabanını düzenli aralıklarla yoklayarak aynı sonucu alabilir. genellikle daha yavaş, pahalıdır ve daha fazla kod gerektirir. Örneğin, gerçek zamanlı sorguların nasıl ayarlanacağı ve kullanılacağı ile ilgili örnekler için bkz. Gerçek zamanlı güncellemeler alın. Aşağıdaki bölümler anlık görüntü dinleyicilerinin çalışma şekli hakkında ayrıntılı bilgi edinip en iyi uygulamalardan bahsedeceğiz.
Mobil SDK'lardan biriyle oluşturulmuş bir mesajlaşma uygulaması aracılığıyla Cloud Firestore'e bağlanan iki kullanıcıyı düşünün.
A istemcisi bir koleksiyona doküman eklemek ve mevcut dokümanları güncellemek için veritabanına yazar
adı chatroom
:
collection chatroom:
document message1:
from: 'Sparky'
message: 'Welcome to Cloud Firestore!'
document message2:
from: 'Santa'
message: 'Presents are coming'
B istemcisi, anlık görüntü işleyici kullanarak aynı koleksiyondaki güncellemeleri dinler. Kullanıcı B, yeni bir mesaj oluşturduğunda anında bildirim alır. Aşağıdaki şemada, anlık görüntü dinleyicisinin arkasındaki mimari gösterilmektedir:
İstemci B bir anlık görüntü bağladığında aşağıdaki etkinlik dizisi gerçekleşir dinleyicisidir:
- B İstemcisi, Cloud Firestore bağlantısını açar ve bir
dinleyici olarak
onSnapshot(collection("chatroom"))
numaralı telefonu Firebase SDK'sı. Bu dinleyici saat boyunca aktif kalabilir. - Cloud Firestore kullanıcı arayüzü, veri kümesini başlatmak için temel depolama sistemini sorgular. Eşleşen sonuç kümesinin tamamını yükler yardımcı olur. Buna anket sorgusu denir. Bu durumda sistem, veritabanının Firebase Güvenlik Kuralları'nı kullanarak kullanıcının bu verilere erişebildiğini doğrulayın. Kullanıcı yetkilendirilmişse veritabanı, kullanıcıya verileri döndürür.
- Ardından B istemcisinin sorgusu dinleme moduna geçer. Dinleyici kayıt yapar ve verilerin güncellenmesini bekler.
- A istemcisi artık bir dokümanda değişiklik yapmak için yazma işlemi gönderir.
- Veritabanı, belge değişikliğini depolama sistemine sahip.
- Sistem, aynı güncellemeyi işlemsel olarak dahili bir günlük kaydına kaydeder. Değişiklik günlüğü, değişikliklerin en aza indirildiğinde yaşanır.
- Değişiklik günlüğü, güncellenen verileri bir abonelik havuzuna aktarır. işleyicileri tarafından desteklenmektedir.
- Güncellenen dokümanın eşleşip eşleşmediğini görmek için bir ters sorgu eşleştirici yürütülür kayıtlı olan anlık görüntü işleyicileri ekleyin. Bu örnekte İstemci B'nin anlık görüntü dinleyicisiyle eşleşir. Adından da anlaşılacağı gibi, sorgu eşleştiriciyi normal veritabanı sorgusu olarak değiştirir, ancak tersine yapılır. Bir sorguyla eşleşenleri bulmak için dokümanlarda arama yapmak yerine etkili bir şekilde sorguları bulmak için kullanılır. Bir eşleşme bulduğumda, sistem, söz konusu belgeyi anlık görüntü dinleyicilerine iletir. Ardından sistem, veritabanının Firebase Güvenlik Kuralları'nı değerlendirir ayarını kullanarak verileri yalnızca yetkili kullanıcıların almasını sağlayın.
- Sistem, doküman güncellemesini B istemcisinin cihazındaki SDK'ya yönlendirir ve
onSnapshot
geri çağırması tetiklenir. Yerel kalıcılık etkinleştirilirse SDK güncellemeyi yerel önbelleğe de uygular.
Cloud Firestore ürününün ölçeklenebilirliğinin önemli bir parçası, değişiklik günlüğünü abonelik işleyicilerine ve ön uç sunucularına gönderebilirsiniz. İlgili içeriği oluşturmak için kullanılan yayma, tek bir veri değişikliğinin verimli bir şekilde yayılarak milyonlarca kullanıcıya hizmet vermesini sağlar gerçek zamanlı sorgular ve bağlı kullanıcılar. Bu komut dosyalarının birçok kopyasını çalıştırarak birden fazla alt bölgede (veya çoklu bölge söz konusu olduğunda birden çok bölgede) dağıtımı), Cloud Firestore yüksek kullanılabilirlik ve ölçeklenebilirlik sağlar.
Mobil ve web SDK'larından yayınlanan tüm okuma işlemlerinin yukarıdaki modeli izleyin. Bir yoklama sorgusu ve ardından dinleme modu gerçekleştirirler. Böylece, tutarlılık garantileri alabilirsiniz. Bu, gerçek zamanlı dinleyiciler için de geçerlidir. çağrıları ve tek seferlik sorgular. Mesela bekar veya anlık görüntü dinleyicileri olarak belge alımını ve tek seferlik sorguları performansla ilgili benzer kısıtlamalara sahip olduğunu unutmayın.
Gerçek zamanlı sorguları ölçeklendirmek için en iyi uygulamalardan yararlanma
Ölçeklenebilir gerçek zamanlı sorgular tasarlamak için aşağıdaki en iyi uygulamalardan yararlanın.
Sistemdeki yüksek yazma trafiğini anlayın
Bu bölüm, artan harcamalara karşı sistemin nasıl tepki verdiğini anlamanıza sayısı.
Gerçek zamanlı sorguları yönlendiren Cloud Firestore günlük değişiklikleri, yazma trafiği arttıkça otomatik olarak yatay olarak ölçeklenir. Yazma hızı olarak tek bir sunucunun işleyebileceğinin ötesine geçerse, değişiklik günlüğü birden fazla sunucuya bölündüğünde ve sorgu işleme, bir yerine birden çok abonelik işleyiciden veri kullanmalarını sağlar. İstemci ve SDK açısından bu işlemler şeffaftır ve bölünmeler gerçekleştiğinde uygulamanın herhangi bir işlem yapmasına gerek yoktur. Aşağıdaki şemada gerçek zamanlı sorgular ölçeği:
Otomatik ölçeklendirme, yazma trafiğinizi sınırsız olarak artırmanıza olanak tanır. ancak trafik arttıkça sistemin yanıt vermesi biraz zaman alabilir. Yazma hotspot'u oluşturmaktan kaçınmak için 5-5-5 kuralının önerilerini uygulayın. Key Visualizer, hotspot yazma analizi için yararlı bir araç.
Birçok uygulama öngörülebilir organik büyümeye sahiptir. Bu da Cloud Firestore, önlemler almadan barındırabiliyoruz. Büyük bir dosyayı içe aktarma gibi toplu iş yükleri veri kümesinden yazma işlemleri çok hızlı şekilde hızlanabilir. Uygulamanızı tasarlarken farkına varabilirsiniz.
Yazma ve okuma işlemlerinin nasıl etkileşimde bulunduğunu anlama
Gerçek zamanlı sorgu sistemini, yazma bağlantısı veren bir ardışık düzen olarak düşünebilirsiniz ortak bir paydada buluşmasını sağlamak sizin görevinizdir. Bir doküman oluşturulduğunda, güncellendiğinde veya silindiğinde, değişiklik depolama sisteminden kayıtlı olan yardımcı olur. Cloud Firestore değişiklik günlüğü yapısı, güçlü bir kampanya tutarlılık gösterir. Bu, uygulamanızın hiçbir zaman Veri tabanının verileri aktardığı zamana kıyasla sıra dışı güncellemeler anlamına gelir. Bu işlem, uygulama geliştirmeyi kolaylaştırmak için bazı uç noktalar bulunuyor.
Bu bağlı ardışık düzen, hotspot'lara neden olan bir yazma işleminin kilit anlaşmazlığı, okuma işlemlerini olumsuz etkileyebilir. Yazma işlemleri başarısız olduğunda veya kısıtlamayla karşılaşıldığında okuma, sürekli veri beklediğinizden emin olun. Bu durum uygulamanızda hem yavaş yazma işlemleri hem de ilişkili yavaş yanıtlar görebilirsiniz. saatler. Bu sorundan kaçınmanın anahtarı, hotspot'lardan kaçınmaktır.
Dokümanları ve yazma işlemlerini küçük tutun
Anlık görüntü dinleyicileriyle uygulama oluştururken genellikle kullanıcıların tespit etmenize yardımcı olabilir. Bunun için görevleri küçük tutmaya çalışın. İlgili içeriği oluşturmak için kullanılan sistem, onlarca alanı olan küçük belgeleri pek çok değişiklik yapabilirsiniz. Yüzlerce alan ve büyük veriler içeren daha büyük belgeler daha uzun sürer pek çok yolu vardır.
Benzer şekilde, gecikmeyi düşük tutmak için kısa, hızlı kaydetme ve yazma işlemlerine öncelik verin. Büyük gruplar, yazarın bakış açısına göre daha yüksek işleme hızı sağlayabilir. ancak anlık görüntü dinleyicileri için bildirim süresini uzatabilir. Bu, yapay zeka sistemlerinin kullanıldığı diğer veritabanı sistemlerini performansı iyileştirmek için toplu işlemeyi kullanabilirsiniz.
Verimli dinleyiciler kullanın
Veritabanınızın yazma hızları arttıkça, Cloud Firestore, veri işlemeyi birçok sunucuya böler. Cloud Firestore ürününün parçalama algoritması, koleksiyonu veya koleksiyon grubunu aynı değişiklik günlüğü sunucusuna gönderir. İlgili içeriği oluşturmak için kullanılan sistem, sayıyı korurken olası yazma işleme hızını en üst düzeye çıkarmaya çalışır bir sorgunun işlenmesinde yer alan sunucuların mümkün olduğunca az.
Ancak belirli kalıplar, anlık görüntü için ideal olmayan davranışa neden olabilir. yardımcı olur. Örneğin, uygulamanız, verilerinin çoğunu tek bir büyük uygulamada saklıyorsa dinleyicinin, tüm bilgileri almak için bir çok sunucuya bazı verilerdir. Bu durum, bir sorgu filtresi uygulasanız bile geçerliliğini korur. Bağlantılı uçuş çok fazla sunucuya ekleyebilirsiniz. Bu, daha yavaş yanıt verme riskini artırır.
Bu daha yavaş yanıtları önlemek için şemanızı ve uygulamanızı, sistemin çok sayıda farklı sunucuya gitmeden dinleyicilere hizmet verebilir. Verilerinizi daha küçük yazma hızlarına sahip daha küçük koleksiyonlara ayırmak en iyi çözüm olabilir.
Bu, performans sorguları hakkında düşünmeye benzer. tam tablo taraması gerektiren ilişkisel bir veritabanında yer alır. İlişkisel tam tablo taraması gerektiren bir sorgu, anlık görüntü dinleyicisi ile çalışır. Yavaş performans gösterebilir. kullanarak sunabileceği sorguyla karşılaştırılmıştır. Daha belirli bir dizini olan bir sorgu, bir anlık görüntü dinleyiciye benzer. tek bir doküman veya daha seyrek değişen bir koleksiyon olabilir. Yüklemeniz gereken belgeler kullanım alanınızın davranışını ve ihtiyacını en iyi şekilde anlamak için uygulamanızı test edin.
Yoklama sorgularını hızlandırın
Duyarlı gerçek zamanlı sorguların bir diğer önemli parçası da anket sorgusunun hızlı ve verimli olmasını sağlar. Yeni bir anlık görüntü dinleyicisi ilk kez bağlandığında, işleyici kullanıcının cihazına göndermesi gerekir. Yavaş sorgular, uygulamanızın daha hızlı daha az duyarlı hale gelir. Örneğin, dönüşüm hunisinin orta kısmına yönelik uygun dizinleri kullanmayan çok sayıda dokümanı veya sorguyu okumaya çalışın.
Dinleyiciler dinleme durumundan anket durumuna geçerek bazı durumlarda. Bu otomatik olarak gerçekleşir ve SDK'lar ve uygulamanız. Aşağıdaki koşullar bir yoklama durumunu tetikleyebilir:
- Sistem, yükteki değişiklikler nedeniyle bir değişiklik günlüğünü yeniden dengeler.
- Hotspot'lar, veritabanına başarısız veya gecikmeli yazma işlemlerine neden olur.
- Geçici sunucu yeniden başlatılması dinleyicileri geçici olarak etkiler.
Yoklama sorgularınız yeterince hızlıysa yoklama durumu şeffaf hale gelir değer verdiğinizi gösterin.
Uzun süreli dinleyicileri tercih edin
Dinleyicileri mümkün olduğunca uzun tutmak ve canlı tutmak genellikle en büyük adımdır. Cloud Firestore kullanan bir uygulama geliştirmenin uygun maliyetli bir yolunu sunuyor. Cloud Firestore kullanırken, açık bir bağlantıyı sürdürmek için değil, uygulamanıza döndürülen dokümanlar için ücretlendirilirsiniz. Uzun süreli anlık görüntü dinleyicisi, yalnızca kullanım ömrü boyunca sorguyu sunmak için ihtiyaç duyduğu veriler. Bu işlem, ilk yoklama işlemini ve ardından veriler gerçekten değiştiğinde bildirim göndermeyi içerir. Tek seferlik sorgular ise uygulamanın sorguyu en son yürütmesinden bu yana değişmemiş olabilecek verileri yeniden okur.
Uygulamanızın yüksek oranda veri tüketmesi gerektiği durumlarda anlık görüntü dinleyiciler uygun olmayabilir. Örneğin, kullanım alanınızda uzun bir süre boyunca saniyede çok sayıda belge gönderiliyorsa daha düşük sıklıkta çalışan tek seferlik sorguları tercih etmek daha iyi olabilir.
Sonraki Adımlar
- Anlık görüntü işleyicileri nasıl kullanacağınızı öğrenin.
- Diğer en iyi uygulamalar hakkında bilgi edinin.