เราได้เสร็จสิ้นองค์ประกอบพื้นฐานสองประการของศูนย์ทะเบียนและผู้ให้บริการ บทความนี้แนะนำบริการการโทรโดยใช้สปริงคลาวด์ริบบิ้นเพื่อโหลดสมดุลทางฝั่งไคลเอ็นต์
โหลดบาลานซ์ (LB: โหลดบาลานซ์) เป็นปัญหาแรกที่จะแก้ไข ก่อนที่ Microservices โซลูชัน LB ส่วนใหญ่เป็นโซลูชันการปรับสมดุลโหลดแบบรวมศูนย์และ LB อิสระอื่น ๆ ระหว่างผู้บริโภคบริการและผู้ให้บริการ LB มักจะเป็นฮาร์ดแวร์เฉพาะเช่น F5 หรือซอฟต์แวร์ที่ใช้เช่น VS, HAPROXY ฯลฯ มีตารางการแมปที่อยู่สำหรับบริการทั้งหมดใน LB เมื่อผู้บริโภคบริการเรียกบริการเป้าหมายก่อนจะเริ่มคำขอไปยัง LB LB ใช้นโยบายบางอย่าง (เช่น Round-Robin) เพื่อโหลดการปรับสมดุลคำขอไปยังบริการเป้าหมาย
การเกิดขึ้นของ microservices เป็นอีกแนวคิดหนึ่งสำหรับการใช้งาน LB: เพื่อรวมฟังก์ชั่นของ LB เข้ากับกระบวนการของผู้บริโภคบริการในรูปแบบของไลบรารีแทนที่จะจัดทำโดยอุปกรณ์หรือเซิร์ฟเวอร์ส่วนกลาง โซลูชันนี้เรียกว่า Soft Load Balancing หรือ Load Balancing ของไคลเอ็นต์ ในสปริงคลาวด์ร่วมกับฟังก์ชั่นการลงทะเบียนบริการของยูเรก้าโครงการย่อยริบบิ้นใช้การปรับสมดุลโหลดสำหรับไคลเอนต์ที่เหลือ
ให้บริการผู้บริโภคด้วยริบบิ้นสปริงเมฆ
สร้างโครงการสปริงคลาวด์-ตัวอย่างผู้ดูแล
สร้างโครงการย่อย Spring-Cloud-Tutorial-Consumer ใหม่ภายใต้สปริงคลาวด์ตัวอย่างบทเรียน
เพิ่มการพึ่งพาริบบิ้นและยูเรก้า
<การพึ่งพา> <การพึ่งพา> <roupId> org.springframework.cloud </groupId> <ratifactid> Spring-Cloud-Starter-Eureka </artifactid> </การพึ่งพาอาศัย> <การพึ่งพา <RoupID> org.springframework.boot </groupId> <ratifactid> Spring-Boot-Starter-Web </artifactId>
กำหนดค่า applicationin.properties, ที่อยู่กลางลงทะเบียน
spring.application.name = consumererver.port = 30001eureka.client.service-url.defaultzone = http: // localhost: 10001/eureka/, http: // localhost: 10002/eureka/
เขียน usercontroller เพิ่ม @loadbalanc
@controller @requestmapping ("ผู้ใช้") คลาสสาธารณะ userController {@Bean @LoadBalanced RESTTEMPLATE INITRESTTEMPLATE () {ส่งคืน RESTTEMPLATE ใหม่ (); } @AutoWired RestTemplate RestTemplate; @RequestMapping ("เพิ่ม") @ResponseBody สตริงสาธารณะเพิ่ม (ชื่อผู้ใช้สตริงอายุสตริง) {return restTemplate.getForentity ("http: // ผู้ผลิต/ผู้ใช้/เพิ่ม", string.class, ชื่อผู้ใช้, อายุ) .getBody (); -เขียนผู้บริโภคเพิ่ม @enableeurekaclient เปิดใช้งานการลงทะเบียนบริการ
@enableeurekaclient@springbootapplicationpublic คลาส Consumerapplication {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {springapplication.run (consenerapplication.class, args); -ผู้ผลิตการปรับใช้คลัสเตอร์
เพื่อจำลองผู้ผลิตของคลัสเตอร์แอปพลิเคชันใหม่ Profile1.Properties และแอปพลิเคชันโปรไฟล์ 2.Properties ถูกสร้างขึ้นในโครงการผู้ผลิต
แอปพลิเคชันโปรไฟล์ 1.Properties
spring.application.name = producerserver.port = 20001eureka.client.service-url.defaultzone = http: // localhost: 10001/eureka/, http: // localhost: 10002/eureka/
แอปพลิเคชันโปรไฟล์ 2.properties
spring.application.name = producerserver.port = 20002eureka.client.service-url.defaultzone = http: // localhost: 10001/eureka/, http: // localhost: 10002/eureka/
เพื่อทดสอบเอฟเฟกต์โหลดเราพิมพ์พอร์ตของบริการที่เรียกว่า
@controller@requestmapping ("ผู้ใช้") คลาสสาธารณะ userController {private logger logger = loggerFactory.getLogger (getClass ()); @autowired Private DiscoveryClient Client; @RequestMapping ("เพิ่ม") @ResponseBody String adduser (String username, String Age) {return "ความสำเร็จจาก" + client.getLocalserviceInstance (). gethost () + ":" + client.getLocalserviceInstance () getPort (); -เริ่มการทดสอบ
เริ่มศูนย์ลงทะเบียน
กำหนดค่าโปรไฟล์ที่ใช้งานอยู่เป็นโปรไฟล์ 1 และโปรไฟล์ 2 ตามลำดับเริ่มต้นสองครั้งและดำเนินการเริ่มต้นบริการของคลัสเตอร์รีจิสทรี
เริ่มต้นผู้ให้บริการ
เริ่มต้นผู้ให้บริการในลักษณะเดียวกับด้านบน
เริ่มให้บริการผู้บริโภค
ผู้ให้บริการสามารถทำได้แบบสแตนด์อโลนและผู้บริโภคสามารถเริ่มต้นได้ตามปกติ
ตรวจสอบ
ป้อน http: // localhost: 30001/ผู้ใช้/เพิ่มจากเบราว์เซอร์
เยี่ยมชมอีกครั้ง:
จะเห็นได้ว่าบริการการโทรโหลดบาลานซ์ของเราประสบความสำเร็จและค่าเริ่มต้นคือการปรับสมดุลโหลดตามการฝึกอบรมการหมุน
สรุป
บทความนี้แนะนำและทำการโทรเพื่อใช้สปริงคลาวด์ริบบิ้นสำหรับการปรับสมดุลโหลดไคลเอนต์
ต่อไปเราจะแนะนำวิธีใช้สปริงคลาวด์เพื่อตรวจสอบบริการต่อไป
ดาวน์โหลดซอร์สโค้ด
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น