Spring Cloud Eureka คืออะไร
Spring Cloud Eureka เป็นส่วนประกอบในสปริงคลาวด์ มันเป็น encapsulated รองจาก Netflix Eureka ซึ่งส่วนใหญ่รับผิดชอบในการทำหน้าที่กำกับดูแลการบริการในกรอบ Microservice Spring Cloud เพิ่มการกำหนดค่าระบบอัตโนมัติแบบสปริงบู๊ตให้กับยูเรก้า เราต้องการการอ้างอิงการอ้างอิงอย่างง่ายและคำอธิบายประกอบเพื่อเปิดใช้งาน Spring Boot เพื่อรวมแอพพลิเคชั่น microservice เข้ากับระบบการกำกับดูแลบริการ Eureka ได้อย่างง่ายดาย
การกำกับดูแลการบริการ
การกำกับดูแลบริการเป็นหลักมากที่สุดและโมดูลพื้นฐานในกรอบ Microservice ส่วนใหญ่จะใช้เพื่อตระหนักถึงการลงทะเบียนอัตโนมัติและการค้นพบอินสแตนซ์ microservice ต่างๆ
ในตอนแรกมีบริการระบบ microservice ไม่มากนักที่อาจสร้างขึ้นและเราสามารถทำการโทรของบริการผ่านการกำหนดค่าคงที่บางอย่าง ตัวอย่างเช่นมีบริการสองบริการ A และ B เมื่อบริการ A จำเป็นต้องโทรหาบริการ B เพื่อดำเนินการทางธุรกิจเพื่อให้ได้รับบริการ B ที่มีความพร้อมใช้งานสูงไม่ว่าเราจะใช้ยอดคงเหลือที่ซับซ้อนบนเซิร์ฟเวอร์หรือโหลดบาลานซ์บนไคลเอนต์เราต้องดูแลรายการอินสแตนซ์ B ด้วยตนเอง อย่างไรก็ตามด้วยการพัฒนาธุรกิจฟังก์ชั่นของระบบมีความซับซ้อนมากขึ้นเรื่อย ๆ และไมโครไซต์ที่สอดคล้องกันก็ยิ่งยากขึ้นเรื่อย ๆ
เพื่อแก้ปัญหานี้มีการสร้างกรอบการกำกับดูแลบริการและผลิตภัณฑ์จำนวนมาก เฟรมเวิร์กเหล่านี้หมุนรอบกลไกการลงทะเบียนบริการและกลไกการค้นพบบริการเพื่อให้การจัดการแบบอัตโนมัติของแอปพลิเคชัน Microservice เสร็จสมบูรณ์
การลงทะเบียนบริการ
ในกรอบการกำกับดูแลบริการมักจะสร้างศูนย์ลงทะเบียนบริการ หน่วยอินสแตนซ์บริการแต่ละหน่วยลงทะเบียนบริการของตัวเองด้วยศูนย์การลงทะเบียนและบอกศูนย์การลงทะเบียนชุดข้อมูลเพิ่มเติมเช่นตำแหน่งโฮสต์อินสแตนซ์หมายเลขพอร์ตหมายเลขเวอร์ชันโปรโตคอลการสื่อสาร ฯลฯ และศูนย์การลงทะเบียนจัดรายการบริการตามชื่อบริการ
การค้นพบบริการ
เนื่องจากการดำเนินงานภายใต้กรอบการกำกับดูแลบริการการสื่อสารและการโทรระหว่างบริการจะไม่ถูกนำไปใช้อีกต่อไปโดยการระบุที่อยู่อินสแตนซ์เฉพาะ แต่โดยการเริ่มต้นการร้องขอการโทรไปยังชื่อบริการ ดังนั้นเมื่อผู้เรียกบริการเรียกอินเทอร์เฟซของผู้ให้บริการเขาไม่ทราบตำแหน่งอินสแตนซ์ของบริการเฉพาะ ดังนั้นจึงจำเป็นต้องเริ่มต้นการร้องขอการสืบค้นไปยังรีจิสทรีก่อนและรับรายการอินสแตนซ์เพื่อให้ได้การเข้าถึงอินสแตนซ์บริการเฉพาะ
สร้างบริการศูนย์การลงทะเบียนยูเรก้า
สร้าง Eureka ศูนย์เดียว
การพัฒนาที่ตามมาทั้งหมดของเราทั้งหมดจะขึ้นอยู่กับเวอร์ชันข้างต้น ควรสังเกตว่า Sring Cloud ใช้เวอร์ชัน Snapshot ดังนั้นคุณต้องระบุที่อยู่ของที่เก็บในไฟล์ POM
ก่อนอื่นเราสร้างโครงการสปริงบูตใหม่ตั้งชื่อ: Spring-Cloud-Eureka และเพิ่มการพึ่งพาที่จำเป็นให้กับ POM ไฟล์ POM เฉพาะมีดังนี้:
<? 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> Spring-Cloud-Eureka </artifactid> <sersion> 0.0.1-Snapshot </Sersion> <packaging> jar </packaging> <name> Spring-Cloud-Eureka </name> <carent> <roupid> org.springframework.boot <Sersion> 2.0.2.Release </เวอร์ชัน> <inelativePath/> <!-การค้นหาผู้ปกครองจากที่เก็บ-> </Parent> <properties> <Project.build.sourceencoding> UTF-8 </project.build.sourceencoding> <java.version> 1.8 </java.version> <pring-cloud.version> Finchley.build-Snapshot </spring-cloud.version> </premerties> <pendencies> <pendency> <roupid> org.springframework.boot </Groupid> <การพึ่งพา> <roupId> org.springframework.cloud </groupid> <ratifactid> Spring-Cloud-Starter-Netflix-Eureka-Server </artifactid> <Scope> ทดสอบ </cope> </derctency> </dercendency> </perctencies> <perdencyManagement> <การพึ่งพา> <การพึ่งพา> <roupId> org.springframework.cloud </groupId> <trifactId> สปริง <scope> นำเข้า </cope> </dercendency> </dercendency> </perdency> </serdencyManagement> <สร้าง> <plugins> <sderctId> org.springframework.boot </groupId> <id> spring-snapshots </id> <name> สปริงสแน็ปช็อต </name> <url> https://repo.spring.io/snapshot </url> <napshots> <enabled> True </enabled> <url> https://repo.spring.io/milestone </url> <napshots> <enabled> false </enabled> </snapshots> </repository> </repositories>
เริ่มต้นรีจิสทรีบริการเพื่อให้การสนทนากับแอปพลิเคชันอื่น ๆ ผ่านคำอธิบายประกอบ @enableeurekaserver ขั้นตอนนี้ง่ายมากเพียงเพิ่มคำอธิบายประกอบนี้ลงในแอปพลิเคชันสปริงบูตปกติเพื่อเปิดใช้งานฟังก์ชั่นนี้:
@springbootapplication@enableeurekaserverpublic คลาสแอปพลิเคชัน ApplicationEurekaserver {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {springapplication.run (applicationeurekaserver.class, args); -ภายใต้การกำหนดค่าเริ่มต้นเซิร์ฟเวอร์ลงทะเบียนจะลงทะเบียนเป็นไคลเอนต์ด้วย โดยทั่วไปเราจำเป็นต้องปิดการใช้งานฟังก์ชั่นนี้และแอปพลิเคชันที่แก้ไขแล้วมันเป็นดังนี้:
# Spring Configspring: แอปพลิเคชัน: ชื่อ: Spring-Boot-Eureka # Server Configserver: พอร์ต: 9871 # Eureka Configureka: อินสแตนซ์: ชื่อโฮสต์: LocalHost ไคลเอนต์: register-with-eureka: false # ไม่ลงทะเบียนตัวเอง http: // $ {eeureka.instance.hostname}: $ {server.port}/uureka/ เนื่องจากเราทุกคนทำงานในพื้นที่สำหรับความแตกต่างของบริการที่ตามมาเราจึงตั้งพอร์ตของรีจิสทรีบริการผ่านเซิร์ฟเวอร์พอร์ตเพื่อเรียกใช้พอร์ตเป็น: 9871
หลังจากเสร็จสิ้นการกำหนดค่าข้างต้นเริ่มแอปพลิเคชันและเยี่ยมชม http: // localhost: 9871 คุณสามารถดูหน้าต่อไปนี้ที่รายการอินสแตนซ์ที่ลงทะเบียนกับยูเรก้าในปัจจุบันว่างเปล่าซึ่งระบุว่าไม่มีการลงทะเบียนบริการไปยังศูนย์ลงทะเบียน
ฉันคิดว่าทุกคนสังเกตเห็นคำศัพท์สีแดงที่สะดุดตาสองบรรทัดด้านบน:
ภาวะฉุกเฉิน! ยูเรก้าอาจอ้างสิทธิ์อย่างไม่ถูกต้องเมื่อไม่ได้ การต่ออายุนั้นน้อยกว่าเกณฑ์และด้วยเหตุนี้อินสแตนซ์จะไม่หมดอายุเพียงเพื่อความปลอดภัย
สาเหตุ: กลไกการป้องกันตนเอง ในระหว่างการทำงานของเซิร์ฟเวอร์ยูเรก้าจะนับว่าสัดส่วนของความล้มเหลวในการเต้นของหัวใจนั้นน้อยกว่า 85% ภายใน 15 นาทีหรือไม่ หากเกิดขึ้น (เป็นเรื่องง่ายที่จะตอบสนองระหว่างการดีบักแบบสแตนด์อโลน แต่ในความเป็นจริงมันมักจะเกิดจากความไม่แน่นอนของเครือข่ายในสภาพแวดล้อมการผลิต) เซิร์ฟเวอร์ยูเรก้าจะปกป้องข้อมูลการลงทะเบียนอินสแตนซ์ปัจจุบันและแจ้งเตือนนี้
เนื่องจากปัญหานี้มีแนวโน้มที่จะเกิดขึ้นในสถานการณ์แบบสแตนด์อโลนหลังจากปิดการป้องกันตัวเองตามการกำหนดค่าออนไลน์ยูเรก้าจะยังคงเรียกการเตือน ดังนั้นเราจึงเพิกเฉยต่อปัญหานี้ในขณะนี้และสามารถแก้ไขได้เมื่อการปรับใช้คลัสเตอร์ในภายหลัง
ลงทะเบียนผู้ให้บริการ
หลังจากเสร็จสิ้นการจัดตั้งบริการลงทะเบียนศูนย์เราสามารถลองเพิ่มแอปพลิเคชันสปริงบูตที่มีอยู่ในระบบการกำกับดูแลบริการของยูเรก้า
เรายังคงใช้ตัวอย่างสปริงคลาวด์ก่อนหน้านี้เป็นตัวอย่าง เราจำเป็นต้องแก้ไขการกำหนดค่าต่อไปนี้ของ Application.yml:
# ชื่อแอปพลิเคชันสปริง: แอปพลิเคชัน: ชื่อ: Spring-Cloud-Server# Eureka ลงทะเบียนศูนย์ตำแหน่ง Eureka: ไคลเอน
หลังจากการดัดแปลงเสร็จสิ้นการบริการสามารถเริ่มต้นได้ ในเวลานี้เรารีเฟรชหน้าการจัดการของยูเรก้าและดูข้อมูลรายการของอินสแตนซ์ที่ลงทะเบียนกับยูเรก้าในปัจจุบันดังนี้:
นี่แสดงให้เห็นว่าบริการของเราได้รับการลงทะเบียนสำเร็จในศูนย์ลงทะเบียน
รหัสตัวอย่างที่เกี่ยวข้อง: https://github.com/sagesource/spring-cloud-set
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น