Wed Apr 01 2026
...
מערכת התחבורה האוטומטית של FastComments
הקדמה
מערכת התחבורה האוטומטית של FastComments (FARTS) היא שכבת התחבורה והשירות שלנו. FARTS עוזרת עם צפיפות, מנתבת תנועה בהתבסס על מיקום המשתמש ואולי גם על העומס בעתיד. היא מורכבת מכמה מערכות שונות, שכבת DNS עם מודעות גיאוגרפית, פרוקסי DB, שיחזור DB, ניהול תעודות SSL, פרוקסי הפוך, ו-CDN שמשתמש במטמון LRU בדיסק כדי למטcache נכסים בקצה.
Active-Active
הגרסה האחרונה של FART מכילה פרוקסי ושכבת שיחזור מובנית עבור מסד הנתונים שלנו. זה מאפשר ל-FastComments לפעול במצב פעיל-פעיל עם זמינות כתיבה גלובלית, מה שמבטיח שה-FARTS שלנו עקביים בסופו של דבר. פרטים נוספים כאן.
הגישה שלקחנו ממש בתחילת הדרך הייתה לבדוק אם אנחנו יכולים ליצור פורק פעיל-פעיל של MongoDB. אחד המהנדסים שלנו (Sloperators) הצליח להשלים זאת עם Opus 4.6, אולם החלטנו שהסיכון לעסקה זו גבוה יותר מאשר לבנות מערכת מבודדת משלהם.
Rust בקנה מידה
חלק מהמוטיבציה ליצירת FART הייתה להחליף כמה שירותים קיימים שנכתבו ב-Java. לאחר שהשקענו בזה קצת זמן, החלטנו למזג את כל השירותים הללו לשירות אחד ב-Rust כדי להפחית את עלות הזמן של הריצה. זה היה tradeoff מקובל מכיוון שאנחנו לא מפרסמים את FART לעיתים קרובות. FART מתבצע עם LTO, אז אנחנו יכולים באמת לתת לו "לרוץ".
השקענו הרבה זמן בניסיון ללטש את מערכת ה-Java הישנה עם GCs שונים וכו’, ולבסוף פשוט החלטנו שה-Rust האסינכרוני + Mimalloc ביצע באופן משמעותי טוב יותר על אותו חומרה עם דרישות זיכרון נמוכות הרבה יותר, אז המעבר היה לא מסובך.
ה-Rust התגלה כאמצעי נהדר לקוד הקשור לרשת שמשתמש בהמות משותף ונעילות. עם זאת, הוא אינו חסין מבעיות בזמן ריצה. אולי כדאי לציין שהקוד שנכתב על ידי LLMs ב-Rust נוטה יחסית לנעילות מתות, ודרך לעקוף את זה היא לעצב מערכות כמכונות מצב שקל להבין, במקום פשוט ערבובות של async/await.
ה-FART Master
כל פריסה מכילה את ה-FART Master שלה. המאסטר אחראי על תיאום של קרונס, webhookים, וכן הלאה.
השפעה על הלקוחות
מערכת ה-FART הייתה בייצור במשך כשנה עכשיו. רק לאחרונה עברנו למודל פריסת Active-Active. יש השפעה כלשהי על קריאת הכתיבות שלכם ברחבי האזורים, אשר מכוסה בפוסט הבלוג המקושר לעיל וב-במסמכים.
FART פועלת בשקט ברקע, אם כי תמיד מרגישים את נוכחותה. אנו מקווים שתמצאו שהמערכות שלנו מהירות יותר עבור המקרים השימושיים שלכם (בעיקר פעולות משתמש שיכולות להוביל לשינויים בנתונים יהיו מהירות יותר בכמה אזורים).
פריסות
הפריסה משתמשת באותה מערכת תיאום גלובלית שאנחנו משתמשים בה במטרה לפרוס את השירותים עצמם. המדריך של FART ממליץ ל-Sloperators לא לסמוך על פריסה, תמיד לאמת את התוכן לפני השחרור.
לאחר פריסת ה-FART, התראות עוקבות מדיניות הסלמה: קודם החדר, אחר כך הקומה, אחר כך הבניין.
לסיכום
אומרים שהאינטרנט הוא סדרת צינורות, אבל למעשה מדובר בסדרת טיוטות.
כמו בכל שחרור מרכזי, אנחנו שמחים שנוכל לקחת את הזמן כדי לבצע אופטימיזציה, לבדוק ולשחרר נכון את השינוי הזה. אנחנו נרגשים ממה שמגיע בהמשך.
FastComments אמורה להתרחב טוב יותר וליהנות מזמן פעילות טוב יותר בטווח הארוך עם עבודה זו. כפי שאומר ספר ההפעלה של FART: "אם אתה מריח משהו, תגיד משהו". תודיעו לנו למטה אם תגלו בעיות כלשהן.
