מתחייב וחיפוש NRT ב- SolrCloud

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

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

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

2. אינדקס ב- SolrCloud

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

  • כאשר לקוח מנסה להוסיף לאינדקס מסמך, המסמך מוקצה תחילה לרסיס על סמך ה- hash של ה- תְעוּדַת זֶהוּת של המסמך
  • הלקוח מקבל את כתובת ה- URL של המנהיג של הרסיס הזה מ- zookeeper, ולבסוף, בקשת האינדקס נעשית לאותה URL.
  • מנהיג הרסיסים מוסיף את המסמך לאינדקס לפני שהוא שולח אותו לעותקים
  • ברגע שהמנהיג מקבל אישור מכל העותקים הפעילים והמתאוששים, הוא מחזיר אישור ליישום הלקוח לאינדקס

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

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

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

3. מתחייב ב- SolrCloud

א לְבַצֵעַ פירושו של פעולה לסיים את השינוי ולהמשיך את השינוי בדיסק. SolrCloud מספקת שני סוגים של פעולות התחייבות, כלומר. התחייבות והתחייבות רכה.

3.1. התחייב (קשה לבצע)

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

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

פעולת ההתחייבות יכולה להיעשות אך ורק על ידי הלקוח על ידי התקשרות ל לְבַצֵעַ ממשק API:

מחרוזת zkHostString = "zkServer1: 2181, zkServer2: 2181, zkServer3: 2181 / solr"; SolrClient solr = חדש CloudSolrClient.Builder () .withZkHost (zkHostString) .build (); SolrInputDocument doc1 = SolrInputDocument חדש (); doc1.addField ("id", "123abc"); doc1.addField ("תאריך", "14/10/2017"); doc1.addField ("book", "to kill a mockingbird"); doc1.addField ("מחבר", "הארפר לי"); solr.add (doc1); solr.commit ();

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

3.2. SoftCommit

Softcommit נוספה החל מ- Solr 4 ואילך, בעיקר כדי לתמוך בתכונת NRT של SolrCloud. זהו מנגנון לחיפוש מסמכים בזמן אמת כמעט על ידי דילוג על ההיבטים היקרים של התחייבויות קשות.

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

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

תכונה זו מעניקה ל- SolrCloud את העוצמה של חיפוש בזמן אמת כמעט, שכן ניתן לעשות חיפוש במסמכים חדשים גם מבלי לבצע אותם. ניתן להפעיל Softcommit רק כ autoSoftCommit על ידי ציון זה בס 'olrconfig.xml קובץ, ראה סעיף 3.4.

3.3. התחייבות אוטומטית ו- Autosoftcommit

ה solrconfig.xml קובץ הוא אחד מקבצי התצורה החשובים ביותר ב- SolrCloud. הוא נוצר בזמן יצירת האוסף. כדי לאפשר התחייבות אוטומטית אוֹ autoSoftCommit, עלינו לעדכן את החלקים הבאים בקובץ:

 10000 30000 נכון 6000 1000 

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

maxDocs: מספר העדכונים שהתרחשו מאז ההתחייבות האחרונה ולאחריהם ההתחייבות / ההתחייבות הבאה צריכה להתרחש.

openSearcher: מאפיין זה אומר לסול אם לפתוח מחפש חדש לאחר פעולת התחייבות או לא. אם זה נָכוֹן, לאחר התחייבות, המחפש הישן נסגר, ומחפש חדש נפתח, מה שהופך את המסמך המחויב לגלוי לחיפוש, אם זה שֶׁקֶרהמסמך לא יהיה זמין לחיפוש אחרי ההתחייבות.

4. קרוב לחיפוש בזמן אמת

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

התחייבויות רגילות הן יקרות, ולכן התחייבויות רכות שימושיות. אך מכיוון ש- softcommit אינו ממשיך במסמכים, עלינו להגדיר את ההתחייבות האוטומטית maxTime מרווח (או maxDocs) לערך סביר, תלוי בעומס אליו אנו מצפים.

4.1. זמן אמת G.etס

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

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

עם זאת, כמו כל הדברים הטובים מדי, יש כאן מלכוד. אנחנו צריכים להעביר את תְעוּדַת זֶהוּת של המסמך ב לקבל שיחת API. כמובן, אנו יכולים לספק שאילתות סינון אחרות יחד עם ה- תְעוּדַת זֶהוּת, אבל בלי תְעוּדַת זֶהוּת, השיחה לא עובדת:

// localhost: 8985 / solr / myCollection / get? id = 1234 & fq = name: baeldung

5. מסקנה

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

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

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


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