Spring Cloud adalah alat pengembangan aplikasi cloud berdasarkan boot musim semi. Ini memberikan metode pengembangan sederhana untuk manajemen konfigurasi, penemuan layanan, pemutus sirkuit, perutean cerdas, agen mikro, bus kontrol, kunci global, kampanye pengambilan keputusan, sesi terdistribusi dan pengelolaan negara kelompok yang terlibat dalam pengembangan aplikasi cloud berbasis JVM. Pengemasan ulang dan melindungi konfigurasi yang kompleks dan prinsip -prinsip implementasi melalui gaya boot musim semi, pada akhirnya membuat pengembang dengan sederhana, mudah dimengerti, mudah digunakan dan mudah dipelihara perangkat pengembangan sistem terdistribusi.
Spring Cloud mencakup beberapa subproyek (untuk beberapa produk open source yang berbeda yang terlibat dalam sistem terdistribusi), seperti Spring Cloud Config, Spring Cloud Netflix, Spring Cloud Cloudfoundry, Spring Cloud AWS, Spring Cloud Security, Spring Cloud Commons, Spring Cloud Zookeeperer, Spring Cloud CLI dan proyek lainnya.
Alamat Proyek: https://github.com/yuezhongxin/spring-cloud-consul-sample
Implementasi ASP.NET Core 2.0 & Docker & Consul: https://github.com/yuezhongxin/hellodocker.sample
Situs uji saat ini menggunakan inti ASP.NET untuk menggabungkan CONUSL dan FABIO untuk membangun cluster Microservice. Karena komunikasi antara setiap layanan didasarkan pada protokol HTTP REST, implementasi layanan dapat berbahasa silang. Mari kita kembangkan layanan Spring Boot dan kemudian gunakan Konsul Spring Cloud untuk mendaftarkan layanan ke cluster yang ada.
Alat Pengembangan Java I memilih IntelliJ Idea (Tutorial Instalasi MacOS), yang saat ini digunakan dengan sangat baik (Skema Warna menggunakan DARCULA SISTEM, Ukuran Font 14), dan Java SDK memerlukan unduhan dan instalasi tambahan (versi 10 yang saya instal).
Karena saya menggunakan IntelliJ Idea untuk pertama kalinya, saya akan memposting proses membuat proyek secara rinci di bawah ini.
Pertama, buat proyek (pilih "Spring Initiizr", Spring Boot Project), dan pilih Java SDK 10 secara default:
Kemudian isi informasi dasar proyek (Artifact adalah "Spring-Cloud-Consul-sampel", yang lain adalah default):
Catatan: Maven adalah alat manajemen dan konstruksi proyek yang berisi tiga komponen utama: model objek proyek (POM), model manajemen ketergantungan, siklus hidup build, dan panggung.
Perbedaan antara ID grup dan ID artefak. Jika ID grup dianggap sebagai perusahaan, ID artefak dapat dianggap sebagai departemen perusahaan, yang agak mirip dengan hubungan antara solusi dan perpustakaan kelas di .net. Misalnya, ID grup dari proyek Cloud Spring adalah org.springframework.cloud , dan ID artefak dari Konsul Cloud Spring adalah spring-cloud-starter-consul-discovery .
Berikut ini adalah Jenis Proyek Buat Spring Boot (Pilih Ketergantungan Web):
Kemudian isi nama proyek dan direktori proyek:
Kemudian klik "Selesai" dan selesai.
Seperti mengembangkan aplikasi Core ASP.NET, kita perlu merujuk berbagai paket terlebih dahulu, dan hal yang sama berlaku untuk proyek boot musim semi. Karena kami menggunakan Maven untuk manajemen ketergantungan, kami perlu mengkonfigurasi dependensi di pom.xml , dan mengkonfigurasinya sebagai berikut:
<partent> <groupId> org.springframework.boot </proupid> <ArTifactId> Spring-boot-starter-parent </artifactid> <version> 2.0.0.release </version> <relativePath/> <!-Lookup Parent dari repositori-> </Parent> <Properties> <Project.build.sourceencoding> UTF-8 </project.build.sourceencoding> <poject.reporting.outputEncoding> UTF-8 </project.report.outputenCoding> <Java.version> 1.8 </java.versies> </Properties> </versies> 1.8 </java.versies> </Properties> <puppening> <Java.versies> 1.8 </java.versies> </Properties> </Properties> <GroupId> org.springframework.boot </groupid> <ArTifactId> Spring-boot-starter-web </stifactid> </dependency> <dependency> <groupid> org.springframework.cloud </groupid> <Artifactid> SPRING-CLOUD-STARTER-CONSUL.COUDY </Groupid> <ArtifactID> <groupid> org.springframework.boot </proupid> <ArtifactId> Spring-boot-starter-aktuator </arttifactid> <scope> compile </scope> </dependency> <Artipid> <sruptid> tesp.springframework. </Dependency> </Dependencies> <DependencyManagement> <dependencies> <dependency> <Groupid> org.springframework.cloud </roupid> <Artifactid> Spring-cloud-consul-dependencies </arttifactid> <version> 2.0.0.m7 </Versi </Type> POM </Type> <kendensi> </SKUP/SKOP/SKOP/SKOP/SKOP/SKOP/SCOP/SCAKE </Versi> </Versi> </Versi </Versi> </Versi </artefactid> </dependensi> </dependencyManagement>
Referensi spring-cloud-starter-consul-discovery sesuai dengan Konsul Spring Cloud, dan referensi spring-boot-starter-actuator digunakan sebagai pemeriksaan kesehatan (alamat /actuator/health ). Selain itu, Actuator juga mendukung pemantauan dan manajemen proyek.
Mari kita bicara tentang peran node di sini:
parent : Konfigurasi referensi induk akan mewarisi konfigurasi referensi induk.dependencies : Konfigurasi referensi saat ini. Jika referensi induk dikonfigurasi, proyek anak akan direferensikan secara otomatis.dependencyManagement : Tentu saja, konfigurasi referensi. Jika referensi induk dikonfigurasi, proyek anak tidak akan direferensikan secara otomatis. Proyek anak hanya perlu dirujuk saat digunakan, dan nomor versi tidak diperlukan. Kemudian posting kode SpringCloudConsulSampleApplication.java :
Paket com.example.springcloudConsulsample; impor org.springframework.beans.factory.annotation.Autowired; impor org.springframework.boot.springapplication; impor org.springframework org.springframework.web.bind.annotation.requestmapping; impor org.springframework.web.bind.annotation.restController; impor org.springframework.cloud.client.discovery.enableDiscoveryclient; impor org.springframework.cloud.client.discovery.discoveryclient;@enableDiscoveryclient@restcontroller@springbootApplicationPublic kelas springcloudConsulsulSampleApplication {@Autowired swasta penemuan penemuan swasta; /*** Dapatkan semua Layanan*/@RequestMapping ("/Services") Layanan Objek Publik () {return DiscoveryClient.GetServices (); } @RequestMapping ("/home") public string home () {return "hello world"; } public static void main (string [] args) {springApplication.run (springcloudconsulsampleApplication.class, args); }} Tambahkan anotasi @EnableDiscoveryClient . Ketika proyek dimulai, layanan boot Spring saat ini akan terdaftar.
Saat mendaftarkan layanan menggunakan ASP.NET Core, informasi konfigurasi akan diisi dalam kode (seperti nama layanan dan port, dll., Dan tentu saja itu juga dapat dalam file konfigurasi), dan kemudian layanan akan didaftarkan menggunakan komponen konsul (disebut konsul http rest).
Jika Anda mendaftarkan layanan dengan Spring Cloud Consul, Anda perlu menambahkan file konfigurasi (File Sumber Daya Proyek Spring Boot di Direktori Sumber Daya).
Tambahkan konfigurasi di application.properties :
spring.application.name = spring-boot-service
Kemudian tambahkan file konfigurasi application.yml :
Then add the application.yml configuration file: debug: trueserver: port: 24543spring: cloud: consult: host: 127.0.0.1 port: 8500 discovery: register: true hostname: 10.9.10.215 serviceName: ${spring.application.name} healthCheckPath: /actuator/health healthCheckInterval: 15s tags: urlprefix-/$ {spring.application.name} instanceid: $ {spring.application.name}: $ {vcap.application.instance_id: $ {spring.application.instance_id: $ {random.value}}}Konfigurasi di atas perlu dijelaskan secara rinci:
debug adalah apakah akan debug mode, dan jika dikemas dan diterbitkan, itu perlu diatur ke false .server.port Mengkonfigurasi port dari layanan boot Spring.spring.cloud.consul.host/port Mengkonfigurasi alamat dan port konsul lokal (baik simpul server dan klien dapat digunakan). Spring Cloud Consul akan menghubungi antarmuka REST Konsul HTTP untuk mendaftarkan layanan.spring.cloud.consul.discovery.true mengkonfigurasi apakah akan mendaftarkan layanan saat memulai,spring.cloud.consul.discovery.hostname Mengkonfigurasi alamat host dari layanan boot spring, atau dapat dikonfigurasi tanpa konfigurasi, dan alamat lokal default adalah.spring.cloud.consul.discovery.serviceName Mengkonfigurasi nama layanan Konsul yang terdaftar. Variabel ${spring.application.name} adalah konfigurasi yang kami tambahkan dalam file konfigurasi application.properties di atas.spring.cloud.consul.discovery.healthCheckPath Mengkonfigurasi alamat pemeriksaan kesehatan konsul. Komponen aktuator membantu kami mengimplementasikannya, jadi kami tidak memerlukan implementasi tambahan. Alamat dapat dilihat dalam informasi pencetakan saat layanan dimulai.spring.cloud.consul.discovery.healthCheckInterval Mengkonfigurasi frekuensi pemeriksaan kesehatan konsul, yaitu frekuensi detak jantung.spring.cloud.consul.discovery.tags Mengkonfigurasi tag layanan pendaftaran konsul, diatur ke format urlprefix-/serviceName , dan secara otomatis terdaftar di kluster Fabio.spring.cloud.consul.discovery.instanceId Mengkonfigurasi ID Layanan Pendaftaran Konsul.Setelah pekerjaan di atas selesai, kita juga perlu memulai Konsul dan Fabio secara lokal
Maka kita dapat secara langsung men -debug proyek menggunakan ide IntelliJ dan menekan Shift + F9 untuk men -debug.
Informasi pencetakan aktuator yang disebutkan di atas:
2018-03-28 10:09:54.645 INFO 63482 --- [ main] sbaewsWebMvcEndpointHandlerMapping : Mapped "{[/actuator/health],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto public java.lang.object org.springframework.boot.actuate.endpoint.web.servlet.abstractwebmvcendpointhandlermapping $ OperationHandler.handle (javax.servlet.http.httpservletrequest, java.util.maapy <strlang, java.
2018-03-28 10: 09: 54.646 Info 63482 --- [Main] SBAEWSWEBMVCENDPOINTHANDLERMAPPEpping: Mapped "{[/actuator/infoöspring-methods= get $ java.lang.object org.springframework.boot.actuate.endpoint.web.servlet.abstractwebmvcendpointhandlermapping $ OperationHandler.handle (javax.servlet.http.httpservletrequest, java.util.maapy <strlang, java.
2018-03-28 10: 09: 54.647 Info 63482 --- [Main] SBAEWSWEBMVCENDPOintHandlermapping: dipetakan "{[/tactuator $ lotoT.actuator.Actuator.V2Plication/JonSplication/Vnd.spring-toot.actuator.actuator.V22 java.util.map <java.lang.string, java.util.map <java.lang.string, org.springframework.boot.actuate.endpoint.web.link >> org.springframework.boot.actuate.endpoint.web.servlet.webmvcendpointhandlermapping.links (javax.servlet.http.httpservletRequest, javax.servlet.http.httpservletresse))
Atau kita dapat menggunakan Maven untuk mengemas rilis dan memulai layanan dengan perintah. Anda dapat menggunakan maven dalam ide intellij untuk mengemasnya, atau menggunakan perintah maven untuk mengemasnya. Di sini kami menggunakan perintah Maven untuk mengemasnya.
Ketika kami menginstal ide IntelliJ, Maven secara otomatis diinstal, tetapi secara langsung mengenai mvn -v akan menemukan bahwa perintah tersebut tidak dapat ditemukan, jadi kami perlu mengkonfigurasi variabel lingkungan.
Direktori File Maven saya sendiri adalah /Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3 , yang dapat ditemukan dalam pengaturan konfigurasi ide intellij, dan kemudian kami menjalankan perintah berikut:
$ ekspor m2_home = "/applications/intellij ide.app/contents/plugins/maven/lib/maven3" && path ekspor = $ path: $ m2_home/bin && chmod a+x "/applications/intellij.app/contents/plugins/maven/lib
Kemudian periksa apakah perintah Maven berlaku:
$ MVN -Vapache Maven 3.3.9 (BB52D8502B132EC0A5A3F4C09453C07478323DC5; 2015-11-11T00: 41: 47+08: 00) MAVEN Home:/Aplikasi/Intellij Idea.app /contents/contents/plikr Vendor: Oracle CorporationJava Home: /library/java/javirtualmachines/jdk-10.jdk/contents/homedefault Lokal: ZH_CN_#Hans, Platform Pengkodean: UTF-8OS: "Mac OS X", Versi: "10.13.2, Arch:" X8 ""
Kemudian kami memodifikasi debug:false di application.yml dan menggunakan maven untuk mengemasnya (beralih direktori ke level pom.xml ):
$ MVN Paket Bersih -DMaven.test.SKIP = Pemindaian True [Info] untuk Proyek ... [Info] [Info] ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- spring-cloud-consul-sample ---[INFO] Deleting /Users/xishuai/Documents/Project Files/Test Project/spring-cloud-consul-sample/target[INFO][INFO] --- maven-resources-plugin:3.0.1:resources (default-resources) @ spring-cloud-consul-sample ---[INFO] Using 'UTF-8' encoding to copy filtered resources.[INFO] Copying 2 resources[INFO] Menyalin 0 Sumber Daya [Info] [Info] --- Maven-Compiler-Plugin: 3.7.0: Compile (Default-Compile) @ Spring-Cloud-Consul-Sampel --- [Info] Perubahan Terdeteksi-Modul Modul! Maven-Resources-Plugin: 3.0.1: TestResources (Default-Testresources) @ Spring-cloud-Consul-sampel --- [info] Tidak menyalin sumber daya uji [info] [info] --- maven-compiler-plugin: 3.7.0: TestCompile (default-testCompile) @ spring-coud-consel-consel-sULED-SULPLES----no compile-consel-consel-consel-cons-consel-consel---no compile-consel-consel-cons-consel-sOl-consel-no compile-cons-compile-consel-consel-cons-cons-compile @ no compile-consel @ no compiler @ no compiler-consel @ no compiler-compile) Maven-surefire-plugin: 2.20.1: tes (tes default) @ spring-cloud-consul-sampel --- [info] tes dilewati. [Info] [info] --- maven-jar-plugin: 3.0.2: Jar (default-jar) @ spring-cloud-consul-SAMPLE --- [Info] Building Jar:/Building JAR:/JAR) @ x-cloud-consul-sampel --- [Info] JAR Building:/Building JAR: Proyek/Spring-Cloud-Consul-sampel/Target/Spring-Cloud-Consul-Sample-0.0.1-Snapshot.jar [Info] [Info] --- Spring-Boot-Maven-Tplugin: 2.0.0.release: Pengemasan ulang (default) @ spring-cloud-consul-sampel --- [info] --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Paket JAR yang dihasilkan akan berada di direktori target, dengan file spring-cloud-consul-sample-0.0.1-SNAPSHOT.jar (format adalah项目名+ 版本号), dan kemudian kita dapat memulai layanan secara langsung:
$ java -jar target/spring-cloud-consul-sampel-0.0.1-snapshot.jar2018-03-28 10: 33: 31.750 info 63875 --- [main] scaannotationConfigapplicationContext: refreshing org.springframework.context.annotation.notation. Tanggal Startup [Rabu 28 Mar 10:33:31 CST 2018]; Root of Context Hierarchy -warning: Operasi akses reflektif ilegal telah terjadi? Project/Spring-cloud-Consul-sampel/target/spring-cloud-consul-sampel-0.0.1-snapshot.jar! /Boot-inf/lib/spring-core-5.0.4.release.jar!/) Ke metode java.lang.classloader.defineClass (java.lang.string, byte [], int, int, java.security.protectionDomain) peringatan: Harap pertimbangkan untuk melaporkan ini kepada pengelola worg.springframework.cglib.core.core. Operasi Akses Reflektif Peringatan: Semua operasi akses ilegal akan ditolak dalam rilis di masa depan2018-03-28 10: 33: 31.971 Info 63875 --- [utama] faautowiredAnnotationBeanPostoror: JSR-330 'JAVAX.Inject.Inject. 63875 --- [utama] trationdelegate $ beanpostprocessorchecker: bean 'configurationpropertiesrebinderautoconfiguration' tipe [org.springframework.cloud.Autoconfigure.configurationPropertiesRindereraConfiguration $$$ PITRIONDIBIBERABLIBIBERABIBERABIBERABIBERABIBERABIBER $ PERNING4 untuk diproses oleh semua processors beanpost (misalnya: tidak memenuhi syarat untuk pengabdian otomatis). ____ __ _ /// ___'_ __ _ _ (_) _ __ __ _ / / / // (() / ___ | '_ |' _ | / // // // ___) | | _) | | | | | | || (_ | |)))) '| ____ | .__ | _ | | _ | _ | | _/__, | //// ====================================== ___/ =/ _/ _/ :: Spring Boot :: (v2.0.0.release)
Periksa apakah pemeriksaan kesehatan berhasil:
Periksa apakah pendaftaran layanan konsul berhasil:
Periksa apakah cluster Fabio berisi layanan:
Setelah pendaftaran layanan berhasil, kami dapat secara manual menemukan layanan, atau menemukannya melalui komponen Spring Cloud Ribbon/Retign, dan menyediakan fungsi penyeimbang beban (mirip dengan fungsi Fabio), dan kemudian mempelajarinya nanti.
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.