การกำกับดูแลบริการสามารถกล่าวได้ว่าเป็นหลักมากที่สุดและโมดูลพื้นฐานในสถาปัตยกรรม Microservice ส่วนใหญ่จะใช้เพื่อตระหนักถึงการลงทะเบียนอัตโนมัติและการค้นพบอินสแตนซ์ microservice ต่างๆ
Spring Cloud Eureka เป็นส่วนหนึ่งของชุด Microservices Spring Cloud Netflix ซึ่งส่วนใหญ่รับผิดชอบในการทำหน้าที่กำกับดูแลการบริการในสถาปัตยกรรม Microservice
บทความนี้ใช้ตัวอย่างเล็ก ๆ ง่ายๆเพื่อแบ่งปันวิธีการจัดการบริการผ่านยูเรก้า:
=============== ฉันเป็นเส้นแบ่งที่งดงาม ===================================
1. สร้างศูนย์ลงทะเบียนบริการ
รายการแรกโครงสร้างไดเรกทอรีที่สมบูรณ์:
กระบวนการก่อสร้างมีดังนี้:
1. สร้างโครงการ Maven: Eureka (ละเว้นการใช้งานเฉพาะ)
2. แก้ไขไฟล์ POM และแนะนำการพึ่งพา
<Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http:/MANCMMMMMMMMMMMMMMMMMMMMMMMMMMBM http://maven.apache.org/xsd/maven-4.0.0.xsd "> <moderversion> 4.0.0 </modelversion> <roupid> com.sam </groupId> <atifactid> Eureka </artifactid> <roupId> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-Parent </artifactid> <sersion> 1.5.1.release </เวอร์ชัน> </parent> <properties> <การพึ่งพา> <roupId> org.springframework.cloud </groupId> <ratifactid> สปริงคลาวด์-พึ่งพาอาศัยกัน </artifactid> <persion> camden.sr6 </version> <ply> pom </peine> <pope> นำเข้า </scope> <การพึ่งพา> <roupId> org.springframework.cloud </groupId> <ratifactid> Spring-Cloud-Starter-Eureka-Server </artifactid>
3. สร้างคลาสเริ่มต้น
/** * * @enableeurekaserver * ศูนย์การลงทะเบียนบริการที่ใช้เพื่อระบุว่าโครงการคือ eureka */@enableeurekaserver@springbootapplicationpublic คลาส Eurekaapp {โมฆะคงที่สาธารณะ (สตริง [] args) - 4. กำหนดค่าแอปพลิเคชันไฟล์
#set The Tomcat Service Number Server.port = 1111#ตั้งชื่อบริการ Spring.application.name = Eureka-Serviceeureka.instance.hostname = LocalHost#ศูนย์ทะเบียนไม่จำเป็นต้องลงทะเบียน Eureka.Client.Register-eureka leureka.client.serviceurl.defaultzone = http: // $ {eeureka.instance.hostname}: $ {server.port}/ureka 5. เริ่มบริการและเข้าถึงและเราจะเห็นภาพเช่นนี้:
2. ลงทะเบียนผู้ให้บริการ
รายการแรกโครงสร้างไดเรกทอรีที่สมบูรณ์:
กระบวนการก่อสร้างมีดังนี้:
1. สร้างโครงการ Maven: Hello-Service (ละเว้นการใช้งานเฉพาะ)
2. แก้ไขไฟล์ POM และแนะนำการพึ่งพา
<Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http:/MANCMMMMMMMMMMMMMMMMMMMMMMMMMMBM http://maven.apache.org/xsd/maven-4.0.0.xsd "> <moderversion> 4.0.0 </modelversion> <roupid> com.sam </groupid> <ratifactid> hello-service </artifactid> <RoupID> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-Parent </artifactid> <sersion> 1.5.1.release </เวอร์ชัน> </parent> <properties> <javaversion> 1.8 </javaversion> <roupId> org.springframework.cloud </groupId> <ratifactid> Spring-Cloud-Dependencies </artifactid> <persion> Camden.sr6 </sersion> <ply> pom </type> <pope> นำเข้า </scope> <RoupID> org.springframework.cloud </groupId> <ratifactid> Spring-Cloud-Starter-Eureka </artifactid>
3. สร้างคลาสเริ่มต้น
/***** @enablediscoveryClient* ให้บริการใช้เซิร์ฟเวอร์ยูเรก้า* เพื่อใช้การลงทะเบียนและการค้นพบบริการ**/@enablediscoveryclient@springbootapplicationpublic คลาส helloapp {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {springapplication.run -4. สร้างคอนโทรลเลอร์
@RestControllerPublic คลาส Hellocontroller {logger logger = loggerFactory.getLogger (hellocontroller.class); @autowired DiscoveryClient DiscoveryClient; @RequestMapping ("/hello") สตริงสาธารณะสวัสดี () {serviceInstance instance = discoveryClient.getLocalserviceInstance (); // พิมพ์รหัสบริการ logger.info ("*********" + instance.getServiceId ()); กลับ "สวัสดีนี่คือบริการสวัสดี"; - 5. กำหนดค่าแอปพลิเคชันไฟล์ properties
Server.port = 9090#ตั้งชื่อบริการ Spring.application.Name = Hello-Service#ตั้งค่า URL ของศูนย์ลงทะเบียนบริการ บริการนี้จะต้องลงทะเบียนตัวเองด้วยศูนย์ลงทะเบียนบริการ Eureka.client.serviceurl.defaultzone = http: // localhost: 1111/Eureka
6. เริ่มต้นและทดสอบ
1. ) หลังจากเริ่มต้นคอนโซล Hello-Service จะมีคำนี้ (xxx แสดงชื่อพีซีของคุณ)
คัดลอกรหัสดังต่อไปนี้: อินสแตนซ์ที่ลงทะเบียน Hello-Service/XXX: Hello-Service: 9090 พร้อมสถานะ UP (การจำลอง = FALSE)
คำต่อไปนี้จะถูกพิมพ์บนคอนโซลยูเรก้า (xxx แสดงชื่อพีซีของคุณ)
คัดลอกรหัสดังต่อไปนี้: อินสแตนซ์ที่ลงทะเบียน Hello-Service/XXX: Hello-Service: 9090 พร้อมสถานะ UP (การจำลอง = FALSE)
2. ) เยี่ยมชม LocalHost: 1111 อีกครั้งและคุณจะพบว่ามีบริการที่ลงทะเบียนในศูนย์ลงทะเบียน
3. การค้นพบบริการและการบริโภค
โครงสร้างไดเรกทอรีที่สมบูรณ์มีดังนี้:
กระบวนการก่อสร้าง:
1. สร้างโครงการ Maven (ละเว้นการใช้งานเฉพาะ)
2. แก้ไขไฟล์ POM และแนะนำการพึ่งพา
<Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http:/MANCMMMMMMMMMMMMMMMMMMMMMMMMMMBM http://maven.apache.org/xsd/maven-4.0.0.xsd "> <moderversion> 4.0.0 </modelversion> <roupid> com.sam </groupId> <ArtIfactid> hello-consumer </artifactid> <RoupID> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-Parent </artifactid> <sersion> 1.5.1.release </เวอร์ชัน> </parent> <properties> <javaversion> 1.8 </javaversion> <RoupID> org.springframework.cloud </groupId> <ratifactid> Spring-Cloud-Dependencies </artifactid> <persion> camden.sr6 </version> <ply> pom </type> <pope> นำเข้า </scope> <RoupID> org.springframework.cloud </groupId> <ratifactid> Spring-Cloud-Starter-Eureka </artifactId> </erperency> <!-แนะนำการพึ่งพาริบบิ้นเพื่อให้ได้การปรับสมดุลโหลด เราเพิ่งใช้ที่นี่ดังนั้นเราจะไม่แนะนำที่อื่น-> <การพึ่งพา> <roupId> org.springframework.cloud </groupId> <ratifactid> Spring-Cloud-Starter-Ribbon </artifactid>
มีการพึ่งพาริบบิ้นมากกว่าผู้ให้บริการสวัสดีที่นี่
3. สร้างคลาสเริ่มต้น
@enableiscoveryclient@springbootapplicationpublic คลาส ConsumerApp {//@bean ถูกนำไปใช้กับวิธีการและใช้ในการตั้งค่าวิธีการส่งคืนค่าเป็นถั่ว @bean @loadbalanced //@loadbalanced } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {springapplication.run (consumerapp.class, args); -ควรใช้ @EnableDiscoveryClient ที่นี่เพื่อให้บริการใช้เซิร์ฟเวอร์ยูเรก้าเพื่อรับรู้การลงทะเบียนและการค้นพบบริการ
4. สร้างคอนโทรลเลอร์
@RestControllerPublic Class ConsumerController {// restTemplate ที่ฉีดนี่คืออินสแตนซ์ที่กำหนดค่าผ่าน @Bean ใน com.sam.consumerapp @autowired resttemplate resttemplate; @RequestMapping ("/hello-consumer") สตริงสาธารณะ helloconsumer () {// การเรียกบริการ hello-service โปรดทราบว่าชื่อบริการถูกใช้ที่นี่ไม่ใช่ ip+พอร์ตเฉพาะพอร์ตที่เฉพาะเจาะจง getForObject ("http: // hello-service/hello", string.class); กลับ "สวัสดีผู้บริโภคเสร็จสิ้น !!!"; -5. กำหนดค่าแอปพลิเคชันไฟล์ properties
server.port = 9999Spring.application.name = hello-consumereureka.client.serviceurl.defaultzone = http: // localhost: 1111/eureka#โครงการกำหนดค่าที่นี่เหมือนกับผู้ให้บริการ Hello-Service
6. เริ่มต้นทดสอบ 1. ) เริ่มต้นยูเรก้า เพื่อแสดงผลของการรับผิดชอบต่อความสมดุลการบริการสวัสดีของเราเริ่มบริการสองบริการ ขั้นตอนเฉพาะสำหรับการเริ่มต้นบริการสองบริการมีดังนี้
ข้างต้นคือขั้นตอนการเริ่มต้นของ Hello-Service1 โดยมีหมายเลขพอร์ต 9090; วิธีการเดียวกันนี้ถูกตั้งค่าเป็น Hello-Service2 โดยมีหมายเลขพอร์ต 9091 (ละเว้นการใช้งานเฉพาะ)
2. ) เริ่ม Hello-Consumer
3. ) เยี่ยมชม http: // localhost: 1111/อีกครั้งและคุณจะพบว่ามีบริการ hello-service 2 รายการ (หมายเลขพอร์ตคือ 9090 และ 9091) และ 1 Hello-Conponsume Services
4. ) หลังจากไปที่ http: // localhost: 9999/hello-consumer หลายครั้งคุณจะพบว่า Hello-Service1 และ Hello-Service2 จะถูกเรียกในทางกลับกัน นี่คือการพิมพ์)
4. สรุป
ตัวอย่างข้างต้นตระหนักถึงการกำกับดูแลบริการขั้นพื้นฐาน:
PS: ให้ฉันอธิบายที่นี่ว่า IDE ที่ฉันใช้คือ Spring Tool Suite ซึ่งเป็นเวอร์ชันที่กำหนดเองของ Spring Eclipse ซึ่งสะดวกสำหรับเราที่จะใช้ฤดูใบไม้ผลิเพื่อการพัฒนา เพื่อนที่สนใจสามารถเรียนรู้เกี่ยวกับมันใน Baidu
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น