1. Pendahuluan
Pada artikel sebelumnya, kami telah menerapkan pemantauan satu instance layanan tunggal. Tentu saja, dalam aplikasi aktual, data pemantauan dari satu instance tidak terlalu berharga. Yang kami butuhkan lebih banyak adalah informasi pemantauan dari sistem cluster. Saat ini, kita perlu memperkenalkan turbin. Turbin dapat mengumpulkan informasi pemantauan dan memberikan informasi agregat ke dasbor Hystrix untuk tampilan dan pemantauan terpusat.
2. Bangun biro dan layanan pemantauan
2.1 Struktur dan persiapan keseluruhan
Implementasi teknik artikel ini didasarkan pada proyek artikel sebelumnya. Dengan memperkenalkan turbin, ia menggabungkan informasi pemantauan dari layanan-layanan-layanan dan mengeluarkannya ke dasbor Hystrix untuk ditampilkan. Karena kami membutuhkan dasbor untuk beberapa layanan, kami akan membangun cluster-ribbon cluster, dan kami perlu membuat proyek turbin layanan baru untuk mengumpulkan informasi dan menampilkannya. Struktur keseluruhan terakhir adalah sebagai berikut:
2.2 Buat turbin layanan
Buat Proyek Boot Musim Semi baru, bernama Service-Turbine, dan Impor Ketergantungan yang Diperlukan di Pom.xml:
<? 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.dan </group </groupy </ARBICED> </ModelVersion> <groupid> Com.dan </group </group </groupes> </ModelVersion> <groupid> com.dan </group </group </groupes> </ModelVersion> <groupid> com.dan </group </groupy </groupy </ModelVersion> <groupid> com.dan </grupy <version> 0.0.1-Snapshot </version> <packaging> Jar </packaging> <name> service-turbine </name> <creckripe> Proyek demo untuk boot musim semi </cripence> <parter> <groupid> org.springframework.boot </groupid> <Artifactid> Spring-boots-starter-parent </art/version. <!-Pencarian Orangtua dari Repositori-> </Parent> <Properties> <Proyect.build.sourceencoding> UTF-8 </project.build.soureCoding> <poject.raporting.outputencoding> UTF-8 </project.reporting.outputencenceD> </version </project.reporting.outputencoding> </version </project.reporting.outputencoding> <spring-cloud.version> edgware.sr1 </spring-cloud.version> </ Properties> <dependencies> <dependency> <Groupid> org.springframework.cloud </groupid> <ArTifactId> <can groupid-turbin </sartifactid> </groupid> <ArTifacTID> </ArtifAud. <ArTifactId> Spring-cloud-netflix-turbine </artifactid> </gandendency> <dependency> <GroupId> org.springframework.boot </groupid> <ArTifactId> <tempar-boot-starter-actuator </t Artifactid> </dependency> <grouping> <groupding> </artifactid> </dependency> <dependency> <groupding> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> Tambahkan anotasi @EnableTurbine ke kelas startup proyek dan aktifkan turbin. Anotasi sudah berisi anotasi @EnableDiscoveryclient, yaitu, layanan pendaftaran telah diaktifkan:
@SpringbootApplication @EnableTurbine kelas publik ServiceTurbineApplication {public static void main (string [] args) {springApplication.run (serviceTurbineApplication.class, args); }} Tambahkan konfigurasi terkait eureka dan turbin di application.properties, sebagai berikut:
spring.application.name = service-turbine server.port = 8766 Security.basic.enabled = false eureka.client.serviceurl.defaultzone = http: // localhost: 8761/eureka turbine.aggregator.cluster-config = default turbine.app-concepline = non-non-non-non-non-non-configine =-non-configine = Default-Concerfault-ConcerFault-Concerfault = Layanan-CONGINEC-COMPAULS-COMRIG-COMRIGON = DEFAULT-CONBINE. turbine.combine-host-port = true
Dalam konfigurasi di atas, parameter Turbine.App-Config mengkonfigurasi daftar layanan di Eureka untuk menunjukkan layanan mana yang dipantau; Parameter Ekspresi Turbine.Cluster-name-Expression menentukan nama cluster sebagai default. Ketika ada sejumlah besar layanan, beberapa layanan turbin dapat mulai membangun berbagai kelompok agregasi. Parameter ini dapat digunakan untuk membedakan berbagai kelompok agregasi ini. Pada saat yang sama, nilai parameter dapat digunakan untuk menemukan berbagai kelompok agregasi di dasbor Hystrix. Tentukan saja parameter cluster dalam URL aliran Hystrix; Parameter turbin. Secara default, layanan yang berbeda akan dibedakan oleh host, yang akan membuat berbagai layanan pada agregat mesin lokal menjadi satu layanan untuk statistik selama debugging.
3. Pemantauan Cluster
Mulai proyek Eureka-Server dengan nomor port 8761;
Mulai proyek Eureka-Client dengan nomor port 8762 dan 8763;
Mulai proyek Layanan-Ribbon dengan nomor port 8764 dan 8765;
Mulai proyek turbin layanan dengan nomor port 8766.
Kunjungi http: // localhost: 8766/turbine.stream untuk melihat:
Kunjungi http: // localhost: 8765/hystrix, masukkan aliran pemantauan http: // localhost: 8766/turbine.stream untuk melihat:
Seperti yang dapat Anda lihat pada gambar, meskipun kami telah memulai dua ribbon layanan, halaman pemantauan masih hanya menunjukkan diagram pemantauan. Namun, kami dapat menemukan bahwa atribut host di area pelaporan cluster dalam gambar berbeda dari ketika mencoba pemantauan yang berdiri sendiri sebelumnya, tetapi karena kedua contoh ini adalah layanan yang sama, dan untuk cluster, kami khawatir tentang ketersediaan tinggi cluster layanan, sehingga Turbine akan melihat layanan yang sama sebagai keseluruhan dan merangkumnya ke dalam diagram pemantauan.
Tentu saja, jika Anda benar-benar ingin melihat dua diagram pemantauan, Anda dapat mengatur spring.Application.name dari salah satu contoh Layanan-Ribbon ke nama lain, sehingga dua diagram pemantauan yang berbeda akan muncul setelah berjalan.
4. Dikombinasikan dengan Pialang Pesan
Ketika Spring Cloud merangkum turbin, itu juga merangkum implementasi koleksi berdasarkan broker pesan. Oleh karena itu, kami dapat menghasilkan semua informasi pemantauan yang perlu dikumpulkan ke dalam broker pesan, dan kemudian layanan turbin akan mendapatkan informasi pemantauan ini secara tidak sinkron dari broker pesan, dan akhirnya mengumpulkan dan mengeluarkannya ke dasbor Hystrix. Dengan memperkenalkan broker pesan, arsitektur pemantauan yang diimplementasikan oleh dasbor turbin dan hystrix kami dapat diubah ke struktur yang ditunjukkan pada gambar di bawah ini:
Pertama, buat proyek boot musim semi baru, bernama Service-Turbine-AMQP, dan perkenalkan Spring-Cloud-Starter-Turbine-AMQP dan Spring-Boot-Starter-Actuator Dependencies. Melihat ini hanya memperkenalkan kedua ketergantungan ini, karena musim semi-cloud-starter-turbine-AMQP sebenarnya membungkus stream-cloud-starter-turbine-stream dan spring-cloud-starter-stream-rabbit.
<? 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.dan </groupid </groupid> </ModelVersion> <groupid> Com.dan </groupid </groupid> groupid> </ModelVersion> <groupid> com.dan </groupid </groupid> groupid> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>service-turbine-amqp</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> <RelativePath/> <!-Pencarian Orangtua dari Repositori-> </parents> <properties> <poject.build.sourceencoding> UTF-8 </project.build.sourceencoding> <poject.outporting.outputenCoding> UTF-8 </project.report.outporing.outputencoding> UTF-8 </project.reporting.outputencoding> JAGERS. <spring-cloud.version>Edgware.SR1</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-turbine-amqp</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <ArTifactId> Spring-Boot-starter-aktuator </stifactid> <scope> test </seupope> </gandendency> </gandendency> </gandendency> <gantageManagement> </Dependency> <ArtiFAcD> org.springframework.cloud </groupid> <Arttifactid> Spring-couldiF <version> $ {spring-cloud.version} </version> <ype> pom </peement> <scope> impor </opope> </dependency> </dependency> </dependencyManagement> <build> <builgin> <Art plugin> </org.springframework.boot </groupin> <Art plugin> <TROPID> </slugin> </build> </joy Project> Gunakan anotasi @EnableTurbInestream di kelas utama untuk mengaktifkan konfigurasi aliran turbin:
@SpringbootApplication @EnableTurbInestream @EnableDiscoveryclient kelas publik ServiceTurbineamQplication {public static void main (string [] args) {springApplication.run (serviceTurbineamQplication.class, args); }}Kemudian konfigurasikan file application.properties:
spring.application.name = service-turbine-amqp server.port = 8766 eureka.client.serviceurl.defaultzone = http: // localhost: 8761/eureka
Konfigurasi turbin telah selesai. Berikut ini perlu membuat beberapa modifikasi pada ribbon layanan sehingga informasi pemantauannya dapat menjadi output ke RabbitMQ. Modifikasi ini juga sangat sederhana. Cukup tambahkan ketergantungan pada spring-cloud-netflix-hystrix-amqp di pom.xml, sebagai berikut:
<dependency> <GroupId> org.springframework.cloud </groupid> <ArTifactId> Spring-cloud-netflix-hystrix-amqp </t Artifactid> </dependency>
Setelah menyelesaikan konfigurasi di atas, mulailah semua proyek yang diperlukan, kunjungi http: // localhost: 8765/hystrix, masukkan aliran pemantauan http: // localhost: 8766/turbine.stream, dan kita dapat melihat hasil yang sama seperti sebelumnya, kecuali bahwa pengumpulan informasi pemantauan di sini diimplementasikan secara tidak senonoh melalui pesan melalui pesan.
Unduh Kode Sumber: https://github.com/lingd3/springcloudlearning/tree/master/chapter8
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.