เบื้องต้นเกี่ยวกับยูเรก้า
ยูเรก้าให้บริการที่พักอาศัยซึ่งส่วนใหญ่ใช้ในการจัดการบริการในคลัสเตอร์ ยูเรก้าจัดเตรียมส่วนประกอบของลูกค้าตามภาษา Java ซึ่งใช้ฟังก์ชั่นการปรับสมดุลโหลดโดยสร้างเงื่อนไขสำหรับการปรับใช้คลัสเตอร์ของส่วนประกอบทางธุรกิจ การใช้เฟรมเวิร์กนี้ส่วนประกอบทางธุรกิจสามารถลงทะเบียนในคอนเทนเนอร์ยูเรก้าซึ่งสามารถนำไปใช้ในกลุ่มและยูเรก้าส่วนใหญ่จะดูแลรายการบริการเหล่านี้และตรวจสอบสถานะของพวกเขาโดยอัตโนมัติ
โครงสร้างโปรแกรม
สร้างเซิร์ฟเวอร์ยูเรก้า
การพึ่งพา maven
<การพึ่งพาการจัดการ> <การพึ่งพา> <การพึ่งพา> <roupId> org.springframework.cloud </groupId> <ratifactid> สปริงคลาวด์-พึ่งพาอาศัยกัน </artifactid> <version> dalston.sr1 </เวอร์ชัน> <RoupID> org.springframework.cloud </groupId> <ratifactid> Spring-Cloud-Starter-Eureka-Server </artifactid>
เปลี่ยนพอร์ตสปริงบูตเริ่มต้นใน application.yml
เซิร์ฟเวอร์: พอร์ต: 8761
เปิดใช้งานคำอธิบายประกอบบริการ Eureka @enableeurekaserver
@enableeurekaserver@springbootapplicationpublic คลาส ekserverapplication {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {ใหม่ SpringApplicationBuilder (ekserverapplication.class) .run (args); -เริ่มต้นสปริงโบท
[thread-11] Oscneserver.eurekaserverBootstrap: บริบทเซิร์ฟเวอร์เริ่มต้น [Main] SBCettomcatembeddedservletContainer: Tomcat เริ่มต้นที่พอร์ต: 8761 (HTTP) [Main] Ekserverapplication ใน 8.594 วินาที (JVM ทำงานสำหรับ 9.523)
ข้อยกเว้นที่ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์จะปรากฏขึ้นในระหว่างการเริ่มต้น นี่เป็นเพราะยูเรก้าถือว่าตัวเองเป็นลูกค้าเพื่อคว้าข้อมูลการลงทะเบียนเมื่อเริ่มต้น
การคัดลอกรหัสมีดังนี้:
com.netflix.discovery.shared.transport.transportexception: ไม่สามารถดำเนินการคำขอบนเซิร์ฟเวอร์ที่รู้จัก
เพิ่มการกำหนดค่าต่อไปนี้และจะไม่ปรากฏอีกเมื่อเริ่มต้น
ยูเรก้า: ไคลเอน
registerWitheureka ประกาศว่าจะลงทะเบียนข้อมูลของตัวเองไปยังเซิร์ฟเวอร์ยูเรก้าหรือไม่ค่าเริ่มต้นนั้นเป็นจริง
FetchRegistry ประกาศว่าจะรวบรวมข้อมูลการลงทะเบียนลงในเซิร์ฟเวอร์ยูเรก้าหรือไม่ค่าเริ่มต้นนั้นเป็นจริง
เยี่ยมชม http: // localhost: 8761 ในเบราว์เซอร์ของคุณเพื่อดูคำอธิบายภาพของอินพุตคอนโซลยูเรก้า
สร้างผู้ให้บริการ
พึ่งพา
<การพึ่งพา> <roupId> org.springframework.cloud </groupId> <ratifactid> Spring-Cloud-Starter-Config </artifactid> </การพึ่งพา> <การพึ่งพา> <roupid> org.springframework.cloud </groupid> <RoupID> org.springframework.cloud </groupId> <ratifactid> Spring-Cloud-Starter-Ribbon </artifactId>
กำหนดค่าพอร์ตชื่ออินสแตนซ์ยูเรก้าและที่อยู่บริการยูเรก้าใน Application.yml
เซิร์ฟเวอร์: พอร์ต: 8080SPRING: แอปพลิเคชัน: ชื่อ: EK-Providereureka: อินสแตนซ์: โฮสต์ชื่อ: LocalHost ไคลเอนต์: ServiceUrl: defaultZone: http: // localhost: 8761/Eureka/
สร้างบริการพักผ่อน
@RestControllerPublic คลาส Hellocontroller {@requestmapping ("/hello") สตริงสาธารณะสวัสดี (คำขอ httpservletrequest) {return "hello:" + request.getrequesturl (); -เปิดใช้งานคำอธิบายประกอบไคลเอน
@enableeurekaclient@springbootapplicationpublic คลาส ekproviderapplication {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {ใหม่ springapplicationbuilder (ekproviderapplication.class) .run (args); -หลังเริ่มต้นคุณสามารถเห็นได้ในคอนโซลยูเรก้าที่ผู้ให้บริการได้ลงทะเบียนในยูเรก้า
สร้างผู้โทรบริการ
พึ่งพา
<การพึ่งพา> <roupId> org.springframework.cloud </groupId> <ratifactid> Spring-Cloud-Starter-Config </artifactid> </การพึ่งพา> <การพึ่งพา> <roupid> org.springframework.cloud </groupid> <RoupID> org.springframework.cloud </groupId> <ratifactid> Spring-Cloud-Starter-Ribbon </artifactId>
กำหนดค่าพอร์ตชื่ออินสแตนซ์ยูเรก้าและที่อยู่บริการยูเรก้าใน Application.yml
เซิร์ฟเวอร์: พอร์ต: 9000Spring: แอปพลิเคชัน: ชื่อ: ek-invokeeureka: อินสแตนซ์: โฮสต์ชื่อ: localhost ไคลเอ็นต์: serviceUrl: defaultzone: http: // localhost: 8761/eureka/
เขียนบริการพักผ่อนเพื่อโทรหา "/สวัสดี" ของผู้ให้บริการ
@restController @configurationPublic คลาส invokeController {@bean @loadbalanced สาธารณะ resttemplate getRestTemplate () {ส่งคืน RESTTEMPLATE ใหม่ (); } @RequestMapping ("/revoke") สตริงสาธารณะ revoke () {restTemplate restTemplate = getRestTemplate (); return resttemplate.getForObject ("http: // ek-provider/hello", string.class); -ในโหมดดั้งเดิมเรามักจะใช้ httpClient ใน Apache เพื่อเรียกบริการ REST ที่นี่เราใช้สปริงเพื่อจัดเตรียมส่วนประกอบ resttemplate ที่เรียกบริการ REST RestTemplate นั้นไม่มีความสามารถในการเรียกใช้บริการแบบกระจาย แต่หลังจากที่ถั่ว RestTemplate ได้รับการแก้ไขโดยคำอธิบายประกอบ @LoadBalanced อินสแตนซ์ของ RestTemplate นี้มีความสามารถในการเข้าถึงบริการแบบกระจายขอบคุณการดักจับต่าง ๆ ที่ให้ไว้ในฤดูใบไม้ผลิ
เปิดใช้งานคำอธิบายประกอบไคลเอน
@enableeurekaclient@springbootapplicationpublic คลาส ekinvokeapplication {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {ใหม่ SpringApplicationBuilder (ekinvokeapplication.class) .run (args); -หลังเริ่มต้นคุณสามารถเห็นได้ในคอนโซลยูเรก้าว่าผู้เรียกบริการได้รับการลงทะเบียนในยูเรก้า
จากนั้นเข้าถึงอินเทอร์เฟซ "เรียกใช้" ของผู้เรียกบริการในเบราว์เซอร์ กลับมาดังนี้
สรุป
เซิร์ฟเวอร์ยูเรก้าเก็บข้อมูลการลงทะเบียนล่าสุดผ่านลิงก์ Heartbeat ซึ่งเก็บไว้ในหน่วยความจำ
ผู้ให้บริการยูเรก้าส่วนใหญ่ดำเนินการ:
ผู้โทรบริการยูเรก้าส่วนใหญ่ดำเนินการ:
ที่อยู่ซอร์สโค้ด: https://github.com/xc564864894/springcloud/tree/master/eureka(%E4%B8%80)
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น