Catatan: Ini akan bertentangan dengan dependensi spring-webmvc, jadi spring-webmvc perlu dikecualikan.
2. Tulis file konfigurasi yml
server.port = 8088 adalah Port akses gerbang
spring.application.name adalah Nama layanan dari layanan gateway saat ini
Aturan perutean ditentukan di bawah gateway.routes:
id adalah nama aturan perutean ini. Ada banyak aturan perutean di gateway.routes
alamat urlnya: Akses layanan gateway saat ini, Url mana yang akan diteruskan?, Pertama-tama, saya tidak dapat meneruskan semua permintaan ke gateway. Kondisi tertentu harus dipenuhi.
predikat: kapan Permintaan mencapai gateway saat ini(Jadi Permintaan ini harus membawa nomor port IP + gateway saat ini. informasi, diikuti dengan garis miring /, sehingga gateway dapat secara default menyediakan informasi ini,Informasi ini tidak perlu dipertimbangkan dalam predikat),
Jika URL setelah nomor port dimulai dengan /order-serv/**,Jadi Teruskan saja ke ip+port url diatas . dan garis miring /Semua jalur berikutnya tidak akan dihapus, kemudian diteruskan ke alamat http://localhost:8020/order-serv/order/add
(order-serv adalah nama layanan untuk mencegah layanan pemesanan memiliki alamat yang dimulai dengan /order/add, dan layanan inventaris juga memiliki alamat yang dimulai dari /order/add, jadi Permintaan yang dikirim ke gateway membawa nama layanan yang akan diteruskan.),Tetapi Tidak ada /order-serv/ dalam permintaan yang diterima oleh layanan pemesanan., hanya request yang dikirim http://localhost:8020/order/add, sehingga bisa diterima. Biarkan gateway menghapus jalur lapisan pertama, memfilter awalan melalui filter
Jika pernyataan tidak terpenuhi, kesalahan 404 akan dilaporkan.
Di sini kami telah mengkodekan alamat URL yang diteruskan dalam konfigurasi. Saat server dimigrasi, alamat IP akan berubah atau server dikerahkan dalam sebuah cluster. Proksi terbalik dan penyeimbangan beban perlu dilakukan melalui nginx, yang sangat merepotkan .
Kita dapat dengan mudah mengatasi masalah ini dengan mengintegrasikan gateway dan nacos
Integrasikan Nacos
1. Terus perkenalkan ketergantungan nacos
2. Lanjutkan menulis file konfigurasi yml
(1) Untuk mengintegrasikan nacos, cukup daftarkan layanan gateway saat ini ke nacos, dan tulis alamat layanan nacos dan kata sandi akun
(2) Ubah alamat layanan mana yang akan diteruskan dalam aturan perutean menjadi nama layanan "layanan-pesanan" (url: layanan-pesanan), dan karena Anda perlu menggunakan strategi penyeimbangan beban dari pita yang disertakan dengan nacos, jadi Tambahkan lb:// di depan, lb berarti penyeimbangan beban.
gatewayGateway akan mengganti seluruh "layanan pesanan" dengan alamat IP salah satu layanan pesanan (karena gateway akan secara teratur menarik daftar alamat IP dari berbagai layanan yang terdaftar di nacos)
Ini memecahkan masalah ketika server dimigrasi, alamat IP berubah, atau server dikerahkan dalam sebuah cluster, nginx perlu digunakan untuk proxy terbalik dan penyeimbangan beban.
Aturan perutean yang disingkat: Perjanjian lebih besar dari konfigurasi
(1) Setelah mengaktifkan fungsi identifikasi otomatis layanan nacos, tidak perlu menulis aturan penegasan.
(2) Ketika permintaan yang dikirim ke gateway dimulai dengan nama layanan yang terdaftar di nacos, permintaan tersebut akan secara otomatis diteruskan ke server layanan tersebut, dan jalur lapisan pertama akan secara otomatis disaring (kerugian: aturan perutean tidak fleksibel cukup)
Saat ini, selama Anda mengaksesnya sesuai dengan format alamat gateway/layanan mikro/antarmuka, Anda bisa mendapatkan respons yang berhasil.
pabrik penegasan
Membuat pernyataan berdasarkan URL adalah pabrik pernyataan bawaan gateway.

Pabrik pernyataan perutean khusus
Di sini diasumsikan bahwa Anda mengkustomisasi pabrik pernyataan berdasarkan parameter permintaan Kueri, menyalin konten dalam kode sumber, lalu memodifikasinya sesuai kebutuhan.
menyesuaikan
Pabrik pernyataan berdasarkan parameter permintaan Kueri,
Anda perlu mewarisi kelas AbstrakRoutePredicateFactory dan menulis ulang logika metode penerapan. Dalam metode penerapan, Anda bisa mendapatkan objek ServerHttpRequest melalui exchange.getRequest(), sehingga Anda bisa mendapatkan parameter permintaan, metode permintaan, header permintaan, dan informasi lainnya.
1. Itu harus berupa komponen pegas, yaitu kacang
2. Kelas harus ditambah
Pabrik Predikat Rute
sebagai akhir
3. Harus diwariskan
AbstrakRutePredikatPabrik
4. Anda harus mendeklarasikan kelas dalam statis dan mendeklarasikan atribut untuk menerima informasi pernyataan terkait dalam file konfigurasi.
5. Perlu digabungkan
pintasanFieldOrder
Mengikat
6. Gunakan apply untuk menilai secara logis apakah kecocokan yang berhasil benar atau kecocokan yang gagal salah.
Filter (filter terlebih dahulu lalu rutekan)
(1) Proses terlebih dahulu alamat URL yang diminta melalui filter, atau tambahkan, hapus, dan ubah beberapa informasi seperti header permintaan, cookie, dll.
(2) Kemudian rutekan ke server terkait melalui daftar layanan nacos
Peran filter: Ketika permintaan datang ke gateway, kita dapat memproses permintaan tersebut dengan logika bisnis.
Misalnya:
(1) Lewatkan filter melalui bagian depanHapus lapisan jalur pertama
(2) Anda dapat menambahkan header permintaan ke semua permintaan yang masuk ke gateway, lalu mengatur konten di dalamnya.
(3) Anda dapat mengatur cookie untuk semua permintaan yang masuk ke gateway, dll.
Untuk detail tentang semua filter bawaan, silakan kunjungi situs web resminya
https://docs.spring.io/spring-cloud-gateway/docs/saat ini/referensi/html/#pabrik-gatewayfilter
Berikut beberapa contoh kode:
Alamat pengujian dikirim ke gateway gateway
Rutekan ke alamat @GetMapping berikut melalui rute, dan kode berikut untuk menerima permintaan dan merespons
Contoh 1:
Contoh 2
Contoh 3
Alamat URL sebelumnya dikirim ke gateway, difilter, dan diawali dengan /mall-order. Saat ini, agar server dapat menerima respon, harus diatur agar semua permintaan yang dikirim bersifat carry /mall-order.Dengan cara ini, server biasanya dapat menerima permintaan yang dirutekan oleh gateway.
Contoh 4
Permintaan yang dikirim ke gateway saat ini akan dialihkan ke situs web Baidu
302 adalah kode status respons setelah pengalihan
Filter khusus

penyaring global
Perbedaan antara filter lokal dan filter global:
Parsial: Parsial untuk rute tertentu dan perlu dikonfigurasi dalam rute tersebut.
Global: untuk semua permintaan perutean, tidak perluDikonfigurasi dalam file konfigurasi, Setelah ditentukan, itu mulai digunakan
Filter global bawaan:
Jika lb disertakan dalam alamat perutean, kebijakan penyeimbangan beban akan diterapkan secara otomatis, sesuai dengan filter global pertama di atas.
Filter global ini akan dinilai dan diproses secara otomatis, tanpa pengelolaan kami.
Filter global khusus (poin penting)
Catat semua permintaan akses dan simpan dalam bentuk log. Anda dapat menggunakan filter global khusus.
Atau Anda dapat menyesuaikan filter global untuk menentukan login dan izin pengguna.
Menyesuaikan filter global sangat mudah
1. Tentukan kelas dan serahkan ke wadah springIOC untuk dikelola, yaitu menambahkan anotasi pegas. @Komponen
2.
Mewarisi antarmuka GlobalFilter, untuk menulis ulang metode filter di dalamnya, Anda hanya perlu menulis isi metode di dalamnya.
3.
Pertukaran parameterdi dalam Mengandung Masuk ke gerbang iniSemua informasi diminta, keluarkan alamat url, header, cookie, parameter jalur, dan informasi lainnya, lalu lakukan hal yang sesuai pemrosesan bisnis
4. kembalikan rantai.filter(pertukaran) Lepaskan permintaan tersebut
Minta pencatatan
Di layanan mikro gateway, tambahkan perintah ini di sini untuk mengaktifkan pencatatan dan mencatat semua permintaan yang melewati gateway, namun hanya akan dikeluarkan ke konsol.

konfigurasi lintas domain gateway
Lintas-domain: Jika permintaan http tidak pada IP yang sama + port yang sama, maka disebut lintas-domain.
(Hanya IP yang sama + port yang sama yang disebut domain yang sama, dan keduanya puas berada di domain yang sama)
1. Konfigurasi melalui yml , dikonfigurasi pada tingkat gateway berikutnya

Konten konfigurasi dapat dimodifikasi sendiri lintas domain
2. Diatur melalui kelas konfigurasi
sentinel dikombinasikan dengan gateway gateway
Dikombinasikan dengan sentinel, lakukan penurunan versi kontrol aliran pada permintaan yang dikirim ke gateway.
penjaga dibagi menjadi dua bagian
Prasyarat: unduh klien sentinel dari server jarak jauh, instal dan jalankan
Layanan gateway hanya memerlukan:
File konfigurasi layanan gateway ditambah port IP +, kata sandi akun klien sentinel
Dengan cara ini, penurunan versi kontrol aliran sentinel terintegrasi.
sentinel memiliki aturan khusus untuk layanan gateway, antarmukanya berbeda dari antarmuka penurunan versi kontrol aliran untuk metode (pintu masuk layanan) di pengontrol.
Anda dapat membatasi aliran arus berdasarkan aturan ini di pabrik pernyataan.
Alurnya dapat dibatasi berdasarkan IP tertentu, nama domain jarak jauh, header permintaan, parameter di URL, dan nilai cookie.
Sesuaikan konten respons sentinel yang dikombinasikan dengan gateway
adaSetelah lapisan gateway diturunkan atau dihancurkan oleh kontrol aliran sentinel, lapisan tersebut akan merespons dengan konten berikut kepada peminta.,

Jika konten tersebut tidak sesuai dengan keinginan kita, kita perlu menyesuaikan cara merespons pengecualian.Ada dua cara
Metode 1: (sederhana)
Dalam konfigurasi yml, tulis konten di atas secara berlapis,
musim semi
.
awan
.
penjaga
.
scg
.
mundur
.
tanggapan
‐
tubuh
=
'{"kode":403,"mes":"
Batas saat ini
"}'
Konten setelah isi respons adalah konten respons khusus kami (dalam format json)
, isi yang ditulis adalah isi tanggapannya
Cara 2:

Tetapkan kode status respons, jenis respons (dalam format json), dan konten respons ("Diturunkan!")
Ketersediaan gerbang tinggi
