Skip to content

Pano Verisi ve Yenileme

Pano widget'ları birden fazla çalışma alanı koleksiyonundan toplanan verileri görüntüler. Bu sayfa, verinin veritabanından ekranınıza nasıl aktığı, önbelleklemenin nasıl çalıştığı ve büyük çalışma alanları için performansın nasıl optimize edildiği açıklar.

Veri akışı genel bakışı

Pano widget'ları için veri hattı şu yolu izler:

  1. Kullanıcı bir pano açar -- ön yüz, API'den widget verisini ister.
  2. API önbelleği kontrol eder -- Redis'te yakın zamanda hesaplanmış bir sonuç aranır.
  3. Önbellek isabeti -- önbelleklenmiş sonuç hemen döndürülür.
  4. Önbellek ıskalaması -- API, MongoDB'ye karşı bir toplama sorgusu çalıştırır.
  5. Sonuç önbelleklenir -- yeni sonuç bir TTL ile Redis'te depolanır.
  6. Veri döndürülür -- ön yüz widget'ı işler.
AdımBileşenGecikme (tipik)
Önbellek kontrolüRedis< 1ms
Önbellek isabeti yanıtıAPI'den ön yüze5-20ms
Toplama sorgusuMongoDBVeri hacmine bağlı olarak 50-500ms
Önbellek yazmaRedis< 1ms
Tam gidiş-dönüş (önbellek ıskalaması)Uçtan uca100-600ms

Veri kaynakları

Her widget türü belirli MongoDB koleksiyonlarından veri çeker:

Widget kategorisiBirincil koleksiyonlarİkincil koleksiyonlar
Görev dağılımı (durum, öncelik, etiket, atanan kişi)issuesstates, labels, workspace_memberships
Aktivite widget'ları (ısı haritası, zaman çizelgesi)activity_logissues, workspace_memberships
Döngü widget'ları (risk kartları, aktif döngüler)cycles, cycle_issuesissues
Modül widget'larımodules, module_issuesissues
Zaman takibi widget'larıtime_logsissues, workspace_memberships
Sağlık ve risk widget'larıissuesactivity_log, cycles
Çalışma alanı özetiprojects, cycles, workspace_memberships, pages, modules, issuesYok
Kullanıcıya özel (hoşgeldiniz, son öğeler)activity_log, Redis son öğeler önbelleğiissues

Çalışma alanı genelinde toplama

Varsayılan olarak, pano widget'ları tüm çalışma alanı genelinde veri toplar. Bu şu anlama gelir:

  • Kullanıcının erişimi olan tüm projeler dahil edilir.
  • Misafir kullanıcılar yalnızca davet edildikleri projelerin verilerini görür.
  • Arşivelenmiş projeler, widget yapılandırmasında açıkça dahil edilmedikçe hariç tutulur.

Bir widget belirli bir proje veya döngüye kapsamlandırıldığında, toplama hattı sonuçları o kapsamla sınırlandıran bir filtre aşaması ekler.

Yenileme davranışı

Sayfa yüklemesinde otomatik yenileme

Bir kullanıcı her pano açtığında, tüm görünen widget'lar taze veri alır. Önbelleklenmiş veri mevcutsa ve TTL penceresi içindeyse, önbellek kullanılır.

Manuel yenileme

Tüm widget'ları önbelleği atlayarak yeni veri almaya zorlamak için pano araç çubuğundaki Yenile simgesine tıklayın.

İşlemÖnbellek davranışı
Sayfa yüklemeMevcutsa önbelleği kullanır
Manuel yenilemeÖnbelleği atlar, taze veri alır
Otomatik yenileme aralığıHer tikte önbelleği atlar
Widget yapılandırma değişikliğiO widget için taze veri alır

Otomatik yenileme aralıkları

Bir monitörde açık kalan panolar için otomatik yenileme aralığı yapılandırın:

AralıkKullanım alanı
KapalıVarsayılan. Veri yalnızca sayfa yüklemesinde veya manuel yenilemede yenilenir
1 dakikaYüksek frekanslı izleme (günlük toplantı ekranları)
5 dakikaSprint sırasında aktif izleme
15 dakikaArka plan farkındalığı
30 dakikaDüşük öncelikli genel bakış ekranları

Aralığı pano araç çubuğundan ... menü > Otomatik yenileme ile ayarlayın.

İPUCU

Otomatik yenileme API yükünü orantılı olarak artırır. 10 widget'lı ve her dakika yenilenen bir pano dakikada 10 API çağrısı oluşturur. Çok widget'lı panolar için daha uzun aralıklar kullanın.

Önbellekleme stratejisi

Redis önbellek yapısı

Pano verisi Redis'te şu anahtar deseni ile önbelleklenir:

setget:dashboard:{workspace_id}:{widget_type}:{config_hash}
BileşenAçıklama
workspace_idBu verinin ait olduğu çalışma alanı
widget_typeWidget tür tanımlayıcısı
config_hashWidget'ın filtre ve kapsam yapılandırmasının SHA-256 özeti

Bu, aynı türde farklı yapılandırmalara sahip iki widget'ın ayrı önbellekler tutmasını sağlar.

Önbellek TTL

Veri türüVarsayılan TTLGerekçe
Görev sayıları ve dağılımları5 dakikaTazelik ile sorgu maliyetini dengeler
Aktivite verisi (ısı haritası, zaman çizelgesi)10 dakikaAktivite kalıpları yavaş değişir
Döngü ve modül ilerlemesi5 dakikaSprint verisi makul ölçüde güncel olmalı
Sağlık puanları15 dakikaBileşik puanlar daha az sık güncelleme gerektirir
Çalışma alanı özet sayıları10 dakikaBelge sayımları büyük çalışma alanlarında maliyetlidir
Kullanıcıya özel veri (hoşgeldiniz, son öğeler)2 dakikaKişisel veri taze hissettirmeli

