מבוא לתור כרוניקה

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

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

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

במאמר מהיר זה, נבחן את מערך הפעולות הבסיסי.

2. תלות Maven

עלינו להוסיף את התלות הבאה:

 כרוניקה net.openhft 3.6.4 

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

3. אבני בניין

ישנם שלושה מושגים האופייניים לתור הכרוניקה:

  • קטע - הוא מיכל נתונים
  • Appender - appender משמש לכתיבת נתונים
  • טריילר - משמש לקריאת נתונים ברצף

נשמור את חלק הזיכרון ל קרוא וכתוב פעולות באמצעות כְּרוֹנִיקָה מִמְשָׁק.

הנה הקוד לדוגמה ליצירת מופע:

קובץ queueDir = Files.createTempDirectory ("כרוניקה-תור"). ToFile (); כרוניקה כרוניקה = ChronicleQueueBuilder.indexed (queueDir) .build ();

נצטרך ספריה בסיסית בה התור יימשך רשומות בקבצים הממופים זיכרון.

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

4. כתיבה לתור

כדי לכתוב את הפריטים לתור, נצטרך ליצור אובייקט של ExcerptAppender בשיעור באמצעות כְּרוֹנִיקָה למשל. הנה קוד לדוגמא לכתיבת ההודעות לתור:

הנה קוד לדוגמא לכתיבת ההודעות לתור:

ExcerptAppender appender = chronicle.createAppender (); appender.startExcerpt (); String stringVal = "שלום עולם"; int intal = 101; longVal ארוך = System.currentTimeMillis (); כפול כפול כפול = 90.00192091d; appender.writeUTF (stringValue); appender.writeInt (intValue); appender.writeLong (longValue); appender.writeDouble (doubleValue); appender.finish ();

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

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

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

5. קריאה מהתור

קריאת הערכים מ התור יכול להיעשות בקלות באמצעות ExcerptTrailer למשל.

זה בדיוק כמו איטרטור שאנו משתמשים בו כדי לחצות אוסף בג'אווה.

בואו נקרא ערכים מהתור:

Tailer של ExcerptTailer = chronicle.createTailer (); בעוד (tailer.nextIndex ()) {tailer.readUTF (); tailer.readInt (); tailer.readLong (); tailer.readDouble (); } tailer.finish ();

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

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

לבסוף, אנו מסיימים את הקריאה עם סיים ממשק API.

6. מסקנה

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

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

כמו תמיד, ניתן למצוא את כל קטעי הקוד ב- GitHub.


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