מבוא ל- Netflix Archaius עם ענן אביב

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

Netflix Archaius היא ספריית ניהול תצורה עוצמתית.

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

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

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

2. תכונות Netflix Archaius

כידוע, Spring Boot כבר מספק מכשירים לניהול תצורות חיצוניות, אז למה לטרוח להגדיר מנגנון אחר?

נו, Archaius מציע כמה תכונות שימושיות ומעניינות שאינן מתבוננות בשום מסגרת תצורה אחרת. חלק מנקודות המפתח שלה הן:

  • מאפיינים דינמיים וקלדניים
  • מנגנון Callback שמופעל על ידי מוטציות רכוש
  • מוכן לשימוש ביישומים של מקורות תצורה דינמיים כגון כתובות URL, JDBC ו- Amazon DynamoDB
  • JMX MBean שאליו ניתן לגשת באמצעות Spring Boot Actuator או JConsole כדי לבדוק ולתפעל את המאפיינים.
  • אימות מאפיינים דינמיים

הטבות אלה יכולות להועיל בתרחישים רבים.

לכן, Spring Cloud עבד על ספרייה המאפשרת להגדיר בקלות 'גשר סביבת אביב' כך שארכאיוס יוכל לקרוא מאפיינים מסביבת האביב.

3. תלות

בואו נוסיף את אביב-ענן-starter-netflix-archaius ליישום שלנו, זה יוסיף את כל התלות הדרושה לפרויקט שלנו.

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

  org.springframework.cloud spring-cloud-starter-netflix-archaius org.springframework.cloud spring-cloud-netflix 2.0.1.RELEASE pom יבוא 

הערה: אנו יכולים לבדוק את Maven Central כדי לוודא שאנחנו משתמשים בגרסה האחרונה של ספריית המתחילים.

4. שימוש

לאחר שנוסיף את התלות הנדרשת, נוכל לגשת למאפיינים המנוהלים על ידי המסגרת:

DynamicStringProperty dynamicProperty = DynamicPropertyFactory.getInstance () .getStringProperty ("baeldung.archaius.property", "ערך ברירת מחדל"); מחרוזת propertyCurrentValue = dynamicProperty.get ();

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

4.1. דוגמה מהירה

כברירת מחדל, הוא מנהל באופן דינמי את כל המאפיינים שהוגדרו בקובץ בשם נכסי config במסלול הכיתה של היישום.

אז בואו נוסיף אותו לתיקיית המשאבים שלנו עם כמה מאפיינים שרירותיים:

# config.properties baeldung.archaius.properties.one = אחד FROM: config.properties

כעת נצטרך דרך לבדוק את ערכי המאפיינים בכל רגע ספציפי. במקרה זה, ניצור RestController המאחזר את הערכים כתגובת JSON:

@RestController מחלקה ציבורית ConfigPropertiesController {private DynamicStringProperty propertyOneWithDynamic = DynamicPropertyFactory.getInstance () .getStringProperty ("baeldung.archaius.properties.one", "לא נמצא!"); @GetMapping ("/ property-from-dynamic-management") מחרוזת ציבורית getPropertyValue () {return propertyOneWithDynamic.getName () + ":" + propertyOneWithDynamic.get (); }}

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

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

לאחר מכן ננסה להבין מה קורה מתחת למכסה המנוע.

5. איך זה עובד?

קודם כל, בואו ננסה להבין את התמונה הגדולה.

Archaius הוא הרחבה של ספריית תצורת Commons של אפאצ'י, ומוסיף כמה תכונות נחמדות כמו מסגרת סקרים למקורות דינמיים, עם תפוקה גבוהה ויישום בטוח לשרשור.

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

5.1. ספריית ארכאיוס של נטפליקס

היא פועלת בהגדרת תצורה מורכבת, אוסף של תצורות שונות המתקבלות ממקורות שונים.

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

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

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

5.2. תמיכה בענן האביב

המשימה העיקרית של ספריית Spring Cloud Archaius היא מיזוג כל מקורות התצורה השונים כ- ConcurrentCompositeConfiguration והתקן אותו באמצעות מנהל תצורה.

סדר הקדימות בו מגדירה הספריה את המקורות הוא:

  1. כל תצורה נפוצה של אפאצ'י תקציר תצורה שעועית מוגדרת בהקשר
  2. כל המקורות המוגדרים ב חוטית אוטומטית אביב הסביבה ניתנת להגדרה
  3. מקורות ברירת המחדל של ארקאיוס, שראינו בדוגמה לעיל
  4. של אפאצ'י הגדרות מערכת ו סביבה תצורה מקורות

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

6. התאמה והרחבה של תצורת Archaius

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

6.1. מאפייני תצורה נתמכים על ידי Archaius

אם אנו רוצים שארכאיוס ייקח בחשבון קבצי תצורה אחרים הדומים ל- נכסי config אחד, אנו יכולים להגדיר את archaius.configurationSource.additionalUrls נכס מערכת.

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

-Darchaius.configurationSource.additionalUrls = "מסלול כיתה: אחר-dir / extra.properties, קובץ: ///home/user/other-extra.properties"

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

ישנם כמה מאפייני מערכת אחרים שבהם אנו יכולים להשתמש כדי להגדיר היבטים שונים של תצורת ברירת המחדל של Archaius:

  • archaius.configurationSource.defaultFileName: שם קובץ התצורה המוגדר כברירת מחדל בכיתה
  • archaius.fixedDelayPollingScheduler.initialDelayMills: עיכוב ראשוני לפני קריאת מקור התצורה
  • archaius.fixedDelayPollingScheduler.delayMills: עיכוב בין שתי קריאות המקור; ערך ברירת המחדל הוא דקה אחת

6.2. הוספת מקורות תצורה נוספים עם אביב

כיצד נוכל להוסיף מקור תצורה אחר שינוהל על ידי המסגרת המתוארת? וכיצד נוכל לנהל מאפיינים דינמיים בעלי עדיפות גבוהה יותר מאלו שהוגדרו בסביבת האביב?

אם נסקור את מה שהזכרנו בסעיף 4.2, נוכל להבין שהתצורות הגבוהות ביותר בתצורה המורכבת שהוגדרה על ידי אביב הן ה- תקציר תצורה שעועית שהוגדרה בהקשר.

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

כדי לשמור על פשטות הדברים, נראה דוגמה שבה אנו מגדירים קובץ מאפיינים הדומה לברירת המחדל נכסי config אך עם ההבדל שיש עדיפות גבוהה יותר משאר סביבות האביב ותכונות היישום:

@Bean תקציר ציבורי ציבורי addApplicationPropertiesSource () {URL configPropertyURL = (ClassPathResource חדש ("other-config.properties")). GetURL (); מקור PolledConfigurationSource = URLConfigurationSource חדש (configPropertyURL); להחזיר DynamicConfiguration חדש (מקור, FixedDelayPollingScheduler חדש ()); }

למזלנו, הוא שוקל כמה מקורות תצורה שנוכל להגדיר כמעט ללא מאמץ. תצורתם אינה מתחום הדרכת ההיכרות הזו.

7. מסקנה

לסיכום, למדנו על Archaius וכמה מהתכונות המגניבות שהוא מציע כדי לנצל את ניהול התצורה.

כמו כן, ראינו כיצד ספריית התצורה האוטומטית של Spring Cloud נכנסת לתמונה ומאפשרת לנו להשתמש בממשק ה- API של הספרייה בצורה נוחה.

שוב נוכל למצוא את כל הדוגמאות המוצגות במדריך זה ואחרות ברפיונו של Github.


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