Arsitektur Streaming RTSP Skala Otomatis dengan Dua Orchestrator & Tanpa Kehilangan Paket
Sebuah platform pengawasan memerlukan skalabilitas infrastruktur streaming videonya secara dinamis โ menangani mulai dari 10 hingga 200+ IP cameras dengan ratusan penonton bersamaan dan AI processing workers โ sambil menjamin tidak ada kehilangan paket (packet loss) selama operasi penskalaan dan menjaga URL stream yang stabil yang tidak pernah berubah.
Diskusikan Proyek Anda
Tantangan
Infrastruktur streaming tetap tidak dapat menangani permintaan variabel dari platform pengawasan yang berkembang:
- Variabilitas Skala โ Jumlah kamera dan permintaan penonton berfluktuasi secara dramatis sepanjang hari (rasio puncak-ke-palung 10x)
- Biaya Over-Provisioning โ Penyediaan untuk beban puncak berarti 70%+ sumber daya menganggur selama jam di luar puncak
- Kehilangan Paket Selama Penskalaan โ Menambah atau menghapus server streaming menyebabkan interupsi stream, menghilangkan frame untuk AI processing workers
- Ketidakstabilan URL โ Kamera dan penonton yang dikonfigurasi dengan IP server tertentu memerlukan konfigurasi ulang ketika infrastruktur berubah
- Kebutuhan Penskalaan yang Berbeda โ Ingesti kamera dan distribusi penonton memiliki pola beban yang secara fundamental berbeda, memerlukan penskalaan independen
- Gangguan AI Worker โ Pipeline AI processing mengalami crash ketika server stream sumber mereka diskalakan ke bawah
Solusi Kami
Kami merancang arsitektur streaming skala otomatis dual-orchestrator dengan cluster ingesti dan distribusi terpisah, graceful shutdown 5 fase untuk zero packet drop, URL berbasis DNS yang stabil, dan koneksi ulang AI worker otomatis.
Arsitektur
- Server Streaming: MediaMTX untuk dukungan protokol RTSP/WebRTC/HLS
- Cluster Ingesti: 1-10 server yang menerima stream RTSP kamera
- Cluster Distribusi: 2-20 server yang melayani penonton (WebRTC/HLS) dan AI workers (RTSP)
- Dual Orchestrators: Pengontrol penskalaan independen untuk ingesti dan distribusi
- Load Balancers: Load balancer terpisah per cluster dengan algoritma yang sesuai protokol
- Service Registry: Redis untuk status server, pemetaan stream, dan koordinasi
- Pemantauan Kesehatan: Pemeriksaan kesehatan aktif dengan pemulihan otomatis
- Lapisan DNS: Nama domain stabil yang menunjuk ke load balancers (URL tidak pernah berubah)
Desain Dual Orchestrator
Mengapa Dua Orchestrator
Ingesti dan distribusi memiliki karakteristik penskalaan yang secara fundamental berbeda:
- Ingesti berskala dengan jumlah kamera dan bandwidth masuk (terprediksi, tumbuh stabil)
- Distribusi berskala dengan jumlah penonton dan permintaan AI worker (bursty, tidak terprediksi)
Orchestrator terpisah memungkinkan masing-masing untuk berskala secara independen dengan kebijakan, metrik, dan ambang batas khusus โ tanpa keputusan penskalaan satu cluster memengaruhi yang lain.
Ingestion Orchestrator
- Metrik Utama: Koneksi kamera per server
- Metrik Sekunder: Pemanfaatan bandwidth masuk
- Penskalaan Naik (Scale Up): Ketika CPU melebihi ambang batas atau kamera per server melebihi kapasitas
- Penskalaan Turun (Scale Down): Ketika pemanfaatan turun di bawah ambang batas untuk periode stabilisasi berkelanjutan
- Rentang Server: 1 hingga 10 server
Distribution Orchestrator
- Metrik Utama: Koneksi penonton + AI worker per server
- Metrik Sekunder: Pemanfaatan bandwidth keluar
- Penskalaan Naik (Scale Up): Ketika CPU melebihi ambang batas atau koneksi per server melebihi kapasitas
- Penskalaan Turun (Scale Down): Ketika pemanfaatan turun di bawah ambang batas untuk periode berkelanjutan (stabilisasi lebih lama dari ingesti)
- Rentang Server: 2 hingga 20 server (minimal 2 untuk ketersediaan tinggi)
Zero Packet Drop: Graceful Shutdown 5 Fase
Ketika server distribusi dijadwalkan untuk dihapus, proses 5 fase memastikan tidak ada frame yang hilang:
Fase 1: Pra-NotifikasiServer ditandai sebagai "DRAINING" di service registry. Bobot load balancer dikurangi sehingga koneksi baru diarahkan ke tempat lain. Notifikasi Redis pub/sub dan webhooks memberi tahu AI workers untuk bersiap migrasi.
Fase 2: Pembaruan Load BalancerServer dihapus dari kumpulan backend load balancer. Tidak ada koneksi baru yang dapat mencapai server yang sedang draining. Koneksi yang ada berlanjut tanpa gangguan.
Fase 3: Migrasi AI WorkerAI workers memutuskan koneksi dari server yang sedang draining dan menyambung kembali ke server distribusi yang sehat. Pemeliharaan status berbasis checkpoint memastikan pemrosesan dilanjutkan dari frame yang tepat di mana ia berhenti. Total jeda: sekitar 3 detik tanpa kehilangan frame.
Fase 4: Pengurasan PenontonKoneksi penonton yang tersisa dikuras secara alami selama jendela yang dapat dikonfigurasi. Pemutar video modern otomatis menyambung kembali ke URL stabil yang sama, yang mengarahkan ke server yang sehat. Sebagian besar penonton tidak mengalami gangguan.
Fase 5: PembersihanVerifikasi semua koneksi telah ditutup. Hapus server dari service registry. Hancurkan instance cloud. Catat metrik penskalaan.
URL Stabil
Arsitektur URL memastikan kamera dan klien tidak pernah memerlukan konfigurasi ulang:
- Target publikasi kamera: Nama domain ingesti yang stabil
- Target akses penonton/AI: Nama domain distribusi yang stabil
- Catatan DNS menunjuk ke IP load balancer (yang bersifat permanen)
- Load balancers menangani perutean ke server backend secara transparan
- Server backend dapat ditambahkan, dihapus, atau diganti tanpa perubahan URL
Service Registry (Redis)
Sebuah instance Redis terpusat mengoordinasikan seluruh sistem:
- Pelacakan status server (aktif, draining, offline)
- Pemetaan stream-ke-server (kamera mana yang ada di server ingesti mana)
- Status AI worker dan data checkpoint
- Metrik beban per server untuk keputusan penskalaan
- Saluran Pub/sub untuk event koordinasi real-time
Koneksi Ulang Klien AI
Sebuah library klien AI menyediakan koneksi ulang yang mulus:
- Mendengarkan notifikasi penghapusan server melalui Redis pub/sub
- Checkpointing frame otomatis pada interval reguler
- Koneksi ulang ke server distribusi yang sehat saat notifikasi
- Melanjutkan pemrosesan dari checkpoint dengan jeda minimal
- Pelaporan metrik untuk event koneksi ulang
Pemantauan Kesehatan
- Pemeriksaan kesehatan aktif pada setiap server secara berkala
- Pembaruan load balancer otomatis saat kegagalan server
- Pemicu pemulihan otomatis untuk server yang tidak responsif
- Pelacakan uptime dan pelaporan ketersediaan
Fitur Utama
- Dual Orchestrators โ Penskalaan independen untuk cluster ingesti dan distribusi
- Zero Packet Drop โ Graceful shutdown 5 fase dengan migrasi AI worker
- URL Stabil โ Perutean berbasis DNS memastikan URL tidak pernah berubah selama penskalaan
- Koneksi Ulang AI Worker โ Migrasi berbasis checkpoint dengan jeda ~3 detik dan tanpa kehilangan frame
- Penskalaan Independen โ Ingesti dan distribusi berskala berdasarkan metrik mereka sendiri
- Service Registry โ Koordinasi berbasis Redis untuk status server dan pemetaan stream
- Pemantauan Kesehatan โ Pemeriksaan aktif dengan pemulihan otomatis
- Optimasi Biaya โ Penskalaan turun otomatis selama periode permintaan rendah
Hasil
Tumpukan Teknologi
caseStudyDetail.more Studi Kasus
Jelajahi lebih banyak implementasi teknis kami
Pemrosesan Faktur Bertenaga AI dengan OCR dan Integrasi QuickBooks
Sebuah bisnis menengah yang memproses ratusan faktur vendor setiap bulan perlu menghilangkan entri data manual dengan mengekstraksi data faktur secara otomatis menggunakan AI/OCR dan menyinkronkannya langsung ke QuickBooks untuk pembukuan dan pelacakan pembayaran.
Penyisipan Iklan Sisi Klien (CSAI) dengan Penguraian Penanda SCTE-35 & Integrasi Pemutar Multi-Platform
Sebuah platform streaming video perlu mengimplementasikan Client-Side Ad Insertion (CSAI) di seluruh aplikasi web, seluler, dan TV terhubung โ memungkinkan pengalaman iklan yang dipersonalisasi di tingkat perangkat dengan dukungan interaksi iklan penuh (overlay yang dapat diklik, banner pendamping, tombol lewati) yang tidak dapat disediakan oleh penyisipan sisi server.
Siap Mentransformasi Bisnis Anda?
Mari diskusikan bagaimana kami dapat menerapkan solusi serupa untuk tantangan Anda.