Kali ini, kami berbagi konten tentang pendaftaran dan penemuan layanan SpringCloud, yang akan dijelaskan dengan membangun pusat layanan, pendaftaran layanan, dan penemuan layanan masing -masing. Sekarang banyak startup di Beijing mulai bergantung pada Springcloud. Mungkin karena dokumen dan komponen yang kaya. Bagaimanapun, ini adalah arsitektur layanan microser yang relatif lengkap saat ini. Saya berharap berbagi ini dapat membawa bantuan yang baik untuk semua orang;
Pusat Layanan Eureka
Sejauh yang saya tahu dan menggunakan banyak pusat pendaftaran termasuk Zookeeper dan Eureka. Artikel saya sebelumnya berbagi Dubbo+ZooKeeper untuk membangun layanan, jadi kali ini saya menggunakan Eureka. Kerangka kerja Springcloud juga merekomendasikannya sebagai pusat pendaftaran. Tentu saja, dapat diintegrasikan dengan pusat pendaftaran layanan lainnya. Bagaimanapun, SpringCloud mengandalkan Springboot untuk membangun proyek, sehingga sangat cepat untuk mengintegrasikan komponen lainnya. Pertama, buat proyek pusat pendaftaran Eureka_server, dan perkenalkan dependensi melalui yang berikut:
<dependency> <GroupId> org.springframework.cloud </groupid> <ArTifactId> Spring-cloud-starter-eureka-server </t Artifactid> </dependency>
Kemudian tambahkan item konfigurasi ke file application.yml:
Server: Port: 2001Spring: Aplikasi: Nama: Eureka-ServiceureKeka: Klien: Register-with-eureka: false #forbid diri Anda untuk mendaftar sebagai layanan fetch-registry: false #mask Informasi Registrasi Instal
Setelah konfigurasi selesai, Anda harus memulai kelas dan menambahkan anotasi @EnableEureKaserver. Pengaturan pada dasarnya selesai dan dijalankan. Kunjungi http: // localhost: 2001/ untuk mendapatkan antarmuka berikut:
Layanan Pendaftaran Penyedia
Dengan Pusat Registrasi Layanan, kami juga perlu menyediakan beberapa layanan dan mendaftarkan Layanan ini dengan Pusat Layanan. Untuk memfasilitasi ini, pertama -tama kami membuat proyek Modul Antarmuka Eureka_API yang digunakan oleh penyedia layanan dan konsumen, dan membuat antarmuka berikut dan meminta Kelas Entitas Parameter Pengembalian:
antarmuka publik UserInterface {@PostMapping ("/Users") MORP <List <mouser>> getUsers (morq rq); @GetMapping ("/msg") string getMsg ();}Entitas Mouser:
mouser kelas publik {private long id; nama pengguna string pribadi; Private String userpwd; publik long getId () {return id; } public void setId (Long ID) {this.id = id; } string publik getUserName () {return username; } public void setusername (string username) {this.username = username; } string publik getUserPwd () {return userpwd; } public void setUserPwd (String userpwd) {this.userpwd = userpwd; }}Kemudian buat modul eureka_provider di sisi penyedia layanan kami, dan juga memperkenalkan dependensi eureka, tetapi ada sedikit perbedaan antara itu dan sisi server:
<dependency> <GroupId> org.springframework.cloud </groupid> <ArTifactId> Spring-cloud-starter-eureka </stifactid> </dependency>
Kemudian buat layanan UserController untuk disediakan oleh penyedia layanan, dan mengimplementasikan antarmuka UserInterface dalam modul Eureka_API kami. Kodenya adalah sebagai berikut:
@RestControllerPublic kelas UserController mengimplementasikan UserInterface {@Autowired Private HTTPServletRequest Request; @Override Public MORP <List <Mouser>> getUsers (morq rq) {morp <list <mouser>> rp = morp baru <> (); Daftar <Mouser> Daftar = ArrayList baru <> (); untuk (int i = 0; i <5; i ++) {mouser mouser = mouser baru (); mouser.setid (i); mouser.setusername ("shenniu" + i); list.add (mouser); } rp.sett (daftar); rp.setStatus (list.size ()> = 1? 1: 0); rp.setMessage (list.size ()> = 1? "": "belum ada data"); mengembalikan RP; } @Override Public String getMSG () {return "Berikut adalah penyedia, port:"+ request.getServerport (); }}Perlu dicatat di sini bahwa tidak ada postmapping atau getmapping yang ditambahkan ke dua antarmuka layanan pengontrol, karena ini dinyatakan oleh antarmuka yang diimplementasikan; Setelah mendefinisikan pengguna dan layanan MSG, kami juga harus dapat menyuntikkannya ke Pusat Registrasi Layanan, sehingga konfigurasi Application.yml berikut diperlukan: diperlukan:
Spring: Aplikasi: Nama: eureka-provider #service nama eureka: klien: service-url: defaultzone: http: // localhost: 2001/eureka/#service center alamat contoh: prefor-iP-address: true instance-id: $ {spring.application.name}: $ {server.port {server true {spring.application.name}: $ {server.port {server {server {spring.name {server.port.Kami juga perlu menambahkan tag @EnableeReKaclient berikut ke kelas startup, yang berarti memulai klien Eureka, karena penyedia layanan milik klien dibandingkan dengan pusat layanan; Saat menjalankan proyek Eureka_Provider, kita dapat melihat informasi berikut di pusat pendaftaran:
Untuk memastikan bahwa antarmuka penyedia layanan baik-baik saja, kami dapat secara langsung mengklik Eureka-Provider: 2004, dan kemudian meningkatkan jalur ke antarmuka yang akan digunakan. Berikut ini: http://192.168.153.148:2004/msg, dan kita bisa mendapatkan informasi berikut yang dikembalikan oleh antarmuka akses normal:
Layanan Penemuan Konsumen
Dengan layanan antarmuka, kami juga perlu mengkonsumsi layanan, jadi kami membuat proyek modul Eureka_consumer, karena metode fegin pseudo-klien digunakan untuk mengakses penyedia layanan kami, dan kami juga perlu memperkenalkan ketergantungan Eureka:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId></dependency>
Kemudian tentukan Layanan UsersEver di lapisan layanan dan mengimplementasikan antarmuka di modul antarmuka publik Eureka_API, kode ini adalah sebagai berikut:
@FeignClient (value = "eureka-provider") Antarmuka Publik UserService Memperluas UserInterface {}Melalui Fignclient, tentukan nama aplikasi server yang dipanggil Eureka-Provider. Nama ini sesuai dengan Direktori Aplikasi yang terdaftar di Pusat Layanan. Buat output respons UserController di lapisan pengontrol dan berikan dua antarmuka yang ditampilkan, kode seperti:
@RestControllerPublic kelas UserController {@Autowired Private UserService UserserService; @GetMapping ("/Users") Public MORP <Daftar <D mouser>> getUsers (morq rq) {return userservice.getUsers (rq); } @GetMapping ("/msg") public string getMsg () {return userservice.getMSg (); }}Demikian pula, sisi konsumen juga perlu mengonfigurasi beberapa informasi di Application.yml:
Spring: Aplikasi: Nama: Eureka-Consumereureka: Klien: Layanan-URL: Defaultzone: http: // localhost: 2001/eureka/#Register Alamat pusat Contoh: preferensi-IP-address: True Instance-ID: $ {spring.application.name}: $ {server.port} server: 2005Konfigurasinya mirip dengan penyedia. Akhirnya, Anda perlu menyatakan anotasi berikut di kelas startup:
@SpringbootApplication@enableDiscoveryclient // klien konsumen@enablefeignclients // fign klien public class eureKaconsumerApplication {public static void main (string [] args) {springapplication.run (eureKaconsumerApplication.class, args); }}Setelah memulai proyek Eureka_consumer, kita dapat melihat informasi yang telah didaftarkan di pusat pendaftaran:
Kemudian, dengan mengakses antarmuka konsumen Eureka_consumer, uji data antarmuka penyedia layanan Eureka_Provider untuk melihat apakah dapat merespons secara normal. Alamat antarmuka adalah http: // 192.168.153.148:2005/msg:
Hasil penyedia diperoleh dengan mengakses konsumen, yang merupakan proses pengujian dasar untuk pendaftaran dan penemuan layanan; Adapun bagaimana konsumen meminta antarmuka penyedia, kami dapat menyelesaikannya melalui diagram manual berikut:
Pusat Layanan Eureka sangat tersedia
Dilihat dari gambar manual di atas, pusat layanan memainkan peran yang sangat penting. Biasanya, pusat layanan semacam ini tidak hanya membangun satu, jadi perlu untuk membangun satu set pusat layanan yang sangat tersedia; Bahkan, sangat sederhana bahwa konfigurasi penyedia dan konsumen tidak perlu dilakukan. Kami hanya perlu mengonfigurasinya di Application.yml dari proyek Eureka-Server pada node pertama dan memulai beberapa layanan dengan port yang berbeda (server yang sama memiliki banyak port, dan port server yang berbeda mungkin sama):
Server: Port: 2001spring: Aplikasi: Nama: Eureka-ServiceureKeka: Klien: Register-with-eureka: true # Saat mengkonfigurasi ketersediaan tinggi, Anda perlu membuka dan mendaftar diri Anda sendiri Fetch-Registry: True Service-URL: Defaultzone: http: // localhost: 2002/eureka/#Register di Eurka on 2002 http: // localhost: 2001/eureka/instance: preferensi-IP-address: true instance-id: $ {spring.application.name}: $ {server.port} server: pengusiran-interval-timer-in-ms: 2000 #exclude gagal layanan layanan Gagal Layanan Gagal PenyesalanPoin -poin berikut harus diperhatikan dalam konfigurasi yang sangat tersedia:
Di sini saya membuat dua alamat registri: http: // localhost: 2001/dan http: // localhost: 2002/; Karena alamat registri yang dikonfigurasi oleh penyedia dan konsumen keduanya adalah Port 2001, untuk memverifikasi ketersediaan tinggi, kita perlu mengakses Pusat Pendaftaran Port 2002, efeknya adalah sebagai berikut:
Anda dapat melihat bahwa port 2002 memiliki informasi pendaftaran yang sama dengan port 2001. Ketika saya menutup aplikasi port 2001, saya masih dapat menemukan informasi penyedia dan konsumen pada tahun 2002. Untuk konfigurasi yang lebih rinci, silakan merujuk ke deskripsi situs web resmi.
Alamat git: https://github.com/shenniubuxing3
Paket Rilis Nuget: https://www.nuget.org/profiles/shenniubuxing3
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.