Orbtrace

Kapasite planlama

Dağıtımı yükünüze göre boyutlandırın — hesaplayıcıya günlük hacminizi, saklama sürenizi ve servis sayınızı girin; Helm boyutunu, Doris FE/BE sayısını, vCPU, bellek ve disk ihtiyacını alın. Apache Doris'in yayınlanmış dağıtım rehberine dayanır.

Orbtrace ne kadar donanım ister? Üç şeye bağlıdır: günde ne kadar telemetri gönderdiğiniz, ne kadar süre sakladığınız ve kaç servis çalıştırdığınız. Bu değerleri aşağıya girin; hesaplayıcı bir önerilen başlangıç yapılandırması döndürür — Helm boyutu, Doris FE/BE düğüm sayısı, toplam vCPU ve bellek, ayrılacak disk — ve dağıtımınıza doğrudan yapıştırabileceğiniz bir my-values.yaml eklentisi.

İş yükünüz

Gelişmiş varsayımlar

Önerilen başlangıç yapılandırması

Helm boyutu: mediumDoris profili: customrahatSoğuk katman: Gerekmez
Küme topolojisi
Doris FE
3
Doris BE
4
75 TiB BE başına
Orbtrace app
3
Toplam ayak izi
Pod / örnek
12
Sıcak disk (toplam) (TiB)
292.5
Blok depolama (toplam) (TiB)
300.2
PostgreSQL diski (GiB)
50

CPU ve bellek pod başınadır — her bileşenin Helm resources değerine birebir budur. Her hücre request → limit okunur: request Kubernetes'in rezerve ettiği (ve yerleşim kararını verdiği) miktar, limit ise üst tavandır (CPU'da throttle edilir, bellekte OOM ile öldürülür). O bileşenin toplamı için Adet ile çarpın; tüm kümenin toplamı aşağıdadır.

BileşenAdetvCPU/pod (istek → limit)Bellek/pod GiB (istek → limit)
Orbtrace app31326
Doris FE312816
Doris BE448816
PostgreSQL10.5212
Valkey10.2510.251

Küme toplam işlem gücü: 22.850 vCPU · 63.3133 GiB (istek → limit)

Kurulumunuz için notlar
  • BE sayısı, Doris'in yazma-CPU kuralı nedeniyle 3 ön ayarından 4'e yükseltildi — ~121 MB/s'lik 2× tepe, çekirdek başına 10 MB/s ve çekirdeklerin yarısı sorgulara ayrılmışken ~25 BE çekirdeği ister.
  • BE başına sıcak disk ~75 TiB çıkıyor. Bu çok büyük bir PVC — BE düğümü eklemeyi veya eski veriyi soğuk (S3) katmana taşımayı değerlendirin.
Helm values eklentisi

Bunları eşleşen ön ayarın üstüne values.yaml dosyanıza koyun, sonra canlı telemetriye göre ayarlayın.

# values-overlay.yaml — start from values-medium.yaml
orbtrace:
  replicaCount: 3
doris:
  profile:
    activeProfile: custom
    custom:
      base: small          # extend retention on a small/medium footprint
  fe:
    replicaCount: 3
  be:
    replicaCount: 4
    storagePvc:
      size: 75Ti
postgres:
  pvc:
    size: 50Gi

Kaba hesap, ±%25–50 doğrulukta. Doris temelli (tablet ≤ 20K replika/BE, 1–10 GB tablet, HA için ≥ 3 FE). İlk operasyon haftasında gerçek telemetriyle kalibre edin. · 4.923 tablets · 9.846 replicas @ RF2 · yazma ~60.7 MB/s (tepe 121.4) → 25 BE çekirdeği

Bunlar başlangıç noktasıdır, garanti değil

Çıktı yaklaşık ±%25–50 doğrulukta — donanım almak ve bir küme açmak için yeterli, ama kendi iş yükünüzü ölçmenin yerine geçmez. Orbtrace, boyutun tutup tutmadığını ilk operasyon haftasında söyleyen iki monitör (CardinalityMonitor, TombstoneMonitor) ile gelir; bunlara göre yeniden kalibre edin. Sayılar bilinçli olarak temkinlidir.

Girdiler ne anlama geliyor

