menjelaskan:
Pita adalah peran dalam Spring-Cloud sebagai konsumen layanan, yang melaluinya klien dapat mengkonsumsi layanan penyedia layanan.
Misalnya, dalam contoh ini, penyedia layanan mendaftar di pusat pendaftaran. Penyedia layanan menyediakan antarmuka layanan, mengembalikan string Hello. Kami menyebut antarmuka ini melalui pita, dan kemudian mendapatkan layanan penyedia layanan tanpa mengekspos alamat penyedia layanan nyata.
Premis:
Ikuti tutorial sebelumnya untuk membangun pusat pendaftaran dan penyedia layanan. Anda dapat menggunakan pusat pendaftaran berbatasan di sini atau Anda tidak dapat menggunakannya. Ini untuk sementara ditetapkan untuk menjadi pusat pendaftaran yang dibuang yang diatur sebelum digunakan, dan penyedia layanan hanya dapat menyediakannya.
Persiapan:
1. Mulai pusat pendaftaran
Menurut tutorial sebelumnya, gunakan Peer1 dan Peer2 untuk memulai pusat pendaftaran dua pecahan. Jika itu adalah satu node, Anda dapat langsung memulai proyek.
Setelah startup, Anda dapat memeriksa localhost: 1111 atau localhost: 1112, seperti yang ditunjukkan pada gambar
2. Mulai penyedia layanan
Untuk melihat situasi penyeimbangan beban, dua penyedia layanan perlu dimulai
Menurut tutorial sebelumnya, dua terminal diaktifkan untuk memulai port yang ditentukan (dua layanan yang identik juga dapat mengkonfigurasi port yang berbeda dalam file konfigurasi masing -masing). Dua instruksi terminal adalah sebagai berikut:
CD TargetJava -jar springclouddemo-0.0.1-snapshot.jar --sver.port = 8080
CD TargetJava -jar Springclouddemo-0.0.1-snapshot.jar --sver.port = 8081
Hasil startup:
Pada titik ini, persiapan telah selesai
teks:
1. Konstruksi Layanan Pita
Buat proyek Maven baru tanpa menggunakan template. Proyek ini disebut Robbin-Customer, dan dependensi impor dirujuk sebagai berikut:
<? Xml Version = "1.0" encoding = "UTF-8"?> <Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <ModelVersion> 4.0.0 </modelversion> <groupid> COM.HellXZ </ARTOCZ> 4.0.0 <version> 1.0-Snapshot </version> <partent> <groupid> org.springframework.boot </groupid> <ArTifactId> Spring-boot-starter-parent </artifactid> <version> 1.5.release </version> <nelativePath/> </Parentring> <version> <version> <groupder> <orram> </Parentspath. </Parentring> <version> <dependency> <groupder> <orram> <orram> </Parent> <dependencies> <groupdency> <groupder> <ORROGFOD> </PETORTS. </PETORTRING <ORRIPFOR> </Parentring> <dependencies> <groupder> <groupder> <ORRINGF. <ArtifactId> Spring-boot-starter-web </stifactid> </dependency> <dependency> <groupid> org.springframework.cloud </proupid> <Raintifactid> </cloud-starter-eureka </artifactid> <version> rilis </version> </ketergantungan </grouppor> <roupprer> <oMROUPD.RIPPOR. </Versi </Versi> </Dependency> <grouper> <grouping> <roupproid> Rilis </Versi </Versi </Dependency> </grouppr. <artifactId>spring-cloud-starter-ribbon</artifactId> <version>RELEASE</version> </dependency> </dependency> </dependency> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>RELEASE</version> <scope> impor </ scope> <yype> pom </ype> </dependency> </dependencies> </dependencies> </dependencyManagement> </joy Project>
Buat kelas startup springboot baru dan serahkan resttemplate ke wadah pegas untuk manajemen
Paket com.cnblogs.hellxz; impor org.springframework.boot.springapplication; impor org.springframework.boot.autoconfigure.springbootApplication; impor org.springframework.cloud.client.discovery.enablediscoverycoverycoverycoverycoverycoverycoverycoverycoverycoverycovoveryient; org.springframework.cloud.client.LoadBalancer.Loadalanced; impor org.springframework.context.annotation.bean; */ @EnableDiscoveryclient @springbootApplicationPublic customerApplication customerplication {@bean // Mendukung kacang ini ke container pegas @LoadBalanced // Aktifkan penyeimbangan beban melalui anotasi ini resttemplate restTemplate () {return baru restTemplate (); } public static void main (string [] args) {springApplication.run (customerApplication.class, args); }}Buat application.yml di direktori SRC/Resources untuk informasi pendaftaran konfigurasi. Artikel ini menggunakan pusat pendaftaran berbatasan. Harap konfigurasikan Defaltzone untuk satu node.
server: port: 9000 #Specify the service port for ribbon-customer spring: application: name: ribbon-customer #Specify the application name #Specify the eureka registration center address eureka: client: serviceUrl: defaultZone: http://peer1:1111/eureka/,http://peer2:1112/eureka/
Buat CustomerController di Direktori Kelas Startup, Suntikkan RestTemplate untuk memanggil antarmuka layanan
Paket com.cnblogs.hellxz; impor org.springframework.beans.factory.annotation.Autowired; impor org.springframework.web.bind.annotation.Requestmapping; impor org.springframework.web.bind.annotation.requestmethod; org.springframework.web.bind.annotation.RestController; impor org.springframework.web.client.resttemplate;/** * @Author: hellxz * @description: Application Konsumen * @Date: 2018/4/16 15:54 */ @RestConRoller * @Date: 2018/4/16 15:54 */ @RestConRoller * @Date: 2018/4/16 15:54 */ @RestConroller * @Date: 2018/4/16 15:54 */ @RestControll * @Date: 2018/4/16 15:54 */ @RestConroller * restTemplate Private RestTemplate Resttemplate; @RequestMapping (value = "/Ribbon-Customer", Method = RequestMethod.get) Public String HelloCustomer () {// dikomentari di sini karena saya mengeluarkannya dari antarmuka penyedia layanan akses lurus lurus sebelumnya, jadi hasilnya tidak akan dikembalikan, dan kesalahan akan dilaporkan // Return sebelumnya, jadi hasilnya, dan kesalahan akan dilaporkan // restTemplate.getForEntity ("http: // localhost: 8080/hello", string.class) .getBody (); // Gunakan RestTemplate untuk memanggil Microservice Interface Return restTemplate.getForEntity ("http: // hello-service/hello", string.class) .getBody (); }}Catatan: Baris 24 dari kode di atas memberikan demonstrasi kesalahan. Jika kesalahan terjadi saat mengakses antarmuka pita dan halaman kesalahan putih muncul, silakan periksa di sini
Pada titik ini, aplikasi konsumen pita dibangun dan tes dimulai
tes:
Kunjungi http: // localhost: 1111/kami menemukan bahwa aplikasi konsumen pita ini telah terdaftar di pusat pendaftaran
Kunjungi http: // localhost: 9000/pita-pelanggan
Ingatlah bahwa jika ada akses dalam proyek penyedia layanan, informasi akan dicetak, karena dua penyedia layanan telah dimulai, di sini Anda dapat menguji keseimbangan beban pita.
Lihat Output Penyedia Layanan
Terminal kedua tidak, dan masih ditampilkan di titik akhir Eureka yang menyelesaikan melalui garis konfigurasi
Segarkan halaman untuk melihat terminal. Karena implementasi penyeimbangan beban default pita adalah pemungutan suara, dapat terjadi untuk mengakses layanan yang sama beberapa kali. Segarkan halaman beberapa kali, dan itu pasti akan ditampilkan di termis lain!
Kesimpulan:
Sebagai konsumen layanan, Ribbon tidak dapat mengekspos alamat antarmuka kepada pengguna sambil mendapatkan layanan yang disediakan oleh penyedia layanan. Dapat dilihat bahwa ketika memanggil antarmuka layanan di sini, nama layanan penyedia layanan digunakan sebagai pengganti nama host. Fitur ini sangat penting dalam kerangka tata kelola layanan.
Karena saya mempelajari generator Jhipster terlebih dahulu, saya ingin memprediksi sebelumnya dan kemudian akan ada teknologi yang disebut Petchign yang dapat menggantikan pita. Seri blog ini adalah semua catatan studi. Dalam operasi aktual, mungkin ada situasi di mana aplikasi merupakan penyedia layanan dan konsumen layanan.
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.