Topik ini menjelaskan cara menggunakan kemampuan inti Tata Kelola Mikroservis untuk aplikasi Java.
Prasyarat
Buat kluster ACK yang dikelola.
CatatanKonfigurasi minimum yang diperlukan untuk kluster Kubernetes adalah 12 core dan memori 24 GiB.
Kluster Kubernetes harus memiliki koneksi internet untuk mengunduh demo dari GitHub.
Ekspos server API menggunakan elastic IP addresses (EIPs) agar dapat diakses dari CloudShell.
Hubungkan aplikasi mikroservis di kluster ACK ke MSE Governance Center.
Instal komponen ack-kubernetes-cronhpa-controller di kluster ACK. Untuk informasi selengkapnya, lihat Instal komponen.
Jika Anda adalah Pengguna RAM, mintalah administrator Akun Alibaba Cloud Anda untuk sementara memberikan izin <a baseurl="t2314492_v4_2_0.xdita" data-node="4751410" data-root="45393" data-tag="xref" href="t2487291.xdita#" id="b5397d18a1u34">AliyunMSEFullAccess</a> dan hapus izin tersebut setelah Anda menyelesaikan tutorial ini. Di lingkungan produksi, berikan izin sesuai kebutuhan. Untuk informasi selengkapnya tentang otorisasi administrasi layanan, lihat Otorisasi Administrasi Mikroservis.
Deploy demo
Pengenalan demo
Demo ini menggunakan instans Nacos sebagai registri dan mencakup gerbang Spring Cloud serta gerbang Zuul, yang dapat Anda aktifkan sesuai kebutuhan. Alur kerja pemanggilan aplikasi default adalah A -> B -> C. Aplikasi A dan C memiliki versi rilis canary. Anda dapat memperoleh kode aplikasi dari repositori kode.
Nama aplikasi | Versi kerangka layanan | Komponen terlibat | Demo |
Zuul | Spring Cloud Greenwich | zuul | |
SpringCloudGateway | spring-cloud-starter-gateway 4.1.2 | spring-cloud-starter-gateway | |
A | Spring Cloud 2023.0.1 Dubbo 3.3.0 | openfeign/httpclient/rocketmq/nacos/loadbalancer | |
B | Spring Cloud 2023.0.1 Dubbo 3.3.0 | httpclient/mybatis/druid/nacos | |
C | Spring Cloud 2023.0.1 Dubbo 3.3.0 | openfeign/httpclient/nacos |

Unduh paket Helm
Unduh paket Helm untuk demo. Paket Helm dan citra diperbarui secara berkala.

Metode penerapan
Gunakan CloudShell kluster ACK untuk menerapkan mse-simple-demo
Persiapkan file mse-simple-demo.
Masuk ke Konsol ACK. Pilih kluster target, lalu pada halaman Cluster Information, klik Manage Cluster With Workbench.

Unggah paket Helm.

Jalankan perintah
unzip mse-simple-demo.zipuntuk mengekstrak paket demo.Jalankan perintah
kubectl create namespace mse-demountuk membuat namespace yang sesuai dengan parameter --namespace.
Gunakan Helm untuk menerapkan mse-simple-demo
Jalankan perintah Helm berikut untuk menerapkan mse-simple-demo.
helm upgrade mse-simple-demo mse-simple-demo \
--set mse.namespace=mse-demo \
--set gateway.springcloud=true \
--install \
--namespace mse-demo \
--values mse-simple-demo/values.yamlParameter berikut dapat dimodifikasi:
namespace: Namespace Kubernetes tempat demo dipasang. Parameter ini opsional. Nilai default-nya adalah `default`.registry: Awalan alamat citra kontainer. Jika kluster Anda tidak dapat menarik citra demo, Anda dapat menyinkronkan citra tersebut ke repository citra akun Anda dan memperbarui parameter ini dengan alamat baru.images.version: Versi citra. Versi terbaru adalah 3.1.0.mse.namespace: Ruang mikroservis yang terhubung ke MSE Microservices Governance. Anda dapat menggunakan parameter ini untuk membedakan antar lingkungan. Nilai default-nya adalah mse-demo.nacos.host: Alamat registri Nacos. Demo secara otomatis menjalankan server Nacos. Jika Anda ingin mendaftarkan aplikasi demo ke alamat Nacos lain, konfigurasikan parameter ini.autoscaling: Menentukan apakah akan mengaktifkan penskalaan otomatis. Nilai default-nya adalah false. Sebelum mengaktifkan fitur ini, pastikan komponen kubernetes-cronhpa-controller telah diinstal di kluster.resources.enable: Menentukan apakah akan mengatur konfigurasi permintaan sumber daya. Nilai default-nya adalah true.
Verifikasi fitur dasar
Rilis canary end-to-end
Masuk ke Konsol MSE. Di panel navigasi sebelah kiri, pilih Microservices Governance > End-to-end Canary Release.
Buat grup jalur
Pada halaman End-to-end Canary Release:
Klik Create Lane Group and Lane. Jika grup jalur sudah ada di ruang mikroservis yang dipilih, klik + Create Lane Group.
Pada halaman Create Lane Group, konfigurasikan parameter, lalu klik OK.