On screen
  • Günlük veriGünde toplam log + iz + metrik, gzip açılmış, OpenTelemetry Collector çıkışında ölçülür — uygulamanın yayın tarafında değil. Yalnızca sıkıştırılmış hat hacmini biliyorsanız kabaca sıkıştırma oranlarıyla çarpın (loglar 8–12×, izler 4–6×, metrikler 3–5×).
  • ServislerFarklı service.name değerleri. Hacimden bağımsızdır — 5 TB/gün'de 50 servis ile 50 GB/gün'de 5000 servis ikisi de geçerlidir ve farklı boyutlanır. Düğüm sayısından çok kardinalite monitör kalibrasyonunu etkiler.
  • Sıcak saklamaHızlı BE diskinde, sık sorgulanan veri günü. Disk maliyetinin ve Doris tablet sayısının en büyük kaldıracıdır.
  • Soğuk saklamaS3 uyumlu nesne deposunda park edilen ek gün. Yalnızca-sıcak için 0 yapın. ~30 günden sonra soğuk katman çok sayıda pahalı blok depolamadan tasarruf ettirir.

CPU ve bellek pod başınadır; yalnızca depolama toplanır

Bileşen bazında dağılım tablosu CPU ve belleği pod başına listeler — her bileşenin Helm resources.requests / resources.limits değerine birebir budur. O bileşenin toplamı için Adet sütunuyla çarpın; küme toplam işlem gücü tablonun hemen altındadır. Toplam ayak izi kartları yalnızca küme genelinde anlamlı olanı toplar: pod sayısı ve depolama (bir app pod'u ile bir BE pod'unu tek bir "vCPU" değerinde toplamak yanıltıcı olurdu, o yüzden tek sayı olarak gösterilmez).

Hesaplayıcı Apache Doris'e nasıl dayanıyor

