全部产品
Search
文档中心

Enterprise Distributed Application Service:Matikan aplikasi Spring Cloud dengan mulus

更新时间:Jul 02, 2025

Shutdown yang mulus tidak terdeteksi oleh konsumen aplikasi online Anda, sehingga mereka dapat terus menggunakan aplikasi tanpa gangguan selama restart atau shutdown. Secara default, Enterprise Distributed Application Service (EDAS) mendukung shutdown yang mulus untuk aplikasi Spring Cloud tanpa memerlukan konfigurasi tambahan.

Informasi latar belakang

Shutdown yang mulus memastikan bahwa permintaan layanan dari konsumen diproses sesuai harapan ketika aplikasi dihentikan. Dalam praktiknya, sangat jarang aplikasi diperbarui tanpa adanya permintaan layanan.

Solusi tradisional melibatkan langkah-langkah manual seperti menghapus lalu lintas, menghentikan aplikasi, memperbarui aplikasi, dan memulai ulang. Meskipun solusi ini memastikan kontinuitas bisnis klien, prosesnya kurang efisien.

Sebagai alternatif, mekanisme otomatis pada tingkat container atau framework dapat digunakan untuk menghapus lalu lintas dan memproses semua permintaan yang diterima. Ini membuat pembaruan tidak terdeteksi oleh bisnis dan meningkatkan efisiensi operasional. Shutdown yang mulus adalah salah satu solusi inovatif tersebut.

Manfaat shutdown yang mulus EDAS

Jika menggunakan solusi shutdown yang mulus dari Spring Cloud open source, Anda harus mengintegrasikan shutdown hook, Spring Boot Actuator, dan Ribbon. Solusi ini memerlukan upaya pengembangan tambahan serta dapat menyebabkan kehilangan lalu lintas sementara ke registri.

EDAS mengintegrasikan shutdown yang mulus ke dalam proses rilis, sehingga secara otomatis menerapkan shutdown yang mulus saat Anda menghentikan, menerapkan, rollback, mengecilkan skala, atau mereset aplikasi. Berikut adalah keuntungan shutdown yang mulus EDAS dibandingkan dengan Spring Cloud open source.

Kategori

Spring Cloud Open Source

EDAS

Versi

Memerlukan Spring Boot Actuator dan versi kompatibel dengan Spring Cloud.

Mendukung Spring Cloud Dalston atau yang lebih baru tanpa operasi tambahan.

Registri Layanan dan Kehilangan Lalu Lintas

Kehilangan lalu lintas bergantung pada registri:

  • Tidak ada kehilangan lalu lintas jika menggunakan ZooKeeper.

  • Kehilangan lalu lintas selama tiga detik jika menggunakan Eureka.

  • Kehilangan lalu lintas hingga 10 detik jika menggunakan Nacos karena cache klien.

Tidak bergantung pada registri. Tidak ada kehilangan lalu lintas.

Skenario

  • Untuk kluster Elastic Compute Service (ECS), Anda harus memeriksa detail perubahan aplikasi.

  • Untuk kluster Kubernetes, Anda harus memanggil prestop dengan hanya satu tindakan yang dapat dikonfigurasi.

Anda dapat mematikan aplikasi di kluster ECS dan Kubernetes melalui konsol EDAS tanpa memengaruhi operasi atau konfigurasi aplikasi.

Cache Klien

Memerlukan konfigurasi rentang waktu yang tepat untuk Ribbon agar memperbarui cache klien. Rentang waktu yang terlalu lama menyebabkan kehilangan lalu lintas, sementara rentang waktu yang terlalu pendek mengganggu performa layanan.

EDAS menyediakan mekanisme yang ditingkatkan untuk Ribbon agar memperbarui cache klien secara otomatis berdasarkan metode respons reaktif, menghilangkan kebutuhan untuk konfigurasi manual.

Periksa apakah shutdown yang mulus sedang berlangsung

Anda dapat memeriksa apakah shutdown yang mulus sedang berlangsung untuk aplikasi Anda sesuai dengan kebutuhan bisnis. EDAS menyediakan demo aplikasi Provider dan Consumer yang dapat digunakan di kluster Container Service for Kubernetes (ACK).

Prosedur

  1. Unduh demo aplikasi Provider dan Consumer.

  2. Terapkan Provider dan Consumer di kluster ACK.

    Provider memiliki dua instance, dan Consumer memiliki satu instance. Untuk informasi lebih lanjut tentang cara menerapkan demo aplikasi, lihat Ikhtisar.

  3. Lihat status panggilan dari Consumer ke Provider.

    1. Masuk ke pod tempat Consumer diterapkan dan jalankan perintah berikut untuk terus-menerus mengakses layanan Provider:

      #!/usr/bin/env bash
      while true
      do
          echo `curl -s -XGET http://localhost:18091/user/rest`
      done
    2. Lihat respons dari panggilan tersebut.

      Image - Successful call responses

      Respons di atas menunjukkan bahwa Consumer secara acak mengakses dua instance Provider dengan alamat IP 172.20.0.221 dan 172.20.0.223.

      Penting

      Jangan tutup jendela respons.

  4. Kecilkan satu instance dari Provider dan mulai ulang instance tersebut. Untuk informasi lebih lanjut, lihat Manajemen siklus hidup aplikasi kluster Kubernetes.

  5. Lihat respons panggilan lagi untuk memeriksa apakah shutdown yang mulus sedang berlangsung.

    Image - Call responses - Graceful shutdown

    Periksa status panggilan Consumer untuk memastikan shutdown yang mulus sedang berlangsung. Lihat log Consumer. Jika tidak ada pengecualian yang terjadi, ketidaktersediaan instance tidak terdeteksi oleh Consumer.

    Respons di atas menunjukkan bahwa Consumer hanya mengakses instance Provider yang tersisa dengan alamat IP 172.20.0.221. Selama proses akses, tidak ada pengecualian panggilan yang terjadi, dan Consumer tidak terpengaruh.