Önbellek geçersiz kılma

Önbellek şu senaryolarda otomatik olarak geçersiz kılınır:

TetikleyiciKapsam
Görev durum değişikliğiO projeye filtrelenmiş widget'lar
Görev oluşturma veya silmeÇalışma alanındaki tüm görev tabanlı widget'lar
Döngü başlama veya bitmeDöngüyle ilgili widget'lar
Manuel yenileme düğmesine tıklanmaMevcut panodaki tüm widget'lar
Widget yapılandırma değişikliğiİlgili widget

Gerçek zamanlı ve önbelleklenmiş veri karşılaştırması

SetGet panoları gerçek zamanlı kesinlik yerine güvenilirliği önceliklendirir:

BoyutDavranış
Veri güncelliğiWidget'lar en fazla TTL kadar eski veri gösterir (tipik olarak 5-15 dakika)
TutarlılıkBir panodaki tüm widget'lar biraz farklı zaman noktalarından veri gösterebilir
Gerçek zamanlı güncellemelerPanolara WebSocket üzerinden iletilmez (bildirimlerden farklı olarak)
Zamanlayıcı widget'ıZaman takibi zamanlayıcısı Redis üzerinden gerçek zamanlıdır, ancak zaman kaydı toplamaları önbelleklenir

UYARI

İki takım üyesi aynı panoya biraz farklı zamanlarda bakarsa, farklı sayılar görebilir. Bu beklenen bir durumdur ve bir sonraki yenileme döngüsünde çözülür.

Performans değerlendirmeleri

Büyük çalışma alanları

50.000'den fazla görevi olan çalışma alanları daha yavaş toplama sorguları yaşayabilir. Azaltma stratejileri:

StratejiAçıklama
Widget'ları projelere kapsamlandırınHer sorgu için veri kümesini azaltır
Daha uzun yenileme aralıkları kullanınSorgu sıklığını azaltır
Liste widget'larını sınırlayınYaklaşan Teslim Tarihli Görevler, Sıcak Görevler, Durmuş Görevler'de daha düşük maks öğe ayarlayın
Çok sayıda özel sorgu widget'ından kaçınınÖzel sorgular önceden optimize edilmiş toplama hatlarını atlar

MongoDB dizinleri

Pano toplama sorguları performans için şu dizinlere dayanır:

KoleksiyonDizinKullanan
issues{ workspace_id: 1, state_id: 1 }Durum dağılımı, istatistik çubuğu
issues{ workspace_id: 1, priority: 1 }Öncelik dağılımı
issues{ workspace_id: 1, assignee_id: 1 }Atanan kişi dağılımı, iş yükü
issues{ workspace_id: 1, due_date: 1 }Yaklaşan teslim tarihli görevler, teslim tarihi takvimi
activity_log{ workspace_id: 1, created_at: -1 }Aktivite zaman çizelgesi, ısı haritası
time_logs{ workspace_id: 1, logged_date: 1 }Zaman takibi widget'ları
cycle_issues{ cycle_id: 1 }Döngü ilerlemesi, risk kartları
module_issues{ module_id: 1 }Modül ilerlemesi

API hız sınırlaması

Pano API uç noktaları kötüye kullanımı önlemek için hız sınırlıdır:

Uç nokta deseniHız sınırı
GET /api/workspaces/{slug}/dashboards/{id}/widgetsDakikada 60 istek
GET /api/workspaces/{slug}/dashboards/{id}/widgets/{widget_id}/dataDakikada 120 istek
POST /api/workspaces/{slug}/dashboards/{id}/refreshDakikada 10 istek

API uç noktaları

MetodUç noktaAçıklama
GET/api/workspaces/{slug}/dashboards/Tüm panoları listele
POST/api/workspaces/{slug}/dashboards/Pano oluştur
GET/api/workspaces/{slug}/dashboards/{id}/Pano detaylarını al
PATCH/api/workspaces/{slug}/dashboards/{id}/Pano ayarlarını güncelle
DELETE/api/workspaces/{slug}/dashboards/{id}/Panoyu sil
GET/api/workspaces/{slug}/dashboards/{id}/widgets/Panodaki widget'ları listele
POST/api/workspaces/{slug}/dashboards/{id}/widgets/Widget ekle
PATCH/api/workspaces/{slug}/dashboards/{id}/widgets/{widget_id}/Widget yapılandırmasını güncelle
DELETE/api/workspaces/{slug}/dashboards/{id}/widgets/{widget_id}/Widget'ı kaldır
GET/api/workspaces/{slug}/dashboards/{id}/widgets/{widget_id}/data/Widget verisini al
POST/api/workspaces/{slug}/dashboards/{id}/refresh/Tüm widget'ları zorla yenile

Sorun giderme

BelirtiOlası nedenÇözüm
Widget eski veri gösteriyorÖnbellek TTL'i henüz dolmadıManuel Yenile düğmesine tıklayın
Widget "Veri yok" gösteriyorKapsam filtresi tüm sonuçları hariç tutuyorWidget yapılandırma kapsamını kontrol edin
Widget yavaş yükleniyorProje kapsamı olmadan büyük veri kümesiWidget'ı belirli bir projeye kapsamlandırın
Pano yüklemesi uzun sürüyorÇok fazla widget aynı anda veri alıyorWidget sayısını azaltın veya yenileme aralığını artırın
Widget'lar arası sayılar farklıWidget'lar farklı zamanlarda önbelleklenmişÖnbellek zaman damgalarını hizalamak için panoyu yenileyin

İlgili sayfalar