דוגמה לאיזון עומסים עם זול ואוריקה

1. סקירה כללית

במאמר זה נבחן כיצד פועל איזון עומסים עם זול ואוריקה.

ננתב בקשות לשירות REST שהתגלה על ידי Spring Cloud Eureka באמצעות Zuul Proxy.

2. הגדרה ראשונית

אנחנו צריכים להקים שרת / לקוח של יוריקה כפי שמוצג במאמר Spring Cloud Netflix-Eureka.

3. קביעת תצורה של זול

זול, בין היתר, מביא ממקומות השירות של יוריקה ועושה איזון עומסים בצד השרת.

3.1. תצורת Maven

ראשית, נוסיף שרת צוול ו תלות ביוריקה שלנו pom.xml:

 org.springframework.cloud spring-cloud-starter-netflix-zuul org.springframework.cloud spring-cloud-starter-netflix-eureka-client 

3.2. תקשורת עם יוריקה

שנית, נוסיף את המאפיינים הדרושים בזול application.properties קוֹבֶץ:

server.port = 8762 spring.application.name = zuul-server eureka.instance.preferIpAddress = true eureka.client.registerWithEureka = true eureka.client.fetchRegistry = true eureka.client.serviceUrl.defaultZone = $ {EUREKA_URI: // localhost : 8761 / eureka} 

כאן אנו אומרים לזול לרשום את עצמו כשירות ביוריקה ולפעול בנמל 8762.

לאחר מכן, ניישם את מעמד ראשי עם @EnableZuulProxy ו- @EnableDiscoveryClient. @EnableZuulProxy מציין זאת כשרת Zuul ו- @EnableDiscoveryClient מציין זאת כלקוח יוריקה:

@SpringBootApplication @EnableZuulProxy @EnableDiscoveryClient מחלקה ציבורית ZuulConfig {main public public static (String [] args) {SpringApplication.run (ZuulConfig.class, args); }}

אנו מכוונים את הדפדפן שלנו // localhost: 8762 / מסלולים. זה אמור להופיע כל המסלולים הזמינים עבור זול שמתגלים על ידי יוריקה:

{"/ spring-cloud-eureka-client / **": "spring-cloud-eureka-client"}

כעת נתקשר עם לקוח יוריקה באמצעות נתיב Zuul Proxy שהושג. מצביע על הדפדפן שלנו // localhost: 8762 / spring-cloud-eureka-client / greeting צריך ליצור את התגובה בערך:

שלום מ- 'SPRING-CLOUD-EUREKA-CLIENT עם מספר יציאה 8081'!

4. איזון עומסים עם זול

כאשר זול מקבל בקשה, הוא אוסף את אחד המיקומים הפיזיים הזמינים ומעביר בקשות למופע השירות בפועל. כל תהליך המטמון של מיקום מופעי השירות והעברת הבקשה למיקום בפועל מסופק מהקופסה ללא צורך בתצורות נוספות.

כאן אנו יכולים לראות כיצד צול מקיף שלושה מופעים שונים של אותו שירות:

באופן פנימי, Zuul משתמש בסרט הסרט Netflix כדי לחפש את כל מקרי השירות מגילוי השירות (שרת Eureka).

בואו נתבונן בהתנהגות זו כאשר מעלים מספר מקרים.

4.1. רישום מספר מופעים

נתחיל בהפעלת שני מופעים (יציאות 8081 ו- 8082).

לאחר שכל המופעים מסתיימים, אנו יכולים לראות ביומנים שמיקומים פיזיים של המופעים רשומים בהם DynamicServerListLoadBalancer והמסלול ממופה אליו בקר זול שמטפל בהעברת בקשות למופע בפועל:

נתיב כתובת ה- URL ממופה [/ spring-cloud-eureka-client / **] אל המטפל מסוג [class org.springframework.cloud.netflix.zuul.web.ZuulController] לקוח: spring-cloud-eureka-client הביא LoadBalancer: DynamicServerListLoadBalancer : {NFLoadBalancer: name = spring-cloud-eureka-client, רשימה נוכחית של שרתים = [], נתונים סטטיסטיים של איזון עומסים = נתונים סטטיסטיים: {}, נתונים סטטיסטיים של שרתים: []} ServerList: null שימוש ב- ServerListUpdater PollingServerListUpdater DynamicServerListLoadBalancer עבור ענן אביב-לקוח -eureka-client מאותחל: DynamicServerListLoadBalancer: {NFLoadBalancer: name = spring-cloud-eureka-client, רשימת השרתים הנוכחית = [0.0.0.0:8081, 0.0.0.0:8082], נתונים סטטיסטיים של איזון עומסים = סטטיסטיקה של אזור: {defaultzone = [אזור: אזור מחדל; ספירת מופעים: 2; ספירת חיבורים פעילים: 0; מפסק המפסק מעד ספירה: 0; חיבורים פעילים לשרת: 0.0;]}, נתונים סטטיסטיים של שרת: [[שרת: 0.0.0.0: 8080; אזור: defaultZone; ......], [שרת: 0.0.0.0: 8081; אזור: defaultZone; ......],

הערה: היומנים עוצבו לקריאה טובה יותר.

4.2. דוגמא לאיזון עומסים

בואו ננווט לדפדפן שלנו אל // localhost: 8762 / spring-cloud-eureka-client / greeting כמה פעמים.

בכל פעם, עלינו לראות תוצאה שונה במקצת:

שלום מ- 'SPRING-CLOUD-EUREKA-CLIENT עם מספר יציאה 8081'!
שלום מ- 'SPRING-CLOUD-EUREKA-CLIENT עם מספר יציאה 8082'!
שלום מ- 'SPRING-CLOUD-EUREKA-CLIENT עם מספר יציאה 8081'!

כל בקשה שמתקבלת על ידי זול מועברת למופע אחר באופן סדיר.

אם נתחיל מופע אחר ונרשום אותו ביוריקה, צוול ירשום אותו באופן אוטומטי ונתחיל להעביר אליו בקשות:

שלום מ- 'SPRING-CLOUD-EUREKA-CLIENT עם מספר יציאה 8083'!

אנו יכולים גם לשנות את אסטרטגיית איזון העומסים של Zuul לכל אסטרטגיית סרט אחר של נטפליקס - עוד על כך ניתן למצוא במאמר הסרט שלנו.

5. מסקנה

כפי שראינו, Zuul מספק כתובת אתר אחת לכל המקרים של שירות המנוחה ועושה איזון עומסים בכדי להעביר את הבקשות לאחת מהמקרים באופן סיבובי.

כמו תמיד, ניתן למצוא את הקוד השלם של מאמר זה ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found