Berbagi teknologi

Catatan Studi Grain Mall-22-Komponen Terdistribusi-SpringCloud-OpenFeign Tes Panggilan Jarak Jauh

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Kita telah mempelajari tentang pusat registrasi di bagian sebelumnya. Kita mengetahui bahwa sebelum server A memanggil server B, ia akan memperoleh IP layanan B dari pusat registrasi, dan kemudian server A membuat permintaan ke layanan B.

Jadi bagaimana server A membuat permintaan ke layanan B?

Inilah pertanyaan utama yang ingin dijawab pada bagian ini.

Dalam proyek ini, komponen OpenFeign digunakan untuk menyelesaikan panggilan antar layanan. OpenFeign adalah enkapsulasi permintaan HTTP.

1. Pengantar OpenFeign

OpenFeign adalah klien HTTP deklaratif yang bertujuan untuk mempermudah panggilan jarak jauh.

Feign menyediakan templat untuk permintaan HTTP. Dengan menulis antarmuka sederhana dan memasukkan anotasi, Anda dapat menentukan parameter, format, alamat, dan informasi lain dari permintaan HTTP.

Feign mengintegrasikan Ribbon (penyeimbangan beban) dan Hystrix (pemutus layanan), sehingga kita tidak perlu lagi menggunakan kedua komponen ini secara eksplisit.

SpringCloudFeign memperluas dukungan untuk anotasi SpringMVC berdasarkan NetflixFeign. Dalam implementasinya, kita hanya perlu membuat antarmuka dan mengonfigurasinya dengan anotasi untuk menyelesaikan pengikatan antarmuka ke penyedia layanan. Menyederhanakan pengembangan klien panggilan layanan yang dienkapsulasi sendiri SpringCloudRibbon.

2. Langkah-langkah menggunakan OpenFeign

1. Deskripsi adegan

Kami menggunakan masalah berbasis skenario untuk mempelajari penggunaan OpenFeign, dengan asumsi会员服务Memanggil优惠券服务Antarmuka yang mengembalikan informasi kupon anggota yang dapat digunakan.

Antarmuka kupon ini adalah sebagai berikut. Ini adalah antarmuka untuk pengujian dan tidak memiliki logika bisnis nyata.
Masukkan deskripsi gambar di sini

	@RequestMapping("member/list")
    public R list(){
        CouponEntity couponEntity = new CouponEntity();
        couponEntity.setCouponName("慢100减80");

        return R.ok().put("page", Arrays.asList(couponEntity));
    }