1. บทนำ
ในบทความก่อนหน้านี้เราได้ดำเนินการตรวจสอบอินสแตนซ์บริการเดียว แน่นอนในแอปพลิเคชันจริงข้อมูลการตรวจสอบของอินสแตนซ์เดียวนั้นไม่มีค่ามากนัก สิ่งที่เราต้องการมากขึ้นคือข้อมูลการตรวจสอบของระบบคลัสเตอร์ ในเวลานี้เราต้องแนะนำกังหัน กังหันสามารถรวบรวมข้อมูลการตรวจสอบและให้ข้อมูลที่รวมไปยังแผงควบคุม Hystrix สำหรับการแสดงผลและการตรวจสอบส่วนกลาง
2. สร้างสำนักงานตรวจสอบและบริการ
2.1 โครงสร้างโดยรวมและการเตรียมการ
การดำเนินการทางวิศวกรรมของบทความนี้ขึ้นอยู่กับโครงการของบทความก่อนหน้า ด้วยการแนะนำกังหันมันจะรวมข้อมูลการตรวจสอบของบริการ-ริบบิ้นบริการและส่งออกไปยังแผงควบคุม Hystrix เพื่อแสดงผล เนื่องจากเราต้องการแดชบอร์ดสำหรับบริการหลายบริการเราจะสร้างคลัสเตอร์บริการริบบิ้นและเราจำเป็นต้องสร้างโครงการบริการด้านการบริการใหม่เพื่อรวมข้อมูลและแสดง โครงสร้างโดยรวมสุดท้ายมีดังนี้:
2.2 สร้าง Turbine บริการ
สร้างโครงการ Spring Boot ใหม่ชื่อ Service-Turbine และนำเข้าการอ้างอิงที่จำเป็นใน POM.XML:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/ XSI: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" <Sersion> 0.0.1-SNAPSHOT </เวอร์ชัน> <packaging> jar </packaging> <name> บริการ-Turbine </name> <scription> โครงการสาธิตสำหรับการบูตฤดูใบไม้ผลิ </คำอธิบาย> <carent> <roupid> org.springframework.boot </groupid> <!-การค้นหาผู้ปกครองจากที่เก็บ-> </parent> <properties> <project.build.sourceencoding> UTF-8 </project.build.sourceencoding> <Project.Reporting.UutputUning> <pring-cloud.version> edgware.sr1 </spring-cloud.version> </premerties> <pendencies> <การพึ่งพา> <roupId> org.springframework.cloud </groupId> <ratifactid> Spring-Cloud-Starter-turbine </artifactid> <ArtIfactId> Spring-Cloud-Netflix-Turbine </ArtifactId> </dercendency> <การพึ่งพา> <roupId> org.springframework.boot </groupId> <ArtIfactId> Spring-Boot-Starter-Test </ArtifactId> <scope> ทดสอบ </cope> </การพึ่งพาอาศัย> </การพึ่งพาอาศัย> <predencyManagement> <pendencies> <การพึ่งพา> <roupId> org.springframework.cloud </groupid> <sype> POM </peple> <pope> นำเข้า </cope> </predency> </pendencies> </derpendencyManagement> <uffect> <build> <plugins> <plugin> <mlugin> <roupid> org.springframework.boot </groupid>
เพิ่มคำอธิบายประกอบ @enableTurbine ลงในคลาสเริ่มต้นโครงการและเปิดใช้งานกังหัน คำอธิบายประกอบมีคำอธิบายประกอบ @EnableScoveryColient แล้วนั่นคือบริการลงทะเบียนได้เปิดใช้งานแล้ว:
@springbootapplication @enableTurbine คลาสสาธารณะ serviceTurbineApplication {โมฆะคงที่สาธารณะหลัก (String [] args) {springapplication.run (serviceTurbineapplication.class, args); - เพิ่มการกำหนดค่าที่เกี่ยวข้องกับ Eureka และกังหันในแอปพลิเคชัน properties ดังต่อไปนี้:
Spring.application.name = Service-Turbine Server.port = 8766 Security.basic.enabled = False Eureka.client.serviceUrl.defaultzone = http: // localhost: 8761/eureka turbine.aggregator.cluster-config-turbine turbine.combine-host-port = true
ในการกำหนดค่าข้างต้นพารามิเตอร์ turbine.app-config กำหนดค่ารายการ ServiceID ในยูเรก้าเพื่อระบุบริการใดที่ถูกตรวจสอบ พารามิเตอร์ turbine.cluster-name-expression ระบุชื่อคลัสเตอร์เป็นค่าเริ่มต้น เมื่อมีบริการจำนวนมากบริการกังหันหลายแห่งสามารถเริ่มต้นสร้างกลุ่มการรวมตัวที่แตกต่างกัน พารามิเตอร์นี้สามารถใช้เพื่อแยกความแตกต่างของกลุ่มการรวมตัวที่แตกต่างกันเหล่านี้ ในเวลาเดียวกันค่าพารามิเตอร์สามารถใช้เพื่อค้นหากลุ่มการรวมที่แตกต่างกันในแผงควบคุม Hystrix เพียงระบุพารามิเตอร์คลัสเตอร์ใน URL ของสตรีม Hystrix พารามิเตอร์ Turbine.combine-Host-Port ถูกตั้งค่าเป็น TRUE เพื่อให้บริการในโฮสต์เดียวกันสามารถแยกแยะได้โดยการรวมกันของชื่อโฮสต์และหมายเลขพอร์ต โดยค่าเริ่มต้นบริการที่แตกต่างกันจะแตกต่างกันโดยโฮสต์ซึ่งจะทำให้บริการที่แตกต่างกันในการรวมเครื่องในท้องถิ่นเป็นหนึ่งบริการสำหรับสถิติระหว่างการดีบัก
3. การตรวจสอบคลัสเตอร์
เริ่มโครงการ Eureka-Server ด้วยหมายเลขพอร์ต 8761;
เริ่มโครงการ Eureka-client ด้วยหมายเลขพอร์ต 8762 และ 8763;
เริ่มโครงการบริการริบบิ้นด้วยหมายเลขพอร์ต 8764 และ 8765;
เริ่มต้นโครงการบริการทุ่งหญ้าด้วยหมายเลขพอร์ต 8766
เยี่ยมชม http: // localhost: 8766/turbine.stream เพื่อดู:
เยี่ยมชม http: // localhost: 8765/hystrix, ป้อนสตรีมการตรวจสอบ http: // localhost: 8766/turbine.stream เพื่อดู:
อย่างที่คุณเห็นในรูปแม้ว่าเราจะเริ่มต้นใช้บริการสอง-ริบบอน แต่หน้าการตรวจสอบยังคงแสดงแผนภาพการตรวจสอบเท่านั้น อย่างไรก็ตามเราสามารถพบได้ว่าแอตทริบิวต์โฮสต์ในพื้นที่รายงานคลัสเตอร์ในรูปนั้นแตกต่างจากเมื่อพยายามตรวจสอบแบบสแตนด์อโลนมาก่อน แต่เนื่องจากทั้งสองกรณีนี้เป็นบริการเดียวกันและสำหรับคลัสเตอร์เรามีความกังวลเกี่ยวกับความพร้อมใช้งานที่สูงของคลัสเตอร์บริการดังนั้นกังหันจะดูบริการเดียวกันโดยรวม
แน่นอนถ้าคุณต้องการดูไดอะแกรมการตรวจสอบสองรายการคุณสามารถตั้งค่า Spring.Application.name ของหนึ่งในอินสแตนซ์ของบริการ-Ribbon ไปยังชื่ออื่นเพื่อให้ไดอะแกรมการตรวจสอบที่แตกต่างกันสองรายการจะปรากฏขึ้นหลังจากทำงาน
4. รวมกับนายหน้าข้อความ
เมื่อคลาวด์สปริงห่อหุ้มกังหันมันจะห่อหุ้มการใช้งานคอลเลกชันตามโบรกเกอร์ข้อความ ดังนั้นเราสามารถส่งออกข้อมูลการตรวจสอบทั้งหมดที่ต้องรวบรวมลงในนายหน้าข้อความจากนั้นบริการกังหันจะได้รับข้อมูลการตรวจสอบเหล่านี้แบบอะซิงโครนัสจากนายหน้าข้อความและในที่สุดก็รวมและส่งออกไปยังแผงควบคุม Hystrix ด้วยการแนะนำนายหน้าข้อความสถาปัตยกรรมการตรวจสอบที่ใช้โดยกังหันและแผงควบคุม Hystrix ของเราสามารถเปลี่ยนเป็นโครงสร้างที่แสดงในรูปด้านล่าง:
ก่อนอื่นสร้างโครงการสปริงบูตใหม่ชื่อ Service-Turbine-AMQP และแนะนำ Spring-Cloud-Starter-Turbine-AMQP และ Spring-Boot-Starter-Actuator การได้เห็นสิ่งนี้เป็นเพียงการแนะนำทั้งสองการพึ่งพาอาศัยกันเพราะสปริงคลาวด์-สตาร์เทอร์ทเทอร์น-อเมษษฏมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมมี้ลี้ตี
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/ XSI: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" <ArtIfactId> Service-Turbine-AMQP </artifactId> <persion> 0.0.1-snapshot </เวอร์ชัน> <packaging> jar </packaging> <name> service-turbine-amqp </name> <scription> โครงการ Demo สำหรับการบูตฤดูใบไม้ผลิ </คำอธิบาย> <ArtIfactId> Spring-Boot-Starter-Parent </artifactid> <sersion> 1.5.9.release </เวอร์ชัน> <inelypath/> <!-ผู้ปกครองค้นหาจากที่เก็บ-> </parent> <properties> <project.build.sourceencoding> UTF-8 <Project.Reporting.UutputEncoding> UTF-8 </Project.Reporting.UutputUntencoding> <Java.Version> 1.8 </Java.Version> <pring-Cloud.Version> edgware.sr1 </spring-cloud.ersion> </properties> <ArtIfactId> Spring-Cloud-Starter-Turbine-AMQP </artifactId> </การพึ่งพาอาศัย> <การพึ่งพา> <roupId> org.springframework.boot </groupid> <ratifactid> การพึ่งพาอาศัยกัน> <การพึ่งพา> <roupID> org.springframework.cloud </groupId> <ratifactid> สปริงคลาวด์-พึ่งพาอาศัยกัน </artifactid> <cersion> $ {สปริง-คลาวด์ <RoupID> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Maven-Plugin </artifactid> </plugin> ใช้คำอธิบายประกอบ @enableTurbinestream ในคลาสหลักเพื่อเปิดใช้งานการกำหนดค่าของกระแสกังหัน:
@springbootapplication @enableTurbinestream @enablediscoveryClient คลาสสาธารณะ ServiceTurbineamqPapplication {โมฆะสาธารณะคงที่หลัก (String [] args) {springapplication.run (serviceTurbineamqpapplication.class, args); -จากนั้นกำหนดค่าไฟล์ Application.properties:
spring.application.name = service-turbine-amqp server.port = 8766 Eureka.client.serviceurl.defaultzone = http: // localhost: 8761/Eureka
การกำหนดค่าของกังหันเสร็จสมบูรณ์ ความต้องการต่อไปนี้จำเป็นต้องทำการปรับเปลี่ยนบางอย่างสำหรับบริการ-ริบบิ้นเพื่อให้ข้อมูลการตรวจสอบสามารถส่งออกไปยัง RabbitMQ การดัดแปลงนี้ก็ง่ายมาก เพียงเพิ่มการพึ่งพาในสปริงคลาวด์-เน็ตฟลิกซ์ -Hystrix-Amqp ใน pom.xml ดังนี้:
<Effercing> <roupId> org.springframework.cloud </groupId> <ratifactid> Spring-Cloud-Netflix-Hystrix-Amqp </artifactid>
หลังจากเสร็จสิ้นการกำหนดค่าข้างต้นเริ่มโครงการที่จำเป็นทั้งหมดไปที่ http: // localhost: 8765/hystrix ป้อนสตรีมการตรวจสอบ http: // localhost: 8766/turbine.stream และเราสามารถเห็นผลลัพธ์เดียวกันกับก่อนยกเว้น
ดาวน์โหลดซอร์สโค้ด: https://github.com/lingd3/springcloudlearning/tree/master/chapter8
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น