全部产品
Search
文档中心

:Mulai mulus

更新时间:Nov 10, 2025

Rilis, skala keluar, dan restart tidak dapat dihindari untuk setiap aplikasi online. Fitur mulai mulus di Microservices Engine (MSE) melindungi aplikasi selama operasi tersebut dengan tiga kemampuan utama: registrasi layanan tertunda, pra-ambil lalu lintas rendah, dan pemeriksaan kesiapan layanan. Topik ini menjelaskan cara menggunakan fitur mulai mulus di MSE.

Ikhtisar fitur

Registrasi tertunda

Instans penyedia layanan mikro melakukan registrasi ke registrasi layanan selama startup aplikasi. Setelah terdaftar, aplikasi konsumen dapat berlangganan dan memanggil penyedia tersebut. Untuk aplikasi Java berbasis framework Spring, registrasi biasanya terjadi setelah konteks Spring direfresh. Jika penyedia mendaftar sebelum logika inisialisasi asinkronnya selesai, panggilan dari konsumen berpotensi gagal. Misalnya, layanan data besar mungkin perlu menarik ratusan megabyte data dari Object Storage Service (OSS) sebelum siap melayani permintaan. Jika aplikasi langsung mendaftar setelah startup, lalu lintas masuk dapat menyebabkan kesalahan karena sumber daya belum tersedia. Fitur registrasi tertunda memungkinkan Anda mengatur penundaan untuk menunda registrasi layanan, sehingga memastikan aplikasi sepenuhnya diinisialisasi sebelum mendaftar ke registrasi layanan dan menerima lalu lintas. Hal ini mencegah kegagalan panggilan akibat konsumen memanggil penyedia yang belum siap.

Pra-ambil lalu lintas rendah

Instans yang baru dimulai sering kali berada dalam kondisi "dingin". Dalam kondisi ini, instans perlu melakukan operasi seperti pemuatan malas kolam koneksi, pemanasan cache, dan kompilasi just-in-time (JIT) kode hot spot. Akibatnya, instans baru ini dapat menangani jauh lebih sedikit permintaan dibandingkan instans yang telah berjalan selama beberapa waktu. Tanpa intervensi, waktu respons rata-rata (RT) sistem secara keseluruhan dapat meningkat saat instans baru online. Dalam kasus parah, layanan mungkin hang, menyebabkan banyak permintaan timeout atau gagal.

Gambar berikut membandingkan durasi panggilan permintaan untuk sebuah instans yang memerlukan pemuatan sumber daya, sebelum dan sesudah sumber daya dimuat. Jika banyak permintaan tiba di instans selama pemuatan sumber daya, semuanya mungkin diblokir:

image

Pra-ambil lalu lintas rendah mengontrol jumlah lalu lintas yang dikirim oleh aplikasi konsumen ke instans layanan baru tepat setelah instans tersebut dipublikasikan. Hal ini mencegah kapasitas penanganan permintaan terbatas dari aplikasi Java dingin meningkatkan RT sistem secara keseluruhan dan melindungi instans baru agar tidak kewalahan oleh lonjakan lalu lintas. Lalu lintas ke instans tersebut secara bertahap meningkat seiring waktu sesuai aturan yang telah ditentukan. Ketika periode ramp-up yang dikonfigurasi berakhir, proses pra-ambil selesai, dan instans menerima lalu lintas secara normal.

Catatan

Pra-ambil lalu lintas rendah menggunakan lalu lintas dari konsumen online. Oleh karena itu, aplikasi konsumen untuk layanan tersebut juga harus terhubung ke MSE Microservices Governance. Untuk informasi lebih lanjut tentang prinsip fitur ini, lihat Prinsip pra-ambil lalu lintas rendah.

Pemeriksaan kesiapan layanan

Kubernetes menyediakan mekanisme pemeriksaan kesiapan. Selama rilis layanan, setelah instans baru lulus pemeriksaan kesiapan, instans lama diambil offline. Perilaku tepatnya bergantung pada kebijakan rilis yang dikonfigurasi. Namun, Kubernetes tidak dapat menentukan kapan layanan mikro benar-benar siap. Sering kali Kubernetes menganggap aplikasi siap begitu port-nya mulai mendengarkan. Hal ini dapat menyebabkan situasi di mana instans baru ditandai sebagai siap sebelum melakukan registrasi ke registrasi layanan. Kubernetes kemudian melanjutkan rilis dan mengambil instans lama offline, sehingga menyebabkan panggilan konsumen gagal dengan kesalahan seperti service no provider/instance.

