Yandex פרסמה את קוד המקור של Userver, מסגרת ליצירת אפליקציות ב-C++

Yandex פרסמה את קוד המקור של המסגרת תצוגת משתמש, המאפשר לך ליצור יישומי C++ טעונים מאוד שעובדים במצב אסינכרוני. המסגרת נבדק בהעלאות ברמת Yandex ומשמש בשירותים כמו Yandex Go, Lavka, Delivery, Market ופינטק.

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

היום אנו מכריזים על שחרור מסגרת המשתמשים בקוד פתוח לבניית יישומים בעומס גבוה. עבורנו זו דרך חשובה לחלוק את הניסיון בפיתוח שירותי מיקרו שצברנו. הנה קישור למאגר GitHub עם קוד מקור, תיעוד, דוגמאות, תבנית ליצירת שירותים משלך (עם CI מוגדר, סביבת בנייה ובדיקה), ושירות תצורה דינמי. כל זה משוחרר תחת רישיון Apache 2.0.

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

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

לגבי ההרכב, מוזכר ש מנהלי התקנים לעבודה אסינכרונית עם DBMS כלולים (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), לקוחות ושרתים הפועלים באופן אסינכרוני עבור פרוטוקולים שונים (HTTP, HTTPS, GRPC, TCP, UDP, TLS), פרימיטיבים ברמה נמוכה לניהול סנכרון וגישה ליכולות המערכת וכן רכיבים ברמה גבוהה לעבודה עם מטמון, משימות, נעילות מבוזרות, מעקב, מדדים, סטטיסטיקות ונתונים בפורמטים של JSON/YAML/BSON, בנוסף הוא תומך בשינוי תצורת השירות תוך כדי תנועה, מבלי לעצור זאת.

לגבי החסרונות של אדריכלות מונוליטית מוזכרים הבאים:

  • איחוד כל הקוד בתוך מונוליט. עם בסיס קוד גדול, בנייה ובדיקה יכולים לקחת שעות, והפריסה יכולה לקחת יום שלם.
  • אינטראקציה הדוקה של חלקים שונים של הקוד. צריך להשקיע מאמצים רבים בביקורות קוד כדי שהממשקים לחלקים השונים של המונוליט לא יהפכו לבלגן.
  • שְׁבִירוּת. שינוי במודול אחד יכול לשבור מודול אחר.
  • תחומי אחריות מטושטשים. במהלך תהליך הפיתוח, חלקים רבים בקוד מכלילים, מתחילים להיות בשימוש על ידי צוותים שונים, וזה טוב. אך כתוצאה מכך, לא ברור מי אחראי למודול המתקבל: המחברים הראשונים; אלה שביצעו הכי הרבה עריכות; או אלה שמשתמשים באופן הפעיל ביותר במודול בקוד.

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

בסופו של דבר למעוניינים לדעת יותר על כךשים לב ש-Userver נתמך כרגע עבור אובונטו, דביאן, פדורה, Arch, Gentoo, מערכות macOS, x86, x86_64, AArch64, ארכיטקטורות Arm, מהדרים GCC 8+ ו-Clang 9+, תקני C++17, C++20, C ++23.

קוד שרת כתוב ב-C++ ו זה פתוח תחת רישיון Apache 2.0 וניתן להתייעץ איתו מה- הקישור הבא.


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.