ใช้ยูเรก้าเพื่อให้บรรลุการกำกับดูแลการบริการ
ฟังก์ชั่น: ตระหนักถึงการกำกับดูแลบริการ (การลงทะเบียนและการค้นพบบริการ)
บทนำ: Spring Cloud Eureka เป็นโมดูลการกำกับดูแลบริการภายใต้โครงการ Spring Cloud Netflix โครงการ Spring Cloud Netflix เป็นหนึ่งในโครงการย่อยของสปริงคลาวด์ เนื้อหาหลักคือการจัดทำชุดผลิตภัณฑ์โอเพ่นซอร์สของ Netflix มันให้การรวม Netflix OSS ที่กำหนดค่าด้วยตนเองสำหรับแอปพลิเคชัน Spring Boot ด้วยคำอธิบายประกอบที่ง่ายนักพัฒนาสามารถกำหนดค่าโมดูลที่ใช้กันทั่วไปในแอปพลิเคชันของพวกเขาอย่างรวดเร็วและสร้างระบบกระจายขนาดใหญ่ โมดูลหลักของมัน ได้แก่ : บริการ Discovery (Eureka), Circuit Breaker (Hystrix), Intelligent Routing (Zuul), การปรับสมดุลโหลดไคลเอนต์ (ริบบิ้น) ฯลฯ
การปฏิบัติในการปฏิบัติโครงการ:
ศูนย์ทะเบียนบริการ: Eureka-Server
ฟังก์ชั่น: ศูนย์ลงทะเบียนบริการให้ฟังก์ชั่นการลงทะเบียนบริการ
ผู้ให้บริการ: Eureka-client
ฟังก์ชั่น: ลงทะเบียนบริการไปยังศูนย์ลงทะเบียนบริการ
ศูนย์ทะเบียนบริการ: Eureka-Server
สร้างโครงการ Springboot ใหม่: Eureka-Server และการกำหนดค่า pom.xml เป็นดังนี้:
<properties> <project.build.sourceencoding> UTF-8 </project.build.sourceencoding> <project.roporting.UutputUptencoding> UTF-8 </project.Reporting.OutputUncoding> <RoupID> org.springframework.cloud </groupId> <ratifactid> Spring-Cloud-Starter-Eureka-Server </Artifactid> </serperences> </serperencies> <perdencyManagement> <cersion> dalston.sr1 </version> <ply> POM </type> <pope> นำเข้า </cope> </derctency> </perctencies> </predencyManagement>
มันง่ายมากที่จะใช้ฟังก์ชั่นของศูนย์ลงทะเบียนบริการ คุณจะต้องใช้คำอธิบายประกอบ @enableeurekaserver ในคลาสเริ่มต้นของโครงการ EurekaserverApplication
@enableeurekaserver @springbootapplication คลาสสาธารณะ Eurekaserverapplication {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {new SpringApplicationBuilder (Eurekaserverapplication.class) .web (TRUE) .Run (args); -โดยค่าเริ่มต้นศูนย์การลงทะเบียนบริการจะพยายามลงทะเบียนตัวเองเป็นลูกค้าดังนั้นเราจำเป็นต้องปิดใช้งานพฤติกรรมการลงทะเบียนไคลเอนต์และเพิ่มข้อมูลต่อไปนี้ลงในแอปพลิเคชันไฟล์การกำหนดค่า properties:
Spring.application.name = Eureka-Serverserver.port = 1001eureka.instance.hostname = localhosteureka.client.register-with-eureka = falseeureka.client.fetch-registry = false
เริ่มต้น Eurekaserverapplication เยี่ยมชม http: // localhost: 9001/เพื่อดูหน้าของ Eureka จากตำแหน่งของกล่องสีแดงคุณจะเห็นว่าไม่มีอินสแตนซ์บริการงานที่ลงทะเบียนไปยังศูนย์ลงทะเบียนบริการปัจจุบัน
ผู้ให้บริการ: Eureka-client
หลังจากลงทะเบียนแต่ละอินสแตนซ์แล้วจำเป็นต้องมีการเต้นของหัวใจเพื่อส่งการเต้นของหัวใจไปยังศูนย์ลงทะเบียน เมื่อไคลเอนต์ลงทะเบียนกับเซิร์ฟเวอร์มันจะให้ข้อมูลเมตาบางอย่างเช่นโฮสต์และพอร์ต, URL, โฮมเพจ ฯลฯ เซิร์ฟเวอร์ยูเรก้าจะได้รับข้อความ HeartBeat จากแต่ละอินสแตนซ์ไคลเอนต์แต่ละอินสแตนซ์ หากการเต้นของหัวใจหมดเวลาอินสแตนซ์มักจะถูกลบออกจากเซิร์ฟเวอร์ที่ลงทะเบียน
สร้างโครงการ Springboot ใหม่: Eureka-Client และการกำหนดค่า POM.XML เป็นดังนี้:
<properties> <project.build.sourceencoding> UTF-8 </project.build.sourceencoding> <project.roporting.UutputUptencoding> UTF-8 </project.Reporting.OutputUncoding> <roupId> org.springframework.cloud </groupid> <ratifactid> Spring-Cloud-Starter-eureka </artifactid> </serpendency> <perdency> <sdercture> </permentency> <การพึ่งพาการจัดการ> <การพึ่งพา> <การพึ่งพา> <roupId> org.springframework.cloud </groupId> <ratifactid> สปริงคลาวด์-พึ่งพาอาศัยกัน
นอกจากนี้ยังง่ายมากที่จะใช้ผู้ให้บริการ เพียงใช้คำอธิบายประกอบ @enableeurekaclient ในคลาสเริ่มต้นของโครงการ EurekaclientApplication
@enableeurekaclient @springbootapplication คลาสสาธารณะ Eurekaclientapplication {โมฆะคงที่สาธารณะ (สตริง [] args) {new SpringApplicationBuilder (Eurekaclientapplication.class) .web (TRUE) .Run (args); -กำหนดค่าต่อไปนี้ใน application.properties
Spring.application.name = Eureka-Clienterver.port = 9002eureka.client.serviceurl.defaultzone = http: // localhost: 9001/eureka/
ผ่านคุณสมบัติ Spring.application.Name เราสามารถระบุชื่อของ Microservice เมื่อโทรหามันเพื่อให้สามารถเข้าถึงบริการได้
คุณสมบัติ Eureka.client.serviceurl.defaultzone สอดคล้องกับเนื้อหาการกำหนดค่าของศูนย์ลงทะเบียนบริการและระบุตำแหน่งของศูนย์ลงทะเบียนบริการ
ใช้คุณสมบัติ Server.port เพื่อตั้งค่าพอร์ตที่แตกต่างกัน
เริ่มคลาส EurekaclientApplication
รีเฟรช http: // localhost: 9001/และคุณจะเห็นว่าผู้ให้บริการของเราได้ลงทะเบียนกับศูนย์ลงทะเบียนบริการ
สร้าง DiscoveryController ใหม่
ใช้ discoveryClient.getServices () เพื่อรับชื่อบริการที่ลงทะเบียนและใช้ @Value เพื่อกำหนดข้อมูลในไฟล์การกำหนดค่าให้กับ IP
@RestControllerPublic คลาส DiscoveryController {@AutoWired DiscoveryClient DiscoveryClient; @Value ("$ {Server.port}") สตริงส่วนตัว IP; @getMapping ("/ไคลเอนต์") ลูกค้าสตริงสาธารณะ () {บริการสตริง = "บริการ:"+discoveryClient.getServices ()+"IP:"+IP; System.out.println (บริการ); บริการส่งคืน; -เยี่ยมชม: http: // localhost: 9002/ไคลเอนต์
ในที่สุดให้ฉันอธิบายคำอธิบายประกอบทั้งสอง @enableeurekaclient และ @enablecoverycoveryclient
ก่อนอื่นคำอธิบายประกอบทั้งสองสามารถตระหนักถึงหน้าที่ของการค้นพบบริการ มีการใช้บริการ Discovery มากมายใน Spring Cloud (Eureka, กงสุล, Zookeeper ฯลฯ )
@enableeurekaclient ขึ้นอยู่กับสปริงคลาวด์-เน็ตฟลิกซ์ บริการนี้ใช้ยูเรก้าเป็นศูนย์การลงทะเบียนและสถานการณ์การใช้งานค่อนข้างเดี่ยว
@enablediscoveryClient ขึ้นอยู่กับสปริงคลาวด์คอมมอนส์ บริการใช้ศูนย์การลงทะเบียนอื่น ๆ
GitHub: https://github.com/mingyuhub/springcloud
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น