Lewati ke isi

Penerapan dan Pemeliharaan / Deployment dengan Ketersediaan Tinggi

DataFlux Func mendukung beberapa deployment untuk memenuhi persyaratan ketersediaan tinggi.

Artikel ini terutama menjelaskan cara menginstal dan melakukan deployment DataFlux Func dengan ketersediaan tinggi secara langsung di server.

Saat memilih solusi ketersediaan tinggi untuk Redis, jangan gunakan Redis versi Cluster; Anda dapat menggunakan Redis versi Master-Slave

Jika sebelumnya Anda telah menginstal DataFlux Func menggunakan mode satu mesin, saat beralih ke deployment dengan ketersediaan tinggi, lihat Penerapan dan Pemeliharaan / Backup dan Migrasi / Migrasi Database untuk melakukan migrasi

1. Deployment Multi-Replika

Layanan Server dan Worker DataFlux Func mendukung deployment multi-replika untuk memenuhi kebutuhan ketersediaan tinggi dan penskalaan.

Umumnya, bottleneck efisiensi eksekusi fungsi terletak pada layanan Worker (yaitu kode Python), sehingga layanan Server hanya perlu menghindari single point of failure, sedangkan layanan Worker perlu menambah jumlah replika berdasarkan volume bisnis aktual.

Saat deployment multi-replika, pastikan konten file user-config.yaml pada semua layanan benar-benar identik, dan semuanya terhubung ke MySQL dan Redis yang sama, serta direktori sumber daya dipasang pada penyimpanan yang sama.

Selain itu, layanan Beat sebagai pemicu Tugas Terjadwal hanya dapat dan harus dijalankan dengan 1 replika; jika tidak, dapat menghasilkan tugas berkala ganda.

flowchart TB
    USER[Pengguna]
    SERVER_1[Server 1]
    SERVER_2[Server 2]
    WORKER_1[Worker 1]
    WORKER_2[Worker 2]
    WORKER_3[Worker 3]
    BEAT[Beat]
    REDIS[Redis]

    USER --Permintaan HTTP--> SLB
    SLB --Penerusan HTTP--> SERVER_1
    SLB --Penerusan HTTP--> SERVER_2
    SERVER_1 --Enqueue tugas eksekusi fungsi--> REDIS
    SERVER_2 --> REDIS
    REDIS --Dequeue tugas eksekusi fungsi--> WORKER_1
    REDIS --Dequeue tugas eksekusi fungsi--> WORKER_2
    REDIS --Dequeue tugas eksekusi fungsi--> WORKER_3

    BEAT --"Enqueue tugas eksekusi fungsi\n(terjadwal)"--> REDIS

2. Deployment Utama-Cadangan yang Sepenuhnya Independen

Untuk saat ini, abaikan dulu apakah metode deployment ini termasuk 'ketersediaan tinggi' atau bukan; anggap saja kebutuhan deployment ini memang ada.

Deployment utama-cadangan yang sepenuhnya independen sebenarnya adalah metode penerapan 2 set DataFlux Func yang masing-masing independen (dengan Secret, MySQL, dan Redis di file konfigurasi user-config.yaml yang benar-benar sama).

Karena DataFlux Func utama dan cadangan berjalan secara independen, layanan Beat di server utama dan cadangan akan memicu tugas berkala di lingkungan masing-masing, yang akan menyebabkan tugas berkala terpicu ganda.

Untuk menghindari masalah ini, Anda dapat mematikan DataFlux Func pada node cadangan dalam kondisi normal, atau menulis penanganan untuk mencegah eksekusi tugas ganda di dalam Skrip.

flowchart TB
    USER[Pengguna]
    MAIN_NODE_SERVER[Server Node Utama]
    MAIN_NODE_WORKER[Worker Node Utama]
    MAIN_NODE_BEAT[Beat Node Utama]
    MAIN_NODE_REDIS_QUEUE[Antrean Redis Node Utama]
    BACKUP_NODE_SERVER[Server Node Cadangan]
    BACKUP_NODE_WORKER[Worker Node Cadangan]
    BACKUP_NODE_BEAT[Beat Node Cadangan]
    BACKUP_NODE_REDIS_QUEUE[Antrean Redis Node Cadangan]

    USER --Permintaan HTTP--> SLB
    SLB --Penerusan HTTP--> MAIN_NODE_SERVER
    SLB -.-> BACKUP_NODE_SERVER

    subgraph "Node Cadangan - Nonaktif"
        direction TB
        BACKUP_NODE_SERVER --Enqueue tugas eksekusi fungsi--> BACKUP_NODE_REDIS_QUEUE
        BACKUP_NODE_REDIS_QUEUE --Dequeue tugas eksekusi fungsi--> BACKUP_NODE_WORKER

        BACKUP_NODE_BEAT --"Enqueue tugas eksekusi fungsi\n(terjadwal)"--> BACKUP_NODE_REDIS_QUEUE
    end

    subgraph "Node Utama"
        direction TB
        MAIN_NODE_SERVER --Enqueue tugas eksekusi fungsi--> MAIN_NODE_REDIS_QUEUE
        MAIN_NODE_REDIS_QUEUE --Dequeue tugas eksekusi fungsi--> MAIN_NODE_WORKER

        MAIN_NODE_BEAT --"Enqueue tugas eksekusi fungsi\n(terjadwal)"--> MAIN_NODE_REDIS_QUEUE
    end