מדריך ל- Hazelcast עם Java

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

זהו מאמר היכרות בנושא Hazelcast בו נראה כיצד ליצור חבר אשכול, מופץ מַפָּה כדי לשתף נתונים בין צמתי האשכול, וליצור לקוח Java לחיבור ולשאילת נתונים באשכול.

2. מה זה Hazelcast?

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

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

כמו כן, Hazelcast מציעה תכונות שונות כגון מבנה נתונים מבוזר, מחשבים מבוזרים, שאילתות מבוזרות וכו '. לצורך מאמר זה נתמקד במופץ מבוזר. מַפָּה.

3. תלות של Maven

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

עם זאת, במאמר זה נשתמש רק בתלות הליבה הדרושה ליצירת חבר באשכול Hazelcast עצמאי ולקוח Java של Hazelcast:

 com.hazelcast hazelcast 4.0.2 

הגרסה הנוכחית זמינה במאגר המרכזי של maven.

4. אפליקציה ראשונה של Hazelcast

4.1. צור חבר Hazelcast

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

בואו ליצור חבר המאחסן נתונים במפה מבוזרת של Hazelcast:

מחלקה ציבורית ServerNode {HazelcastInstance hzInstance = Hazelcast.newHazelcastInstance (); ...}

כשאנחנו מתחילים את ServerNode היישום, אנו יכולים לראות את הטקסט הזורם במסוף, כלומר אנו יוצרים צומת Hazelcast חדש ב- JVM שלנו אשר יצטרך להצטרף לאשכול.

חברים [1] {חבר [192.168.1.105]: 5701 - 899898be-b8aa-49aa-8d28-40917ccba56c זה} 

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

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

חברים [2] {חבר [192.168.1.105]: 5701 - 899898be-b8aa-49aa-8d28-40917ccba56c חבר [192.168.1.105]: 5702 - d6b81800-2c78-4055-8a5f-7f5b65d49f30 זה}

4.2. צור מבוזר מַפָּה

לאחר מכן, בואו ליצור מבוזר מַפָּה. אנו זקוקים למופע של HazelcastInstance נוצר קודם כדי לבנות מבוזר מַפָּה שמתארך java.util.concurrent.ConcurrentMap מִמְשָׁק.

מפת מפה = hazelcastInstance.getMap ("נתונים"); ...

לבסוף, בואו נוסיף כמה ערכים ל- מַפָּה:

FlakeIdGenerator idGenerator = hazelcastInstance.getFlakeIdGenerator ("newid"); עבור (int i = 0; i <10; i ++) {map.put (idGenerator.newId (), "הודעה" + i); }

כפי שניתן לראות לעיל, הוספנו 10 רשומות ל- מַפָּה. השתמשנו FlakeIdGenerator כדי להבטיח שנקבל את המפתח הייחודי למפה. לפרטים נוספים אודות FlakeIdGeneratorנוכל לבדוק את הקישור הבא.

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

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

4.3. צור לקוח Java של Hazelcast

לקוח Hazelcast מאפשר לנו לבצע את כל פעולות ה- Hazelcast מבלי להיות חבר באשכול. הוא מתחבר לאחד מחברי האשכול ומעביר אליו את כל פעולות האשכול.

בואו ניצור לקוח יליד:

ClientConfig config = ClientConfig חדש (); config.setClusterName ("dev"); HazelcastInstance hazelcastInstanceClient = HazelcastClient.newHazelcastClient (config); 

זה פשוט ככה.

4.4. גישה מופצת מַפָּה מלקוח Java

לאחר מכן נשתמש במופע של HazelcastInstance נוצר קודם כדי לגשת למופץ מַפָּה:

מפת מפה = hazelcastInstanceClient.getMap ("נתונים"); ...

עכשיו אנחנו יכולים לעשות פעולות על מַפָּה בלי להיות חבר באשכול. לדוגמה, בואו ננסה לחזור על הערכים:

עבור (ערך כניסה: map.entrySet ()) {...}

5. קביעת תצורה של Hazelcast

בחלק זה נתמקד כיצד להגדיר את רשת Hazelcast באמצעות הצהרה (XML) ותכנתית (API) ונשתמש במרכז הניהול של Hazelcast לניטור וניהול צמתים הפועלים.

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

אם אף אחד מהאמור לעיל לא עובד, Hazelcast טוענת את תצורת ברירת המחדל, כלומר hazelcast-default.xml שמגיע עם hazelcast.jar.

5.1. תצורת רשת

כברירת מחדל, Hazelcast משתמשת בקול שידור לצורך גילוי חברים אחרים שיכולים ליצור אשכול. אם multicast אינו דרך מועדפת לגילוי עבור הסביבה שלנו, אנו יכולים להגדיר את Hazelcast לאשכול TCP / IP מלא.

בואו להגדיר את אשכול TCP / IP באמצעות תצורה הצהרתית:

לחלופין, אנו יכולים להשתמש בגישת התצורה של Java:

Config config = Config new (); NetworkConfig network = config.getNetworkConfig (); network.setPort (5701) .setPortCount (20); network.setPortAutoIncrement (נכון); JoinConfig join = network.getJoin (); join.getMulticastConfig (). setEnabled (false); join.getTcpIpConfig () .addMember ("machine1") .addMember ("localhost"). setEnabled (true);

כברירת מחדל, Hazelcast תנסה לאגד 100 יציאות. בדוגמה שלעיל, אם אנו מגדירים את ערך היציאה כ- 5701 ומגבילים את ספירת היציאות ל- 20, כאשר חברים מצטרפים לאשכול, Hazelcast מנסה למצוא יציאות בין 5701 ל- 5721.

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

5.2. תצורת מרכז הניהול

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

כדי להשתמש במרכז הניהול של Hazelcast, נוכל לפרוס את גרסת mancenter.מִלחָמָה יישום לשרת / מיכל היישומים של Java או שאנחנו יכולים להפעיל את Hazelcast Center Center משורת הפקודה. אנו יכולים להוריד את ZIP Hazelcast האחרון מ- hazelcast.org. ה- ZIP מכיל את גרסת mancenter.מִלחָמָה קוֹבֶץ.

אנו יכולים להגדיר את צמתי Hazelcast על ידי הוספת כתובת ה- URL של יישום האינטרנט ל hazelcast.xml ואז יש לחברי Hazelcast לתקשר עם מרכז הניהול.

אז בואו ונתאר את מרכז הניהול באמצעות תצורה הצהרתית:

 // localhost: 8080 / mancenter 

כמו כן, הנה התצורה הפרוגרמטית:

ManagementCenterConfig manCenterCfg = ManagementCenterConfig חדש (); manCenterCfg.setEnabled (true) .setUrl ("// localhost: 8080 / mancenter");

6. מסקנה

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

כרגיל, כל הקוד עבור מאמר זה זמין ב- GitHub.