Orbtrace telemetriyi Apache Doris içinde saklar ve boyutlandırma matematiği tahmin yerine Doris'in kendi yayınlanmış dağıtım rehberini izler:

  • Düğüm şekilleri Doris'in donanım tabanından başlar — FE ve BE açılmak için en az 4 vCPU / 8 GiB ister ve üretim kümeleri düğüm başına 16 vCPU / 64 GiB önerilir (Cluster planning). Gönderilen values-large.yaml BE'si (8–16 vCPU / 32–64 GiB) tam bu banttadır.
  • FE sayısı. Doris, yüksek erişilebilir bir Raft çoğunluğu için en az 3 FE önerir ve bir FE'nin rahatça 10–20 BE yönettiğini belirtir — yani FE sayısı BE'den çok daha yavaş büyür.
  • BE sayısı tabanı yalnızca disk değil, bir tablet-sayısı bütçesidir. Tablet meta verisi FE belleğinde durur; bu yüzden Doris rehberi BE başına tablet replikasını birkaç on binde tutmaktır. Orbtrace < 20.000 replika/BE tavanına göre planlar. Hesaplayıcı, oturmuş tablet sayısını saklamanız × profilin bucket sayıları ve bölüm kadansından hesaplar (small/medium profilleri ham tabloları DAY, large profili HOUR ile bölümler — tablet ve bucket tasarımı), sonra bu tavana böler. Bu yüzden yüksek hacimli bir küme, yalnızca diskin gerektireceğinden daha çok BE isteyebilir — ve hesaplayıcı bu olduğunda uyarır.
  • Yazma CPU'su. Doris'in log iş yükü rehberi yazmayı BE çekirdeği başına 10 MB/s ile boyutlandırır (çekirdek başına yaklaşık 860 GB/gün). Hesaplayıcı günlük hacminizi alır, tepe için ikiye katlar, 10 MB/s'ye böler ve her BE'nin yarısı sorgulara ve compaction'a kalsın diye bir kez daha ikiye katlar. 100 TB/gün için bu ~480 BE çekirdeği eder — Doris rehberinin kendi örneğiyle aynı rakam. Bu, ön ayarın gönderdiğinden daha fazla BE gerektirdiğinde hesaplayıcı sayıyı yükseltir ve bunu söyler.
  • Tablet boyutu. Doris'in en iyi pratiği her tableti 1–10 GB bandında ve bucket sayılarını BE sayısının katı tutar. Orbtrace'in gönderilen bucket sayıları (ham tablolar small 16, large 128; rollup tabloları v2.3.0'dan beri small ve medium 1, large 4) tabletlerin her katmanın hedef hacminde bu banda düşmesi için seçilmiştir. Rollup tabloları küçüktür ve Doris içinde zamanlanmış işlerle güncellenir; artık sayıya dakikalık yazma yükü eklemezler.
  • Compaction thread'leri çekirdekleri izler. Ön ayarlar max_cumu_compaction_threads = çekirdek / 4 ile gelir; bellek limitinin %80'ini kullanan bir BE sağlıklıdır — Doris orayı tasarım gereği önbellekle doldurur.

Disk, replikasyon ve soğuk-katman kuralları, bu Doris rehberinin üstüne kurulu Orbtrace'in kendi kapasite-planlama çerçevesinden gelir.

Formüller

Yukarıdaki her sayı kaba hesaptır ve elle doğrulanabilir.

Sıcak disk

sicak_disk_TiB = gunluk_veri_TiB
               × sicak_saklama_gun
               × replikasyon_faktoru   (varsayılan 2; bir BE kaybına dayanır)
               × 1.5                    (sıkıştırma çalışma kümesi)
               × sikistirma_orani        (temkinli 0.5; 0.3 yalnızca oturmuş büyük tablolarda)
               × 1.3                     (veri patlaması + sıkıştırma payı)
be_basina_PVC  = sicak_disk_TiB / BE_sayisi

Sıkıştırma oranı en riskli girdidir — ölçün

Çerçeve varsayılanı, sık alıntılanan 0.3 değil, 0.5'tir (≈2:1). Gerçek bir OTel-Demo verisinde ölçülen tek-replika oranı küçük hacimde yalnızca ~2:1'di — tablolar büyüyüp sıkıştırma oturana kadar sabit kolon başına ters-indeks yükü baskındır. Diski 0.5 ile boyutlandırın, 0.3'e ancak oranı sürekli hacimde kendi verinizde ölçtükten sonra geçin (SHOW DATA FROM <db>.otel_traces ÷ yüklenen bayt ÷ replikasyon).

Yazma CPU'su → minimum BE

ort_MB_s        = gunluk_bayt / 86 400
tepe_MB_s       = 2 × ort_MB_s
yazma_cekirdek  = tepe_MB_s / 10             (Doris log rehberi: çekirdek başına 10 MB/s)
BE_cekirdek     = 2 × yazma_cekirdek          (yarısı sorgu + compaction için ayrılır)
min_BE_yazma    = ceil( BE_cekirdek / BE_basina_cekirdek )

Tablet sayısı → minimum BE

tablet    = Σ tablolar üzerinde ( canlı_bölüm × bucket )
            canlı_bölüm = saklama_gun × (HOUR için 24, DAY için 1)
replika   = tablet × replikasyon_faktoru
min_BE    = ceil( replika / 20.000 )
BE_sayisi = max( onayar_BE, min_BE, min_BE_yazma )   # en büyük taban kazanır

Soğuk katman (S3) ve PostgreSQL

s3_kova_TiB = gunluk_veri_TiB × soguk_saklama_gun × replikasyon × sikistirma × 1.2

PostgreSQL meta veriyi, denetimi, replay geçmişini ve zamanlayıcı kilitlerini tutar — telemetriyi değil. Hacme değil özellik kullanımına göre ölçeklenir, bu yüzden hesaplayıcı onu bir formül yerine boyut katmanına eşler (small 10 GiB → large 200 GiB).

Dağıttıktan sonra

  1. Eşleşen ön ayardan başlayın (values-small.yaml / values-medium.yaml / values-large.yaml) ve yukarıdaki eklentiyi uygulayın. Bkz. Kurulum → Helm ile Kubernetes.
  2. İlk haftayı izleyin. orbtrace.cardinality.trend.exceeded ya da orbtrace.tombstone.max_version tırmanıyorsa boyut dardır — BE sayısını artırın ya da soğuk katmanı genişletin.
  3. Bir Collector ayağa kaldırın ve verinin aktığını doğrulayın — Entegrasyon desenleri.

İş yükünüz 100 TB/gün üzerindeyse, hesaplayıcı large ön ayarının üstüne bir custom taslak döndürür; hiperölçek dağıtımlar BE topolojisi ve S3 yaşam döngüsü planlaması için Orbtrace ekibiyle özel bir çalışma gerektirir.