Akaun Awan Alibaba: Tutorial penyebaran projek Spring Cloud berdasarkan seni bina perkhidmatan mikro asli Alibaba Cloud
Terdapat banyak tutorial mengenai penyebaran perkhidmatan mikro di pasaran. Sebaik sahaja anda muncul, anda akan diminta untuk membina Nginx, Nacos, Sentinel, Zipkin... Setelah satu set pukulan gabungan selesai, memori pelayan meletup, dan pelbagai fail konfigurasi dapat membunuh orang.
Pada era asli awan, terlalu tidak cekap untuk bermain seperti ini. Alibaba Cloud telah membuat semua pangkalan perkhidmatan mikro (pusat pendaftaran, pusat konfigurasi, pintu masuk, had semasa dan penurunan)
Perkhidmatan hosting asli awan
。
Tutorial hari ini tidak membincangkan teori seni bina yang rumit atau omong kosong. Kami secara langsung menggunakan standard
Projek perkhidmatan mikro Spring Cloud
Sebagai contoh, bawa anda menggunakan kaedah pertempuran sebenar yang paling berasas,
Berdasarkan seni bina asli Alibaba Cloud (MSE ACK/SAE), penyebaran dan pelaksanaan perkhidmatan mikro dari awal
。
Reka bentuk seni bina teras
Sebelum memulakan, mari kita lihat topologi penyebaran perkhidmatan mikro asli awan yang ingin kita capai:
[Permintaan pelanggan]
│
▼
[Gerbang Asli Awan Alibaba (MSE)] ─── (Perkhidmatan Penemuan Automatik) ──> [Pusat Pendaftaran Perkhidmatan Mikro (MSE Nacos)]
│ │
├────> 【Perkhidmatan Mikro A (Aplikasi Ringan/SAE)】 <──────────────────────────
│ │
└ ───> 【Perkhidmatan Mikro B (Aplikasi Ringan/SAE)】 <───────────────────────────
Kaedah tradisional adalah memasang Nacos dan Gateway di ECS, sementara kaedah awan asli adalah menggunakan Alibaba Cloud secara langsung
miliknya
MSE (enjin perkhidmatan mikro)
Dan
SAE (enjin aplikasi Serverless)
。 Dengan cara ini, anda tidak perlu mengekalkan lapisan bawah pelayan, tetapi juga dapat mencapai fleksibiliti tahap kedua.
Langkah pertama: transformasi kod perkhidmatan mikro (disesuaikan dengan awan asli)
Untuk memindahkan projek Spring Cloud tempatan ke awan, anda mesti terlebih dahulu mengubah fail konfigurasi dan membiarkannya berhubung dengan Nacos hosting Alibaba Cloud.
1. Memperkenalkan kebergantungan
Pastikan anda
Pom. xml
Ketergantungan Spring Cloud Alibaba standard diperkenalkan:
XML
<Dependency>
<GroupId>. alibaba.cloud</groupId>
<ArtifactId> spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</Dependency>
<Dependency>
<GroupId>. alibaba.cloud</groupId>
<ArtifactId> spring-cloud-starter-alibaba-nacos-config</artifactId>
</Dependency>
2. Mengubah suai fail konfigurasi
Secara tempatan, kita biasanya menulis alamat Nacos hingga mati
Localhost: 8848
。 Tetapi dalam penyebaran awan asli, kami
Jangan tulis jalan IP dalam kod
。 Secara langsung menggunakan pemboleh ubah persekitaran untuk suntikan dinamik:
YAML
# Bootstrap. yml atau application.yml
Musim bunga:
Aplikasi:
Name: order-service # nama perkhidmatan anda
Awan:
Nacos:
Penemuan:
Server-addr: ${NACOS_SERVER_ADDR:localhost:8848} # Keutamaan untuk membaca pemboleh ubah persekitaran
Namesspace: ${NACOS_NAMESPACE: awam}
Config:
Server-addr: ${NACOS_SERVER_ADDR:localhost:8848}
Fail-extension: yaml
💡Mengapa menulis seperti ini? Dengan menulis $ {nama pemboleh ubah: nilai lalai}, jika pemboleh ubah persekitaran tidak dihantar semasa pembangunan tempatan, ia masih akan melalui lokasi; dan di awan, platform awan secara automatik akan membantu kita menyuntik alamat kluster awan Alibaba yang sebenar untuk mencapai kod "satu set kompilasi, Jalankan ke mana sahaja".
Langkah 2: Buka dan konfigurasikan MSE Nacos di Alibaba Cloud (1 minit)
Sekarang kita pergi ke Alibaba Cloud untuk mendapatkan "otak" pusat pendaftaran dan pusat konfigurasi perkhidmatan mikro.
Log masuk ke konsol Cloud Alibaba, cari dan masukkan "MSE Enjin Perkhidmatan Mikro".
Klik "Pengurusan Contoh" $ \ rightharrow $ "Buat Contoh" dan pilih "Nacos".
Pemilihan versi: pilih versi stabil terkini (seperti Nacos 2.x). Spesifikasi kluster dipilih mengikut jumlah perniagaan, ujian peribadi atau projek kecil dapat memilih jenis ujian pembangunan (nod tunggal), dan persekitaran pengeluaran mesti memilih jenis profesional (3 nod sangat tersedia).
Setelah penciptaan selesai, masukkan halaman perincian contoh. Anda akan melihat dua alamat rangkaian teras: alamat intranet (serupa dengan mse-xxxx-nacos-ctl.tbls.com:8848) alamat rangkaian awam (jika itu adalah penyahpepijatan rangkaian awam yang perlu diaktifkan, persekitaran pengeluaran hanya disyorkan untuk keselamatan)
Catat alamat intranet ini, ini adalah pemboleh ubah yang akan kami berikan kepada perkhidmatan mikro pada langkah seterusnya.
Langkah 3: Gunakan SAE untuk menggunakan komponen perkhidmatan mikro (4 minit)
Terdapat banyak komponen perkhidmatan mikro. Sekiranya anda menggunakan K8s(ACK) tradisional, anda perlu menulis banyak fail YAML, dan anda juga perlu memahami konsep seperti Pod dan Deployment.
Lebih mudah disyorkan di sini
SAE (enjin aplikasi Serverless)
, Ini menghilangkan rasa sakit anda untuk mengekalkan kluster K8s, muat naik pakej Jar atau gambar cermin secara langsung untuk dijalankan.
1. Projek pembungkusan
Laksanakan perintah Maven di direktori root projek tempatan untuk mengemas perkhidmatan mikro ke dalam pakej Jar standard:
Bash
Mvn clean package -DskipTests
Dapatkan pakej
Order-service.jar
。
2. Penciptaan aplikasi dalam SAE
Masukkan konsol "Serverless Application Engine SAE" Alibaba Cloud.
Klik "Senarai Aplikasi" $ \ rightharrow $ "Buat Aplikasi".
Kaedah penyebaran aplikasi: pilih "Penyebaran pakej JAR" (jika anda biasa dengan Docker, anda juga boleh memilih penyebaran cermin).
Persekitaran runtime: Pilih versi JDK yang sesuai (seperti Java 8 atau Java 11/17).
Muat naik order-service.jar yang baru anda bungkus.
3. Suntikan pemboleh ubah persekitaran (langkah teras)
Di halaman penyebaran
"Tetapan Lanjutan"
Di dalam, cari
"Pemboleh ubah persekitaran"
Pilihan. Ingat ruang yang kami tinggalkan dalam kod langkah pertama
Bit? Buat di sini:
Kunci
Nilai (Nilai)
NACOS_SERVER_ADDR
Isi alamat intranet MSE Nacos yang disalin pada langkah kedua
NACOS_NAMESPACE
Sekiranya anda telah membina ruang nama baru di Nacos, isikan ID, jika tidak, isikan awam
4. Mulakan aplikasi
Klik Sahkan untuk membuat dan menggunakan. SAE secara automatik akan menjadualkan sumber pengkomputeran untuk anda di latar belakang, menarik bekas dan menjalankan pakej Jar. Tunggu 1 ~ Dalam 2 minit, melihat status menjadi "sedang berjalan", ini menunjukkan bahawa perkhidmatan telah berjaya berjalan di awan.
Anda boleh kembali dan log masuk
Konsol MSE Nacos
, Segarkan semula dalam senarai "Pengurusan Perkhidmatan", anda dapat melihat
Order-service
Telah berjaya mendaftar!
Langkah 4: Konfigurasikan gerbang awan asli untuk mencapai akses luaran (2 minit)
Perkhidmatan mikro berjalan di intranet, tetapi bagaimana pengguna rangkaian luaran dapat mengaksesnya? Kami memerlukan pintu masuk bersatu, pintu masuk mikroservis. Alibaba Cloud MSE menyediakan "Cloud Native Gateway" sendiri, yang menggantikan Spring Cloud Gateway tradisional dengan sempurna.
Masukkan senarai contoh konsol MSE $ \ rightarrow $ gateway asli awan $ \ rightarrow $, dan klik Buat.
Menghubungkan contoh MSE Nacos yang baru anda buat.
Setelah gateway berjaya dibuat, masukkan halaman butiran gateway dan klik "Sumber Perkhidmatan" $ \ rightharrow $ "Tambah Sumber Perkhidmatan" di sebelah kiri. Pilih "MSE Nacos" untuk jenis sumber, dan kemudian tandakan contoh Nacos anda.
Klik "Konfigurasi Laluan" $ \ rightharrow $ "Buat Laluan" di sebelah kiri: Nama Laluan: seperti route. Laluan yang sepadan: sebagai contoh, input/order/. Perkhidmatan sasaran: Pilih perkhidmatan rasmi yang anda daftarkan di Nacos secara langsung di menu lungsur turun.
Klik Simpan dan terbitkan.
Pada masa ini, akses ke IP rangkaian awam yang disediakan oleh pintu masuk awan asli (seperti https:// Gateway IP/order/create)
Gerbang secara automatik akan melihat nod perkhidmatan mikro di Nacos dan meneruskan permintaan dengan sempurna.
Panduan praktikal untuk mengelakkan lubang dan penalaan lanjutan
Skrin putih/tidak dapat mendaftar? Periksa kumpulan keselamatan rangkaian terlebih dahulu! Aplikasi MSE Nacos dan SAE mesti berada di bawah VPC (Virtual Private Cloud) dan suis yang sama sebelum mereka dapat berkomunikasi melalui intranet. Sekiranya anda mendapati bahawa perkhidmatan mikro di SAE melaporkan kesalahan "Sambungkan ke Nacos Taces", segera periksa sama ada atribut VPC kedua-dua produk itu konsisten.
Masalah perkhidmatan mikro di luar talian yang elegan Perkhidmatan mikro paling takut menyebabkan pengguna yang berkunjung melaporkan kesilapan ketika versi baru dikeluarkan. Alibaba Cloud SAE dilengkapi dengan fungsi luar talian yang elegan (luar talian tanpa kerugian). Asal
Pengurusan: Sebelum perkhidmatan mikro dimusnahkan, SAE akan mengambil inisiatif untuk menghantar isyarat log keluar ke MSE Nacos, sehingga pintu masuk tidak lagi memindahkan lalu lintas baru, dan menutup bekas setelah permintaan lama diproses. Cara menggunakannya: Dalam tetapan lanjutan aplikasi SAE, hidupkan suis "perkhidmatan mikro tanpa kerugian di luar talian" tanpa mengubah kod sama sekali.
Ralat limpahan memori (OOM) Banyak pemula mengelirukan memori JVM dengan memori sistem. Sekiranya anda membeli contoh spesifikasi 2G 1 teras di SAE, jangan tulis-Xmx2g dalam parameter JVM, kerana sistem itu sendiri memerlukan memori untuk berjalan. Peraturan emas: Memori timbunan maksimum JVM (-Xmx) harus ditetapkan pada 60% spesifikasi contoh ~ Sekitar 70%. Sebagai contoh, untuk spesifikasi 2G, parameter JVM disyorkan untuk dikonfigurasi sebagai-Xmx1300m.
Tahniah! Pada ketika ini, satu set sistem perkhidmatan mikro awan asli yang sangat tersedia, automatik dan fleksibel telah berjalan sepenuhnya. Mengucapkan selamat tinggal kepada operasi dan penyelenggaraan middleware yang rumit, anda boleh menumpukan seluruh tenaga anda untuk menulis kod perniagaan.