Buat jalur
Di bagian bawah halaman End-to-end Canary Release:
Klik Create First Split Lane. Jika jalur sudah dibuat di ruang mikroservis yang dipilih, klik Create Lane.
Pada panel Create Lane, konfigurasikan pengaturan jalur, lalu klik OK.


Arus permintaan umum ke versi dasar
Alamat halaman web adalah alamat SLB gerbang. Untuk menemukan alamat ini, buka halaman detail kluster di Konsol ACK. Pilih Workloads > Deployments. Pada halaman Penyebaran, klik penyebaran `spring-cloud-gateway`. Pada halaman detail yang muncul, klik tab Access Method. Di bagian Service, Anda dapat menemukan alamat IP dan port di kolom External Endpoint.
Di browser, akses alamat SLB gerbang dan kirim permintaan berikut.


Rutekan permintaan canary ke versi rilis canary


Untuk informasi selengkapnya, lihat Implementasikan peluncuran kanari ujung ke ujung berdasarkan gerbang Spring Cloud Gateway atau Zuul yang dikelola sendiri.
Mulai dan matikan dengan lancar
Masuk ke Konsol MSE. Di panel navigasi sebelah kiri, pilih Microservices Governance > Application Governance. Pada halaman Application List, klik nama aplikasi yang diinginkan untuk membuka halaman ringkasannya.
Konfigurasikan mulai dan matikan dengan lancar
Pada halaman ringkasan aplikasi, di panel navigasi sebelah kiri, pilih Traffic Governance. Secara default, beberapa kemampuan mulai mulus dan shutdown mulus telah disediakan. Untuk menggunakan kemampuan lengkap, Anda dapat mengaktifkan dan mengonfigurasi pengaturan mulai mulus dan shutdown mulus di konsol.

Lihat acara dan proses

Untuk informasi lebih lanjut, lihat Mulai dan matikan dengan lancar.
Aturan pembatasan
Masuk ke Konsol MSE. Di panel navigasi sebelah kiri, pilih Microservices Governance > Application Governance. Pada halaman Application List, klik nama aplikasi yang diinginkan untuk membuka halaman ringkasannya.
Konfigurasi aturan pembatasan laju
Di panel navigasi sebelah kiri halaman ringkasan aplikasi, pilih Traffic Governance. Pada halaman Tata Kelola Trafik, pilih Flow Protection > Interface Throttling, lalu klik Add Throttling Rule.

Efek pembatasan laju
Di browser, akses alamat SLB gerbang dan kirim permintaan berikut.

Aplikasi A memiliki satu node. Ambang batas pembatasan laju untuk satu node ditetapkan menjadi 5, dan permintaan per detik (QPS) stabil di angka 5.