Fitur pemeriksaan kesiapan layanan menyediakan titik akhir HTTP non-intrusif melalui agen. Titik akhir ini memeriksa apakah aplikasi telah menyelesaikan registrasinya ke registrasi layanan. Jika aplikasi belum terdaftar, titik akhir mengembalikan kode status HTTP 500. Setelah aplikasi terdaftar, titik akhir mengembalikan kode status HTTP 200. Anda dapat mengonfigurasi pemeriksaan kesiapan aplikasi Anda untuk menggunakan titik akhir ini, sehingga membantu Kubernetes secara akurat menentukan kesiapan aplikasi. Hal ini memastikan bahwa konsumen selalu memiliki penyedia yang tersedia selama rilis layanan di Kubernetes dan mencegah kesalahan penyedia tidak ditemukan.

Gunakan mulai mulus

Prasyarat

Catatan

  • Mulai mulus hanya didukung untuk instans yang menggunakan registrasi layanan, seperti Nacos, untuk registrasi dan penemuan layanan. Fitur ini tidak didukung untuk instans layanan mikro yang mengandalkan mekanisme penemuan layanan Kubernetes Service.

  • Untuk aplikasi Spring Cloud, pra-ambil lalu lintas rendah hanya didukung untuk aplikasi yang menggunakan Nacos, ZooKeeper, atau Eureka sebagai registrasi layanan.

  • Fitur pra-ambil lalu lintas rendah untuk Spring Cloud didasarkan pada load balancer default framework Spring Cloud, yaitu ZoneAwareLoadBalancer, RoundRobinLoadBalancer, atau RandomLoadBalancer. Jika Anda mengubah konfigurasi load balancer aplikasi, fitur ini tidak akan berfungsi.

  • Pra-ambil lalu lintas rendah hanya berlaku jika MSE Microservices Governance diaktifkan baik untuk penyedia maupun konsumen. Misalnya, aplikasi gateway menerima lalu lintas eksternal dengan langsung mengekspos API. Oleh karena itu, fitur pra-ambil lalu lintas rendah MSE tidak berlaku untuk jenis aplikasi ini.

Prosedur

Langkah 1: Aktifkan mulai mulus

  1. Masuk ke Konsol MSE, dan pilih wilayah di bilah navigasi atas.

  2. Di panel navigasi sebelah kiri, pilih Microservices Governance > Application Governance. Pada halaman yang muncul, klik kartu sumber daya aplikasi yang ingin Anda kelola.

  3. Pada halaman detail aplikasi, klik Traffic management di panel navigasi sebelah kiri, lalu klik tab Graceful Start/Shutdown.

  4. Pada bagian Configuration, klik Modify. Kemudian, aktifkan sakelar Graceful Start dan klik OK.

Langkah 2: Konfigurasikan pemeriksaan kesiapan layanan Kubernetes

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Pada halaman Clusters, klik kluster target. Di panel navigasi sebelah kiri, pilih Workloads > Stateless. Temukan deployment aplikasi dan klik Edit di kolom Actions. Pada bagian Health Check, klik Enable di sebelah kanan Readiness Probe dan konfigurasikan parameter berikut. Setelah selesai, klik Update.

    • Path: /readiness. (Jika versi agen aplikasi Anda lebih awal dari 4.1.10, atur Path menjadi /health. Untuk melihat versi agen, masuk ke Konsol MSE, pilih Governance Center > Application Governance, klik aplikasi target, lalu klik Node Details. Versi agen ditampilkan di sebelah kanan.)

    • Port: 55199.

    • Initial Delay (s): Kami menyarankan Anda mengatur nilai ini lebih besar dari jumlah waktu startup aplikasi dan Delayed Registration Duration (s) (default: 0s) yang dikonfigurasi untuk fitur mulai mulus. Namun, fitur tetap berfungsi meskipun Anda tidak mengikuti rekomendasi ini.

    2913e49926349db041e14b002921237b

    • Untuk informasi lebih lanjut tentang parameter lainnya, lihat Create a stateless workload (Deployment). Konfigurasi berlaku setelah aplikasi direstart. Pemeriksaan kesiapan hanya lolos setelah registrasi layanan selesai.

Penting

Operasi ini segera merestart aplikasi. Jika Anda berada di lingkungan produksi, lakukan operasi ini selama jendela rilis yang dijadwalkan.

(Opsional) Langkah 3: Konfigurasikan durasi registrasi tertunda

Langkah ini opsional. Untuk informasi lebih lanjut, lihat Delayed registration. Prosedurnya sebagai berikut:

  1. Aktifkan fitur mulai mulus dan konfigurasikan pemeriksaan kesiapan layanan Kubernetes seperti yang dijelaskan pada langkah sebelumnya.

  2. Di bagian Configuration untuk mulai dan shutdown mulus, klik panah di sebelah kiri bagian mulai mulus untuk memperluas opsi. Atur Delayed Registration Duration (s), lalu klik OK.

