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 bergantung pada registri. Tidak ada kehilangan lalu lintas. |
Skenario |
| 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
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.
Lihat status panggilan dari Consumer ke Provider.
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` doneLihat respons dari panggilan tersebut.

Respons di atas menunjukkan bahwa Consumer secara acak mengakses dua instance Provider dengan alamat IP 172.20.0.221 dan 172.20.0.223.
PentingJangan tutup jendela respons.
Kecilkan satu instance dari Provider dan mulai ulang instance tersebut. Untuk informasi lebih lanjut, lihat Manajemen siklus hidup aplikasi kluster Kubernetes.
Lihat respons panggilan lagi untuk memeriksa apakah shutdown yang mulus sedang berlangsung.

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.