Untuk informasi selengkapnya, lihat Apa itu perlindungan trafik?.
Permintaan sampel
Ganti `localhost` dengan alamat SLB gerbang. Anda dapat mengirim permintaan dari pod gerbang.
# Permintaan umum
http://localhost:20000/A/a
A[10.0.0.47][config=base] -> B[10.0.0.39] -> C[10.0.0.48]
# Permintaan canary
http://localhost:20000/A/a?name=xiaoming
Agray[10.0.0.41][config=base] -> B[10.0.0.55] -> Cgray[10.0.0.30]
# Permintaan umum (Feign)
http://localhost:20000/A/aByFeign
A[10.0.0.47][config=base] -> B[10.0.0.55]
# Permintaan umum (A meminta B dan C secara berurutan)
http://localhost:20000/A/a2bc
A[10.0.0.47][config=base] -> C[10.0.0.48]
A[10.0.0.47][config=base] -> B[10.0.0.55] -> C[10.0.0.49]
# Permintaan Dubbo
http://localhost:20000/A/dubbo
A[10.0.0.44] -> B[10.0.0.39]name:A -> C[10.0.0.49] params:A
# Permintaan canary Dubbo
http://localhost:20000/A/dubbo?name=xiaoming
Agray[10.0.0.41] -> B[10.0.0.39]name:A -> Cgray[10.0.0.30] params:A
# Permintaan untuk pengujian pembatasan laju
http://localhost:20000/A/flow
A[10.0.0.17][config=base] -> B[10.0.0.39] sleepTime:9 -> C[10.0.0.48] sleepTime:8 code:200
http://localhost:20000/A/dubbo-flow
A[10.0.0.17] -> B[10.0.0.55]name:A -> C[10.0.0.48] params:A
http://localhost:20000/A/isolate
A[10.0.0.42][config=base] -> B[10.0.0.55] sleepTime:504 -> C[10.0.0.48] sleepTime:8 code:200
http://localhost:20000/A/dubbo-isolate
A[10.0.0.17] -> B[10.0.0.55]name:isolate -> C[10.0.0.49] params:isolate
http://localhost:20000/A/params/hot
A[10.0.0.17][config=base] params:hot -> B[10.0.0.55] sleepTime:5 params:hot -> C[10.0.0.49] sleepTime:6 params:hot code:200
http://localhost:20000/A/dubbo-params/hot
A[10.0.0.17] params:hot -> B[10.0.0.55]name:hot -> C[10.0.0.49] params:hot
# Permintaan database
http://localhost:20000/A/sql?command=query&id=1
A[10.0.0.44][config=base] -> B[10.0.0.39] result:{"age":1,"email":"emailUpdate%40demo.com","id":1,"name":"name1Update"}
http://localhost:20000/A/sql?command=update&name=name1Update&email=emailUpd***@demo.com&age=1&id=1
A[10.0.0.44][config=base] -> B[10.0.0.55] result:true
# Permintaan spring boot
http://localhost:20000/spring_bootInformasi tambahan
Koneksi aplikasi
Metode ini mengharuskan Anda secara eksplisit menambahkan label msePilotAutoEnable: "on" ke penyebaran setiap aplikasi yang ingin Anda hubungkan. Dalam praktiknya, Anda dapat mengaktifkan tata kelola mikroservis untuk seluruh namespace Kubernetes di MSE Operation Center guna menghubungkan aplikasi secara batch.
Untuk informasi selengkapnya, lihat Hubungkan aplikasi mikroservis ACK dan ACS ke MSE Governance Center (Java).
Mulai dan matikan dengan lancar
Jika Anda tidak mengaktifkan mulai mulus dan shutdown mulus saat penerapan, Anda dapat mengaktifkannya nanti dengan melakukan langkah-langkah berikut.
Untuk menggunakan mulai mulus dan shutdown mulus, masuk ke Konsol ACK. Di panel navigasi sebelah kiri halaman Informasi Kluster, pilih Operations Management > Add-ons, cari
cronhpadi kotak pencarian, lalu klik Install.Gunakan File YAML berikut untuk membuat tugas penjadwalan penskalaan. Bidang `Namespace` harus diatur ke namespace Kubernetes yang sama yang Anda pilih saat instalasi Helm.
apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: CronHorizontalPodAutoscaler
metadata:
labels:
controller-tools.k8s.io: "1.0"
name: cronhpa-deployment-spring-cloud-b
namespace: mse-demo # Catatan: bidang namespace harus sama dengan namespace Kubernetes yang Anda pilih saat instalasi Helm.
spec:
jobs:
- name: scale-out
schedule: 0 0/6 * * * *
targetSize: 6
- name: scale-in
schedule: 0 5/6 * * * *
targetSize: 2
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: spring-cloud-bKonfigurasi permintaan otomatis gerbang
Pengiriman permintaan otomatis diaktifkan secara default. Anda dapat masuk ke Konsol Layanan Kontainer. Di bilah navigasi, klik Workloads > Stateless. Pada halaman Tanpa Status, klik aplikasi spring-cloud-gateway. Pada halaman detail, klik Edit di pojok kanan atas dan konfigurasikan variabel lingkungan berikut untuk permintaan otomatis.
Kunci variabel lingkungan | Deskripsi | Nilai default |
enable.auto | Sakelar utama untuk trafik otomatis | true |
enable.rpc.invoke | Sakelar untuk permintaan Dubbo | true |
enable.sql | Sakelar untuk permintaan database | true |
enable.sentinel.demo.flow | Sakelar untuk permintaan terkait aturan Sentinel. Di antaranya:
| true |
enable.gray | Sakelar untuk permintaan canary berbasis tag | false |
demo.qps | Laju permintaan dalam QPS. Ini mengontrol laju permintaan untuk path /a. Laju untuk path lain relatif terhadap nilai ini. | 20 |