Catatan

Pengaturan ini berlaku saat aplikasi dimulai berikutnya.

(Opsional) Langkah 4: Sesuaikan durasi pra-ambil lalu lintas rendah

Setelah Anda mengaktifkan mulai mulus, fitur ini diaktifkan secara otomatis. Periode ramp-up default adalah 120 detik. Anda dapat menyesuaikannya sesuai kebutuhan:

  1. Aktifkan fitur mulai mulus dan konfigurasikan pemeriksaan kesiapan layanan Kubernetes seperti yang dijelaskan pada langkah sebelumnya.

  2. Di bagian Configuration untuk mulai dan shutdown mulus, klik panah di sebelah kiri bagian mulai mulus untuk memperluas opsi. Klik Advanced Options, atur Low-traffic Prefetching Duration (s), lalu klik OK.

  3. Jika pemanggil layanan adalah gateway cloud-native MSE, konfigurasi pra-ambil di sini tidak berlaku. Solusinya adalah mengonfigurasi pra-ambil untuk layanan tersebut di konsol gateway cloud-native MSE. Untuk melakukannya, klik instans gateway target. Di panel navigasi sebelah kiri, pilih Routing Management > Services. Temukan layanan tersebut dan klik More > Policy Configuration di kolom Actions. Pada tab Policy Configuration, di bagian Traffic Management > Load Balancing Configuration, klik Edit. Sesuaikan pengaturan Prefetch Time. Perhatikan bahwa kurva permintaan per detik (QPS) pra-ambil default untuk gateway cloud-native adalah kurva linear. Ini sedikit berbeda dari kurva kuadrat yang disediakan oleh MSE Microservices Governance. Namun, efek aktualnya serupa.

Catatan
  • Pengaturan ini berlaku saat aplikasi dimulai berikutnya.

  • Metode pra-ambil lalu lintas rendah bekerja di sisi konsumen layanan. Metode ini menghitung bobot untuk setiap instans penyedia berdasarkan waktu startup-nya. Metode ini menggunakan algoritma penyeimbangan beban untuk mengontrol lalu lintas ke aplikasi yang baru dimulai, memungkinkan lalu lintas secara bertahap meningkat ke tingkat normal. Hal ini membantu memanaskan instans layanan baru. Hal ini juga mengharuskan konsumen layanan terhubung ke MSE Microservices Governance.

  • Saat pertama kali menggunakan fitur pra-ambil lalu lintas rendah, kami menyarankan Anda menggunakan periode ramp-up default. Jika Anda melihat efek pra-ambil tidak ideal dan terjadi kehilangan lalu lintas, Anda dapat menyesuaikan parameter ini untuk optimalisasi.

  • Untuk memastikan pra-ambil lengkap, lihat Best practices for low-traffic prefetching.

Amati mulai mulus

Setelah menyelesaikan konfigurasi, saat aplikasi Anda direstart, Anda dapat melihat waktu online dan offline instans aplikasi serta kurva QPS-nya selama periode tersebut di halaman mulai dan shutdown mulus:

  1. Masuk ke Konsol MSE, dan pilih wilayah di bilah navigasi atas.

  2. Di panel navigasi sebelah kiri, pilih Microservices Governance > Application Governance. Pada halaman yang muncul, klik kartu sumber daya aplikasi yang ingin Anda kelola.

  3. Pada halaman detail aplikasi, klik Traffic management di panel navigasi sebelah kiri, lalu klik tab Graceful Start/Shutdown.

  4. Di Start and Shutdown Overview, klik instans di daftar sebelah kiri. Di sebelah kanan, Anda dapat melihat perubahan QPS dan event terkait untuk instans tersebut selama fase startup-nya.

    image

Ikhtisar menunjukkan bahwa event registrasi layanan, pra-ambil dimulai, dan pra-ambil berakhir terjadi secara berurutan. Event Kubernetes readiness probe passed juga terjadi setelah event registrasi layanan. Kurva QPS menunjukkan peningkatan bertahap ke nilai maksimumnya selama periode ramp-up (default: 120 detik), bukan lonjakan tajam. Jika urutan event atau bentuk kurva QPS tidak sesuai harapan saat aplikasi Anda dimulai, lihat FAQ untuk informasi pemecahan masalah.

Catatan

Pada aplikasi yang ditunjukkan dalam gambar contoh, pemeriksaan kesiapan Kubernetes dikonfigurasi sebagai 55199/readiness, dan waktu siap minimum (minReadySeconds) diatur ke 120 detik, yang sesuai dengan durasi pra-ambil default.

Referensi

Configure graceful start and shutdown using YAML