Geniş ölçekte gerçek zamanlı sorguları anlama

Sunucusuz uygulamanızı binlerce kullanıcının ötesine ölçeklendirme konusunda rehberlik için bu belgeyi okuyun veya yüz binlerce işlem/saniyede Bu doküman, Google Dokümanlar ve Google’da ve sistemi derinlemesine kavradığınıza emin olmalısınız. Projeye yeni başlıyorsanız Cloud Firestore'u kullanmak için hızlı başlangıç kılavuzuna göz atın.

Cloud Firestore ve Firebase mobil/web SDK'ları güçlü bir model sunar istemci taraflı kodun doğrudan cihaza eriştiği sunucusuz uygulamalar 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'u oluşturan sistemlerdeki kısıtlamaları anlamak için 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:

Örnek gerçek zamanlı uygulama mimarisi

Kullanıcının cihazında çalışan bir uygulama (mobil veya web), Cloud Firestore'a bağladığınızda bağlantı bir Aynı region (veri tabanınızın bulunduğu bölge) seçeneğini belirleyin. Örneğin, veritabanınız us-east1 konumundaysa bağlantı da Cloud Firestore ön ucu us-east1 içinde de kullanılabilir. 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 sistemlerindeki verileri 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'daki bir 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ışı modunu etkinleştir

Firebase SDK'ları çevrimdışı veri kalıcılığı sağlar. Öğe Cloud Firestore'a bağlanamıyor. Uygulama, yerel olarak önbelleğe alınmış verilerle çalışarak kullanılabilir olmaya devam eder. 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. Daha fazla bilgi için çevrimdışı modu için Çevrimdışı verileri etkinleştirme başlıklı makaleye bakın.

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. Temel fark, verilerin nasıl kopyalandığıdır. 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.

Cloud Firestore'a mesajlaşma yoluyla bağlanan iki kullanıcı düşünün bir mobil SDK ile oluşturulmuş Google uygulamasıdır.

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ü işleyicinin arkasındaki mimari gösterilmektedir:

Anlık görüntü dinleyici bağlantısının mimarisi

İstemci B bir anlık görüntü bağladığında aşağıdaki etkinlik dizisi gerçekleşir dinleyicisidir:

  1. B İstemcisi, Cloud Firestore bağlantısını açar ve dinleyicinize, onSnapshot(collection("chatroom")) numaralı telefonu arayarak Firebase SDK'sı. Bu dinleyici saat boyunca aktif kalabilir.
  2. Cloud Firestore ön ucu, temel depolama sistemini sorgular önyüklenmesi gerekir. 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.
  3. Ardından B istemcisinin sorgusu dinleme moduna geçer. Dinleyici kayıt yapar ve verilerin güncellenmesini bekler.
  4. A istemcisi artık bir dokümanda değişiklik yapmak için yazma işlemi gönderir.
  5. Veritabanı, belge değişikliğini depolama sistemine sahip.
  6. İşlemsel olarak, sistem aynı güncellemeyi dahili bir değişiklik günlüğü. Değişiklik günlüğü, değişikliklerin en aza indirildiğinde yaşanır.
  7. Değişiklik günlüğü, güncellenen verileri bir abonelik havuzuna aktarır. işleyicileri tarafından desteklenmektedir.
  8. 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.
  9. 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'un ö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ı tetikleyen Cloud Firestore değişiklik günlükleri otomatik olarak yatay ölçeklendirilir. 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. Şuradan: İstemci ve SDK açısından, her şey şeffaftır ve herhangi bir işlem gerekmez. uygulamadan bildirilebilir. Aşağıdaki şemada gerçek zamanlı sorgular ölçeği:

Değişiklik günlüğü yayma mimarisi

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ç.

Pek çok uygulama, Cloud Firestore'un sağladığı tahmin edilebilir organik büyüme oranına sahiptir. ö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'un değişiklik günlüğü yapısı, güçlü 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. Hotspot'lardan kaçınmak, bu durumdan uzak durmanın anahtarıdır sorun.

Belgeleri 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'un 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 sayıda 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. İşe yarayabilir verilerinizi daha düşük yazma hızlarıyla daha küçük koleksiyonlara bölmek için en iyi seçenektir.

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 bir değer atfedersiniz.

Uzun soluklu 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. Bunu kullanırken Cloud Firestore, uygulamanıza gönderilen belgeler için faturalandırılırsınız. bir bağlantı kurmaktır. Uzun süreli anlık görüntü dinleyicisi, yalnızca kullanım ömrü boyunca sorguyu sunmak için ihtiyaç duyduğu veriler. Bu ilk yoklama işlemini içerir. Ardından veriler, veri işlemeye başlandığında gerçekten değişir. Diğer yandan, tek seferlik sorgularda gerçekleşebilecek verileri uygulamanın sorguyu son kez yürütmesinden bu yana değişmedi.

Uygulamanızın yüksek oranda veri tüketmesi gereken durumlarda anlık görüntü dinleyiciler uygun olmayabilir. Örneğin, kullanım alanınız çok sayıda dokümanı aktarıyorsa uzun süre boyunca bir bağlantı üzerinden saniye başına düşen daha düşük sıklıkta çalışan tek seferlik sorguları tercih etmek daha iyi olabilir.

Sonraki Adımlar