Pengembangan Skrip / Patch Sistem
Ditambahkan pada versi 8.0.11
Patch sistem adalah mekanisme untuk mengganti berkas runtime berdasarkan versi DataFlux Func. Setelah berkas patch dan konfigurasi dimasukkan ke direktori yang sesuai dengan versi saat ini, Server, Worker, dan Beat akan menyalin berkas patch ke lokasi yang ditentukan saat masing-masing dimulai.
Patch sistem cocok untuk menerapkan berkas perbaikan yang telah dikonfirmasi ketika image belum dapat diganti untuk sementara, dan tidak cocok sebagai cara ekstensi kode biasa atau penempatan sumber daya. Jika perlu menginstal dependensi sistem atau paket Python, gunakan mekanisme terkait seperti Pengembangan Skrip / Skrip Pra-eksekusi.
Patch Sistem akan menimpa berkas runtime DataFlux Func
Sebelum menerapkan patch, pastikan sumber patch, versi yang berlaku, dan jalur target, serta buat cadangan berkas yang akan diganti. Patch yang salah dapat menyebabkan Server, Worker, atau Beat tidak berjalan normal.
1. Menyiapkan Patch Sistem
1.1 Memastikan Versi Saat Ini
Konfirmasi versi DataFlux Func saat ini di 'Manajemen / Tentang'. Sistem hanya akan membaca direktori patch yang namanya persis sama dengan versi saat ini, dan tidak akan membaca patch dari versi lain.
Direktori patch sistem adalah sebagai berikut:
| Lingkungan | Lokasi |
|---|---|
| Dalam kontainer | /data/resources/system-patches/{versi-saat-ini}/ |
| Pada host | {direktori-instalasi}/data/resources/system-patches/{versi-saat-ini}/ |
Misalnya, jika versi saat ini adalah 8.0.19, direktori patch di host adalah:
| Text Only | |
|---|---|
1 | |
1.2 Menyiapkan Berkas Patch
Setiap direktori patch versi harus berisi patch.yaml. Berkas patch dapat langsung diletakkan di direktori versi saat ini; lokasi target sebenarnya cukup ditentukan dengan benar di patch.yaml. Contoh:
| Text Only | |
|---|---|
1 2 3 4 5 | |
Dalam hal ini, konfigurasi files pada patch.yaml adalah pemetaan nama berkas patch ke jalur target:
| patch.yaml | |
|---|---|
1 2 3 | |
Aturan jalur dalam konfigurasi adalah sebagai berikut:
- Kunci
filesadalah nama berkas di dalam direktori patch versi saat ini. Berkas harus ada di direktori versi saat ini. - Jalur target yang diawali dengan
@/relatif terhadap direktori akar aplikasi DataFlux Func. Misalnya,@/worker/utils/example.pyberartiworker/utils/example.pydi bawah direktori aplikasi. - Untuk jalur target yang tidak diawali
@/, disarankan menggunakan jalur absolut untuk menghindari ambiguitas jalur relatif karena direktori kerja yang berbeda. - Direktori target akan dibuat otomatis jika belum ada; jika berkas target sudah ada, berkas akan langsung ditimpa tanpa pencadangan otomatis.
Konfigurasi files yang sama akan diterapkan masing-masing oleh Server, Worker, dan Beat; pemfilteran patch per layanan tidak didukung. Saat menyiapkan patch, pastikan semua jalur target berlaku untuk kontainer yang menjalankan layanan tersebut.
1.3 Mengunggah Patch
Jika memiliki akses ke host, patch.yaml dan berkas patch dapat langsung dimasukkan ke direktori host yang sesuai dengan versi saat ini.
Anda juga dapat mengunggah menggunakan 'Manajemen Berkas':
- Aktifkan modul manajer berkas di 'Manajemen / Fitur Eksperimental'.
- Buka 'Manajemen / Manajemen Berkas / system-patches'.
- Klik 'Buat direktori patch untuk versi saat ini (x.y.z)', lalu masuk ke direktori versi yang baru dibuat.
- Unggah
patch.yamldan berkas patch langsung ke direktori versi saat ini, dan pastikan nama berkas dan jalur target difilessudah benar.
2. Menerapkan dan Memeriksa Patch Sistem
2.1 Memulai Ulang DataFlux Func
Setelah persiapan selesai, mulai ulang DataFlux Func sesuai Pemeliharaan Sistem / Peningkatan dan Mulai Ulang agar Server, Worker, dan Beat dibuat ulang dan menerapkan patch.
Setiap layanan akan melakukan proses berikut secara berurutan saat dimulai:
- Membaca versi DataFlux Func saat ini.
- Mencari
system-patches/{versi-saat-ini}/patch.yaml. - Salin setiap berkas patch sesuai konfigurasi
files. - Catat host saat ini, layanan, versi, waktu penerapan, dan hasil penerapan setiap berkas.
Jika direktori versi saat ini atau patch.yaml tidak ada, layanan akan melewati patch sistem. Jika patch.yaml bukan pemetaan YAML yang valid atau tidak memiliki pemetaan files yang valid, pemrosesan patch akan melaporkan kesalahan dan menghentikan proses mulai layanan terkait.
Jika satu berkas patch tidak ada, jalur tidak valid, atau penyalinan gagal, sistem akan mencatat berkas tersebut sebagai gagal dan melanjutkan memproses berkas lainnya, kemudian melanjutkan proses mulai layanan. Oleh karena itu, layanan yang berhasil dimulai tidak berarti semua patch telah berhasil diterapkan.
2.2 Memeriksa Hasil Penerapan
Masuk ke 'Manajemen / Tentang / Alat Sistem', lalu klik 'Lihat Log Patch Sistem'.
Log dikelompokkan berdasarkan versi dan waktu penerapan yang berdekatan, serta menampilkan informasi berikut:
- Layanan dan nama host
- Versi DataFlux Func
- Waktu penerapan
- Jumlah total patch, jumlah berhasil, dan jumlah gagal
- Setiap berkas patch, jalur target, hasil penerapan, dan informasi error
Pastikan setiap node Server, Worker, dan Beat memiliki catatan terkait, dan semua berkas patch ditampilkan berhasil. Di log kontainer, hasil penerapan setiap berkas juga akan ditampilkan dengan diawali [SYSTEM PATCH].
3. Memperbarui atau Menghapus Patch Sistem
Sistem akan menerapkan ulang patch versi saat ini setiap kali layanan dimulai. Oleh karena itu, setelah mengubah berkas patch atau patch.yaml, DataFlux Func harus dimulai ulang kembali agar perubahan berlaku.
Menghapus konfigurasi patch tidak akan segera memulihkan berkas yang telah ditimpa di kontainer yang sedang berjalan. Untuk jalur target @/, hapus konfigurasi terkait dan buat ulang layanan terkait agar dimulai dari berkas image asli; untuk jalur target absolut di direktori persisten, berkas juga perlu dipulihkan menggunakan cadangan sebelum operasi.
Setelah meningkatkan DataFlux Func, patch di direktori versi lama tidak akan diterapkan ke versi baru. Harap konfirmasi ulang berdasarkan kode versi baru apakah patch masih diperlukan dan kompatibel, dan buat direktori versi baru hanya setelah mendapatkan patch yang berlaku untuk versi baru. Jangan langsung menyalin patch versi lama ke direktori versi baru.