האם WhatsApp משתמש בשקע
הבנת האדריכלות והעיצוב של Whatsapp
סיכום
הצפנה מקצה לקצה של WhatsApp עשויה להיות לא מוגנת פרטיות כמו שאפשר היה לקוות, למרות האבטחה התיאורטית שלה. מאמר זה בוחן את האדריכלות ואת עיצוב המערכת של WhatsApp, ושופך אור על פעולותיה הפנימיות.
נקודות מפתח
1. ROXDAVIROX/SOCKECT-WHATSAPP: התחייבות זו אינה שייכת לשום סניף במאגר זה ועשויה להיות ממזלג מחוץ למאגר.
2. שם כבר נמצא בשימוש: יצירת סניף עם שם שכבר קיים כתג עשוי להוביל להתנהגות בלתי צפויה. המשתמש מתבקש לאשר את יצירת הסניף.
3. השקת שולחן העבודה של GitHub: אם שום דבר לא קורה, מומלץ למשתמש להוריד את שולחן העבודה של GitHub ולנסות שוב.
4. הפעלת xcode: אם שום דבר לא קורה, מומלץ למשתמש להוריד xcode ולנסות שוב.
5. השקת קוד Visual Studio: המשתמש מתבשר כי מרחב הקוד שלהם ייפתח ברגע שהוא יהיה מוכן. אם הייתה בעיה להכין את מרחב הקוד, הם מעודדים לנסות שוב.
6. התחייבות אחרונה: מוצגים פרטים על ההתחייבות האחרונה שנעשתה במאגר.
7. סטטיסטיקות GIT: ניתן סקירה כללית של הסטטיסטיקה של GIT למאגר.
8. קבצים: מידע על הקבצים במאגר מוצג, כולל כישלון לטעון את מידע ההתחייבות האחרון.
9. תקרא אותי.MD: תיאור קצר של ספריית Baileys, שהיא צומת טהור.יישום JS של ממשק ה- API של WhatsApp ללא צורך בסלניום או בכל דפדפן אחר. הוא משתמש ישירות ב- WebSocket כדי לממשק עם WhatsApp Web.
10. שימוש ביילי: הוראות כיצד להתקין Baileys מ- NPM ולייבא אותו לקוד ניתנות.
שאלות ותשובות:
1. מה המטרה של התחייבות Roxdavirox/Socket-WhatsApp?
מטרת התחייבות זו אינה ברורה מכיוון שהיא אינה שייכת לשום סניף במאגר ועשויה להיות ממזלג מחוץ למאגר.
2. איזה נושא פוטנציאלי עשוי להתעורר בעת יצירת סניף עם שם שכבר קיים כתג?
יצירת סניף עם שם שכבר קיים כתג יכול לגרום להתנהגות בלתי צפויה. רצוי לאשר לפני יצירת סניף כזה.
3. מה צריך לעשות אם שום דבר לא קורה בעת הפעלת שולחן העבודה של Github?
אם שום דבר לא קורה בעת השקת שולחן העבודה של Github, מומלץ להוריד אותו ולנסות שוב.
4. מה צריך לעשות אם שום דבר לא קורה בעת הפעלת xcode?
אם שום דבר לא קורה בעת השקת XCode, מוצע להוריד אותו ומנסה שוב.
5. איזו פעולה יש לנקוט אם יש בעיה בהכנת Codespace בעת השקת קוד Visual Studio?
אם יש בעיה בהכנת Codespace בעת הפקת קוד Visual Studio, עדיף לנסות שוב.
6. איזה מידע מספק את החלק “המתחייב האחרון”?
החלק “התחייבות אחרונה” מציג פרטים על ההתחייבות האחרונה שנעשו למאגר.
7. מה מציג קטע “סטטיסטיקות GIT”?
החלק “סטטיסטיקות GIT” מספק סקירה כללית של הסטטיסטיקה של GIT עבור המאגר.
8. איזה מידע מוצג בסעיף “קבצים”?
החלק “קבצים” מציג מידע על הקבצים במאגר, כולל כל כישלון לטעון את מידע ההתחייבות האחרון.
9. מה זה ביילי?
Baileys הוא צומת טהור.יישום JS של ממשק ה- API של Whatsapp Whatsapp. זה מאפשר תקשורת ישירה עם WhatsApp Web באמצעות שקע Websectue, ללא צורך בדפדפן כמו סלניום.
10. כיצד ניתן להתקין ולייבא ביילי?
ניתן להתקין Baileys מ- NPM באמצעות הפקודה “NPM התקנה github: adiwajshing/baileys.לאחר מכן ניתן לייבא אותו לקוד באמצעות “const whatsappweb = דורש (‘baileys’).”
ניסיון והמלצות אישיות:
מניסיוני האישי, הבנת הארכיטקטורה ועיצוב המערכת של WhatsApp הייתה מכריעה בפיתוח יישומים שמשתלבים עם הפלטפורמה. ביילי, בהיותו צומת טהור.יישום JS, הקל הרבה יותר על אינטראקציה עם Whatsapp Web ללא צורך בכלי אוטומציה של דפדפן כמו סלניום. אני ממליץ מאוד למנף ספריות כאלה לכל מי שמחפש לבנות יישומים על גבי התשתית של WhatsApp.
הבנת הארכיטקטורה של Whatsapp ועיצוב המערכת
אמנם הצפנה מקצה לקצה עשויה לגרום לך להרגיש בטוחה בתיאוריה. בפועל, הצפנה מקצה לקצה היא’לא להגנה על פרטיות כמו שאפשר היה לקוות.
ROXDAVIROX/SOCKECT-WHATSAPP
התחייבות זו אינה שייכת לשום סניף במאגר זה, והיא עשויה להשתייך למזלג מחוץ למאגר.
החלף ענפים/תגיות
תגי סניפים
לא יכול היה להעמיס ענפים
אין מה להראות
לא יכול היה לטעון תגיות
אין מה להראות
שם כבר נמצא בשימוש
תג כבר קיים עם שם הסניף שסופק. פקודות GIT רבות מקבלות שמות תגיות וגם סניפים, ולכן יצירת סניף זה עלולה לגרום להתנהגות בלתי צפויה. האם אתה בטוח שאתה רוצה ליצור את הענף הזה?
בטל צור
- מְקוֹמִי
- מרחבי קוד
Https github cli
השתמש ב- Git או Checkout עם SVN באמצעות כתובת האתר האינטרנט.
לעבוד מהר עם ה- CLI הרשמי שלנו. למידע נוסף על ה- CLI.
נדרשת חתימה
אנא היכנס לשימוש ב- Codespaces.
השקת שולחן העבודה של GitHub
אם שום דבר לא קורה, הורד את שולחן העבודה של Github ונסה שוב.
השקת שולחן העבודה של GitHub
אם שום דבר לא קורה, הורד את שולחן העבודה של Github ונסה שוב.
הפעלת xcode
אם שום דבר לא קורה, הורד xcode ונסה שוב.
השקת קוד Visual Studio
מרחב הקוד שלך ייפתח לאחר שתוכן.
הייתה בעיה להכין את מרחב הקוד שלך, אנא נסה שוב.
התחייבות אחרונה
סטטיסטיקות GIT
קבצים
נכשלה לטעון מידע על התחייבות אחרונה.
הודעת התחייבות אחרונה
התחייב זמן
תקרא אותי.MD
API של WhatsApp מהנדס הפוך בצומת טהור.JS. Baileys אינו מחייב את סלניום או כל דפדפן אחר כדי להיות ממשק עם WhatsApp Web, הוא עושה זאת ישירות באמצעות WebSocket.
תודה לסיגלור על כתיבת המדריך להנדסת הפוך Whatsapp Web ותודה לחרוזים על ללכת יישום מחדש.
Baileys סופר קל לשימוש:
- התקן מ- NPM באמצעות NPM התקן github: adiwajshing/baileys
- ואז ייבא את הקוד שלך באמצעות
const WhatsAppweb = לִדרוֹשׁ(('בייליס')
לתת לָקוּחַ = חָדָשׁ WhatsAppweb(() לָקוּחַ.לְחַבֵּר(()
לָקוּחַ.מטפלים.מחובר = (() => / * כשאתה מאומת בהצלחה עם שרתי האינטרנט WhatsApp */ >
לָקוּחַ.מטפלים.OnUnreadMessage = ((הוֹדָעָה) => / * נקרא כאשר יש לך הודעה ממתנה שלא נקראה או לקבל הודעה חדשה */ >
לָקוּחַ.מטפלים.Onerror = ((שְׁגִיאָה) => / * נקרא כאשר הייתה שגיאה */ >
לָקוּחַ.מטפלים.נוכחות = ((תְעוּדַת זֶהוּת, נוכחות) => / * נקרא כשאתה מקבל עדכון על נוכחותו של מישהו */ >
לָקוּחַ.מטפלים.Ondisconnect = (() => / * נקרא כאשר האינטרנט מתנתק */ >
לָקוּחַ.מטפלים.OnUnreadMessage = ((M) => const סוג הודעה = לָקוּחַ.getMessageType((M.הוֹדָעָה) // קבל איזה סוג הודעה מדובר - טקסט, תמונה, וידאו >
לָקוּחַ.מטפלים.OnUnreadMessage = ((M) => const סוג הודעה = לָקוּחַ.getMessageType((M.הוֹדָעָה) // קבל איזה סוג הודעה מדובר - טקסט, תמונה, וידאו // אם ההודעה אינה הודעת טקסט אם ((סוג הודעה !== WhatsAppweb.סוג הודעה.טֶקסט && סוג הודעה !== WhatsAppweb.סוג הודעה.ordertext) לָקוּחַ.decodemediamessage((M.הוֹדָעָה, "שם קובץ") // סיומת הוחל אוטומטית .לאחר מכן ((מטא => לְנַחֵם.עֵץ((M.מַפְתֵחַ.RemoteJid + "נשלח מדיה, נשמר ב:" + מטא.שם קובץ)) .לתפוס ((לִטְעוֹת => לְנַחֵם.עֵץ(("שגיאה בפענוח הודעת:" + לִטְעוֹת)) > >
לָקוּחַ.שלח הודעת טקסט((תְעוּדַת זֶהוּת, txtmessage)
או אם ברצונך לצטט הודעה אחרת:
לָקוּחַ.שלח הודעת טקסט((תְעוּדַת זֶהוּת, txtmessage, quotedmessage)
לָקוּחַ.SendMediamessage((תְעוּדַת זֶהוּת, Mediabuffer, סוג המדיה, מידע)
- ניתן לייצר את התמונה הממוזערת באופן אוטומטי לתמונות ומדבקות.
- MediaBuffer הוא רק חיץ המכיל את תוכן המדיה שאתה רוצה לשלוח
- Mediatype מייצג את סוג ההודעה שאתה שולח. זה יכול להיות אחד מהפעולות הבאות:
[ WhatsAppweb.סוג הודעה.תמונה, // הודעת תמונה WhatsAppweb.סוג הודעה.וִידֵאוֹ, // הודעת וידאו WhatsAppweb.סוג הודעה.שֶׁמַע, // הודעת שמע WhatsAppweb.סוג הודעה.מַדבֵּקָה // הודעת מדבקה ]
מידע = כּוֹתֶרֶת: "שלום לך!", // הכיתוב לשלוח עם התקשורת (לא ניתן לשלוח עם מדבקות) תמונה ממוזערת: ריק, /* צריך להיות בסיס 64 מקודד JPEG אם אתה רוצה לשלוח אגודל מותאם אישית, או הגדר כדי null אם אינך רוצה לשלוח תמונה ממוזערת. אל תזין שדה זה אם ברצונך ליצור אוטומטית אגודל */ mimetype: "יישום/PDF", /* ציין את סוג המדיה (אופציונלי עבור כל סוגי המדיה למעט מסמכים), עבור קבצי PDF => הגדר ל"יישום/PDF ", עבור קבצי txt => הגדר ל"יישום/txt " וכו. */ GIF: נָכוֹן // ישים רק על הודעות וידאו, אם יש להתייחס לסרטון כ- GIF >
לָקוּחַ.SendReadReceipt((תְעוּדַת זֶהוּת, הודעה)
לָקוּחַ.UpdatePresence((תְעוּדַת זֶהוּת, נוכחות)
זה מאפשר לאדם עם מזהה לדעת את הסטטוס שלך. שם נוכחות יכולה להיות אחת מהפעולות הבאות:
סטָטִי נוכחות = זמין: "זמין", // "באינטרנט" אינו זמין: "אינו זמין", // במצב לא מקוון הַלחָנָה: "הַלחָנָה", // "הקלדה. " הקלטה: "הקלטה", // "הקלטה. " מושהה: "השתהה" // אין לי מושג >
const Authjson = לָקוּחַ.Base64ENCODEDAUTHINFO(()
const Authjson = JSON.לְנַתֵחַ(( fs.ReadFilesync(("Auth_info.json ") ) לָקוּחַ.התחברות((Authjson)
לָקוּחַ.isonwhatsapp (("[CountryCode] [som10digitnumber] @s.WhatsApp.נֶטוֹ") .לאחר מכן ((((קיים, תְעוּדַת זֶהוּת) => אם ((קיים) לְנַחֵם.עֵץ((תְעוּדַת זֶהוּת + "נמצא ב- WhatsApp") > אַחֵר לְנַחֵם.עֵץ((תְעוּדַת זֶהוּת + "לא נמצא ב- WhatsApp :(") > >)
האם בדוק והפעלה דוגמה.JS כדי לראות שימוש דוגמה בכל הפונקציות הללו. כדי להריץ את סקריפט הדוגמה, הורד או שיבט את הרפו ואז הקלד את הדברים הבאים בטרמינל:
- נתיב CD/to/baileys/דוגמה
- דוגמה לצומת.JS
אני בשום אופן לא מזוהה עם WhatsApp. זה נכתב למטרות חינוכיות. השתמש לפי שיקול דעתך.
הבנת האדריכלות והעיצוב של Whatsapp
האם תהית אי פעם איך WhatsApp עובד? אָנוּ’VE למד את תכנון המערכת והארכיטקטורה של WhatsApp ברמה הגבוהה’S טכנולוגיה. צלול פנימה כדי לראות את מה שלמדנו.
תג סוג תוכן
תוכן העניינים
לאיזה אפליקציה יש מעל 2.5 מיליארד משתמשים פעילים, יותר מחמישה מיליארד הורדות, והיא האפליקציה הפופולרית ביותר בלמעלה ממאה מדינות?
רמז: בדוק את כותרת המאמר.
כן את זה’s נכון. WhatsApp הוא שירות ההודעות הפופולרי ביותר בעולם. לדברי מארק צוקרברג, למעלה ממאה מיליארד הודעות נשלחות על WhatsApp מדי יום.
עם תנועה כה כמעט-אסטרונומית, אפשר’לא עוזר אך לתהות איך WhatsApp עובד – עיצוב המערכת שלה, ארכיטקטורת השרתים, הטכנולוגיה . איך זה מטפל בכל כך הרבה משתמשים והודעות במקביל? איזה סוג של מסגרות ושפות תכנות מאפשרות סוג כזה של קנה מידה? איך הם שומרים על כל אבטחת הנתונים? כל כך הרבה שאלות!
במאמר זה אנו הולכים לצלול עמוק ל- WhatsApp’ארכיטקטורה ועיצוב מערכות. אָנוּ’אענה על כל השאלות שהוזכרו לעיל ועוד.
אם אתה’אי פעם תהה על הכלב העליון בעולם אפליקציית הצ’אט, המשך לקרוא.
הצהרת אחריות: סרקנו את האינטרנט כדי לאסוף כל משאב בעיצוב ארכיטקטורה של WhatsApp והרכבנו וסיכמנו אותו כאן. למיטב ידיעתנו, מידע זה מדויק. עם זאת, מכיוון שחברות אכן מעדכנות את ערימת הטכנולוגיה שלהן לעתים קרובות, מידע זה נתון לשינוי.
ערימת טק קדמית של Whatsapp
לתת’התחל עם החזית ועבד את דרכנו לחומרה על ה- Backend.
החלק הראשון של עיצוב מערכת WhatsApp שמשתמש מתקשר איתו הוא אפליקציית הסלולר או האינטרנט. WhatsApp תומך כמעט בכל הפלטפורמות. יש לו אפליקציית iOS, אפליקציית אנדרואיד, אפליקציית שולחן עבודה, אפליקציית אינטרנט ואפליקציית Windows Phone. עד 2017, אתה יכול אפילו להשתמש ב- WhatsApp ב- BlackBerry.
עם כל כך הרבה פלטפורמות נתמכות, אולי ניחשתם ש- WhatsApp תהיה אפליקציה היברידית. אבל, למעשה, זה’לא. הם למעשה בנו אפליקציה מקורית לכל פלטפורמה. להלן רשימה של כל הפלטפורמות הנתמכות עם השפה / ים הקדמית ששימשו לבניית כל אחת מהן:
איך WhatsApp מאחסנים צ’אט באופן מקומי
בנוסף לשפת התכנות עצמה, טכנולוגיה חשובה נוספת בה WhatsApp משתמשת בחזית היא מסד נתונים של SQLITE. SQLITE הוא מסד נתונים עצמאי, עצמאי, יחסית, שנועד להיות מוטמע ביישומים-מה שאומר שהוא חי במכשיר שלך. WhatsApp משתמש בו כדי לאחסן שיחות. מכיוון שזה יהיה בזבוז משאבים להוריד את כל ההודעות מהענן בכל פעם שאתה פותח את האפליקציה, WhatsApp בוחר לאחסן את ההודעות באופן מקומי. למעשה, WhatsApp מאחסן הודעות רק עד שהן מתקבלות בשלב זה הן מוסרות.
באילו פרוטוקולי הודעות משתמשים ב- WhatsApp?
WhatsApp משתמשת בגרסה שונה מאוד של XMPP בשרת ejabberd (עוד על כך בהמשך) כדי לתקשר עם הלקוחות.
ה- XMPP על הלקוח פותח שקע SSL לשרתי WhatsApp. כל ההודעות שנשלחו עומדות בתור בשרתים עד שהלקוח ייפתח או מתחבר מחדש לשקע זה כדי לאחזר את ההודעות. ברגע שהלקוח מאוחזר הודעה בהצלחה, סטטוס הצלחה נשלח חזרה לשרת WhatsApp. לאחר מכן השרת מעביר סטטוס זה לשולח המקורי; ליידע אותם שההודעה התקבלה על ידי הוספת “סימן צ’ק” סמל ליד ההודעה שנשלחה בהצלחה.
קחו בחשבון שלמרות ש- XMPP הוא אחד מפרוטוקולי ההודעות הפופולריים ביותר לאפליקציות צ’אט, זו בהחלט לא האפשרות היחידה לבחירת פרוטוקול העברת הודעות.
טכנולוגיית הצפנת WhatsApp
WhatsApp משתמש בהצפנה מקצה לקצה. באופן אידיאלי, פירוש הדבר שרק השולח המקורי והנמען האמיתי של ההודעה יכולים לקרוא את ההודעה בטקסט רגיל.
כשאתה שולח הודעה, הוא מקבל מוצפן באמצעות פרוטוקול הצפנה ספציפי (עוד על זה הבא). לאחר מכן WhatsApp מאחסן את ההודעה המוצפנת הזו בשרתים שלהם עד שהיא’s נמסר למקבל. עם המסירה, המכשיר של הנמען מפענח את ההודעה בחזרה להודעה קריאה ופלאנטית באמצעות מקש קריפטוגרפי ייחודי. על פני כל התהליך הזה, WhatsApp לעולם לא יודע את תוכן ההודעה שלך.
WhatsApp’טכנולוגיית הצפנה S נקראת פרוטוקול הצפנת אות, שפותח על ידי לחישות מערכת פתוחות להיות פרוטוקול הצפנה מודרני, קוד פתוח, חזק למערכות העברת הודעות אסינכרוניות.
אמנם הצפנה מקצה לקצה עשויה לגרום לך להרגיש בטוחה בתיאוריה. בפועל, הצפנה מקצה לקצה היא’לא להגנה על פרטיות כמו שאפשר היה לקוות.
ערימת טק אחורית של Whatsapp
לתת’זה עובר אל ה- Backend.
למיטב ידיעתנו, עיצוב המערכת הנוכחית של WhatsApp נראה כך:
- ארלנג היא שפת התכנות העיקרית
- FreeBSD היא מערכת ההפעלה
- Ejabberd הוא שרת היישומים של XMPP
- קֶרֶן היא המכונה הווירטואלית מבוססת ארלנג
- מנסיה הוא מסד הנתונים שלהם מבוסס ארלנג
- Yaws הוא שרת האינטרנט המולטימדיה שלהם
לתת’חקור כמה מההיבטים היותר מעניינים של WhatsApp’ארכיטקטורה אחורית:
ארלנג
הבחירה של WhatsApp בשפת תכנות היא בחלקו הגדול מה שמאפשר לה לעבוד על סולם כה קולוסאלי.
ארלנג היא שפת תכנות פונקציונלית המכוונת לבניית מערכות במקביל, מדרגיות ואמינה. הוא משתמש במודל מבוסס תהליכים שנקרא “מודל שחקן” בו תהליכים קטנים ומבודדים מתקשרים זה עם זה באמצעות הודעות. תהליכים אלה יכולים ליצור תהליכים חדשים, לשלוח הודעות ולשנות את מצבם בתגובה לקבלת הודעות.
המאפיין המבוסס על תהליכים מעניק לארלנג את המקביל, המדרגיות והאמינות הגבוה ביותר שלו.
תהליכים אלה יכולים גם לתקשר עם תהליכים מחוץ לליבה עליהם הוא פועל. זה מקל על קנה המידה של המערכת אופקית (על ידי הוספת מכונות נוספות) או אנכית (על ידי הוספת ליבות נוספות). לבסוף, מכיוון שהתהליכים יכולים לתקשר זה עם זה, וחשוב מכך, להפעיל מחדש זה את זה, זה’S קל לבנות מערכות ריפוי עצמי. אם באג קורס תהליך, תהליך אחר יכול להפעיל אותו מחדש.
FreeBSD
בחירה טכנית מעניינת של מייסדי WhatsApp בחרה את FreeBSD כמערכת הפעלה במקום מערכת בשימוש נרחב יותר (כמו לינוקס).
בריאן אקטון, אחד המייסדים של WhatsApp, אמר זאת בראיון ל- Wired על ההחלטה:
“לינוקס היא חיה של מורכבות. ל- FreeBSD יש את היתרון של להיות הפצה יחידה עם אוסף יציאות טוב במיוחד.”
כמו כן, כשמדובר בביצועים גולמיים, במיוחד ביחס לעומס המערכת לכל מנות, אף מערכת הפעלה אחרת לא יכולה לנצח את FreeBSD.
עם זאת, כשמדובר בזה, הסיבה האמיתית שהם החליטו להשתמש ב- FreeBSD היא ככל הנראה מכיוון שלשני המייסדים הייתה היסטוריה ארוכה של עבודה איתה ב- Yahoo!.
Ejabberd
Ejabberd הוא שרת XMPP עם קוד פתוח שנכתב בארלנג. WhatsApp משתמשת בגרסה שונה של XMPP כפרוטוקול שלה לטיפול בהודעות הודעות. אפילו שרת ejabberd בו WhatsApp משתמש בהתאמה אישית רבה כדי לייעל את ביצועי השרת.
מה’מטרת אג’ברד?
ובכן, הוא מטפל בהיבטי ניתוב ההודעות, המסירות והיבטי ההודעות המיידיות הכלליות של האפליקציה. התכונות של Ejabberd כוללות:
- העברת הודעות אחד על אחד
- צ’אט קבוצתי
- אחסון והעברה של הודעות לא מקוונות
- רשימת אנשי קשר ונוכחות
מנסיה
כדי לאחסן נתונים והודעות זמניות, WhatsApp משתמש ב- DBMS מבוסס ארלנג ומופץ (מערכת ניהול מסדי נתונים) בשם Mnesia. DBM’t כמו:
- בדיקת מפתח/ערך בזמן אמת
- סובלנות גבוהה לתקלות
- תצורה מחדש דינמית
- חפצים מורכבים
Mnesia הוא גם ה- DBM היחידים שכן’s כתוב בארלנג. זה כשלעצמו הוא יתרון מכיוון שאין הבדלים של מבנה נתונים בין ארלנג ביישום לארלנג ב- DBM. קידוד, אפוא, מהיר ומפורש יותר.
קֶרֶן
קרן, קיצור “בוגדן’מכונה מופשטת של ארלנג”, היא מכונה וירטואלית שמאחדת ומבצעת קוד מקור של ERLANG. הקורה מיועדת במיוחד ליישומים במקביל מאוד – מושלם עבור WhatsApp’מקרה שימוש. קֶרֶן’S רוטב סודי הוא תהליכים קלים משקל שאינו’T שתף זיכרון ומנוהלים על ידי מתזמנים. מתזמנים אלה יכולים לנהל מיליוני תהליכים על פני מספר ליבות. זה הופך את הקורה למדרגית מאוד ועמידה בפני כישלונות, כמו אלה הנגרמים על ידי עומסי תנועה גבוהים, עדכוני מערכת והפסקות רשת.
הקורה כל כך מכריעה לעיצוב מערכות WhatsApp, עד שצוות WhatsApp פרסם טלאים ותיקונים רבים לקוד המקור הליבה.
פַּטֶלֶת
Yaws (שרת אינטרנט נוסף) הוא שרת אינטרנט מבוסס Erlang שהוא אידיאלי לתוכן דינמי. WhatsApp משתמש בכהות לאחסון נתוני מולטימדיה. Yaws עצמה משתמשת ב- HTML5 WebSockets המפשטים תקשורת דו כיוונית על ידי הקמת חיבור אמין ומהיר בין השרת לאפליקציה. באמצעות שימוש בטכנולוגיה זו, WhatsApp מסוגל לשלוח ולקבל נתוני מולטימדיה על פני מיליארדי מכשירים – כמעט בזמן אמת.
רכיבי חומרה WhatsApp
בשנת 2017, ארבע שנים לאחר שנרכשה על ידי פייסבוק, WhatsApp הורד מ- IBM Softlayer’הענן והובא לפייסבוק’מרכזי נתונים קנייניים.
מה שאנחנו כן יודעים הוא שבשנת 2014 WhatsApp נדרש כ -550 שרתים ומעל 11,000 ליבות שניהלו את ארלנג. אנו גם יודעים ש- WhatsApp’בסיס המשתמשים היה “רק” כחצי מיליארד בשנת 2014 לעומת יותר משני מיליארד המשתמשים אליו הגיע בשנת 2020. לכן, עם הנתונים האלה בחשבון, אנו מאפשרים לך לדמיין כמה שרתים וליבות WhatsApp דורשים כעת. אנו מדמיינים שזה הרבה.
תרשים ארכיטקטורה של WhatsApp
הדרך הקלה ביותר לקבל הבנה מלאה של WhatsApp’עיצוב אדריכלות S הוא כמובן באמצעות דיאגרמת ארכיטקטורה של WhatsApp.
החל מהצד השמאלי יש לנו מספר לקוחות שונים (אפליקציות סלולריות ואינטרנט), שכל אחת מהן מארחת מסד נתונים מקומי של SQLITE לאחסון שיחות.
הלקוחות משתמשים ב- HTTP WebSocket. אבל, כפי שאתה יכול לראות, XMPP משמשת לשליחת קבצים אלה והודעות אחרות למשתמשים אחרים.
כאשר נשלחת הודעת XMPP, היא עוברת את סדרת הצעדים המתוארים לעיל. ראשית, זה נשלח ל- WhatsApp’S שרת Ejabberd המותאם אישית הפועל על Beam ו- FreeBSD. שרת Ejabberd שומר את ההודעה בטבלת מסד נתונים של Mnesia שם היא מכניסה לתור. כאשר המשתמש המקבל פותח את האפליקציה, ובכך מתחבר מחדש לשקע, ההודעה בתור מנותבת דרך שרת ejabberd ומועברת למקבל. לאחר אישור משלוח מוצלח, ההודעה נמחקת ממסד הנתונים של Mnesia.
סיכום
בזמן שאנחנו לא’לא יודע את המפרט המדויק של WhatsApp’S ארכיטקטורה טכנית ועיצוב מערכות, אנו יכולים לקבל רעיון טוב על סמך הטכנולוגיות ש- WhatsApp משתמש בהן. אנו מקווים כי מאמר זה, בחינת עיצוב האדריכלות של WhatsApp, ענה על שאלות הבוערות שלך. עכשיו לאחר שהבנה הבנה כיצד עובד שרת WhatsApp, למדת איך נראית ערימת הטכנולוגיה של WhatsApp ואפילו סרקה תרשים ארכיטקטורה של WhatsApp. אולי אתה מרגיש מוסמך לקחת על עצמו פרויקט אפליקציית צ’אט משלך.
אם אתה’מוכנים לתת ל- WhatsApp ריצה לכספם, הירשמו ללוח המחוונים של המפתח שלנו ולהתחיל לבנות את אפליקציית הצ’אט שלכם בחינם.
אך קחו בחשבון שרבים מהטכנולוגיות בערימת הטכנולוגיה של WhatsApp נבחרו באופן ספציפי ליכולתם להתגבר ולטפל במקביל גבוה במיוחד.
אם אתה’מנסה לבנות אפליקציית היכרויות או טלרפואה, (או כל מה שלא’לא צריך כמעט את העולם כולו כדי להיות מקוון בו זמנית), יתכן שלא תזדקק לכמות הסולם ש- WhatsApp עושה.
במילים אחרות, ערימת הטכנולוגיה של WhatsApp, אף שהיא מושלמת עבור WhatsApp, עשויה להיות לא הפיתרון הטוב ביותר עבורך. כדי ללמוד על הארכיטקטורה האידיאלית וערימת הטכנולוגיה עבור אפליקציית צ’אט, פנה למאמר זה.
אם עדיין יש לך שאלות על מה שמתאים לך, אל תהסס לדבר עם המומחים שלנו ולפני שתתחיל לבנות אפליקציית צ’אט משלך.
פשוט רעב לעוד? להלן כמה משאבים גדולים יותר לצלול לתוכם:
- המיתוס של הצפנה מקצה לקצה באפליקציות העברת הודעות
- הבנת הארכיטקטורה ועיצוב המערכת של יישום צ’אט
- 11 טעות מטופשת מבצעים מפתחים בבניית אפליקציית צ’אט
על הסופר
קוזט קרסלר הוא משווק תוכן נלהב המתמחה בסאאס, טכנולוגיה, קריירה, פרודוקטיביות, יזמות ופיתוח עצמי. היא עוזרת לצמוח עסקים בכל הגדלים על ידי יצירת תוכן עקבי וניתן לעיכול שמושך את תשומת הלב ומניע פעולה.
האם WhatsApp משתמש בשקע
Б эой сранице
Ы зé. С помדיר. Почем эо мого?
Эа сраница о бображае тех сах, кога воматеשיים си сисלוח рmе рגות р רבות ш רבות р р рוהים р рוהים которые нé. Сраница пересанет ообрוחים. До эого момента д.
Исочником запросов может сmжж вредоносfte по, подаееые моди базלוח нилm mчnзnзnчnчnчnчnчnчnчnчnчnчnчnчnчnчnчзדי ы з запросов. Еи ы иололalty ощий дדיר. O. Подробнרבה.
Проверка по сов может тelte пояяе, еи ы водите сדיר еами, или же водите запроы ченн часо.
XMPP VS WebSocket – אשר יש להשתמש בו ליישומים?
תוך כדי בניית אפליקציית Manstable Manstaling Massections (IM) מאפס היא המטרה שלך, החלק העניין ביותר הוא: להבין את הפרוטוקול האופטימלי להודעות. הבחירות המוצעות (שתיהן) מוסברות תוך מספר דקות.
אם לומר זאת בבירור, ניסינו להביא ידע משמעותי על פרוטוקול XMPP לעומת WebSocket דרך הפוסט הזה אליך. שני פרוטוקולי IM אלה יכולים לסלול את הדרך לשיפור התקשורת המיידית כאשר אנו מתקדמים בזמן. עם זאת, זה’לא קל לבחור כאחד קל יש יתרונות ומגבלות מובחנים.
מטרות למידה
הירשם לחדשות האחרונות
Mukhaddin Beshkov
מומחה מאומת
20+ שנים מומחיות IT בהנדסת מערכות, ניתוח אבטחה, ארכיטקטורת פתרונות. בקיא במערכת ההפעלה (Windows, Linux, Unix), תכנות (C ++, Python, HTML/CSS/JS, Bash), DB (MySQL, Oracle, MongoDB, Postgresql). מיומן בסקריפטים (PowerShell, Python), DevOps (שירותי מיקרו, מכולות, CI/CD), פיתוח אינטרנט (צומת.JS, React, Angular). רקורד מוצלח בניהול מערכות IT.
הַגדָרָה
XMPP – הכל אודות הפרוטוקול
משמש לחילופי XML Fragment B/W The Server-Client Duo, XMPP הוא אחד הפרוטוקולים המוקדמים של תקני הפתוח הנוגעים לתקשורת. יש לו היסטוריה ארוכה של למעלה מ 20 שנה. יישומו האפקטיבי דורש שימוש חובה בכריכת תחבורה מתאימה.
במודל OSI, XMPP מתפקד בעיקר על שכבת היישום המרחיב את התבנית המבנית XML (של חלקיו או התחביר). לצורך הילוכים/ממסר, הוא זקוק לשכבות הובלה’ פרוטוקולים’ (HTTP או TCP) עזרה.
האיקסמתוח MEssing & עמ ‘חומרים עמ ‘רוטוקול, לרוב, משמש בפיתוחים המערבים יישומי צ’אט, יישומים עם מתקנים כמו שיחות קול/וידאו, שליחה מיידית של טקסט/עשיר-מדיה וקריאת וידאו רב-חלקית.
יתרונות
עם XMPP, יש לך יתרונות מרובים ליהנות מהם בזמן שאתה מפתח אפליקציית IM. לדוגמה:
- תכונות אבטחת הסייבר שלה מתקדמות מספיק כדי לשמור על סכנות עולם דיגיטליות מובילות במפרץ.
- הארכיטקטורה המבוזרת מבטיחה שהיא נגישה לכולם.
- התמיכה הטכנית המוצעת אמינה ויעילה.
- זה גמיש ומאפשר למשתמשי הקצה לבצע שינויים בתהליך העברת הנתונים לפי הצורך בפרויקט.
- זה עוזר בביסוס חיבור מתמשך (מתמשך).
- זה מפשט שרתי תקשורת B/W בכך שהוא מאפשר לארכיטקטורות מגוונות להעביר נתונים.
- זה מגיב מייד לעבר נוכחותו של משתמש הקצה. מכאן, אתה’אני יוכל לברר אם משתמש הקצה מקוון או לא מקוון.
חסרונות
גם אם XMPP מעניק יתרונות מרובים, זה לא ללא רבב. ישנם חסרונות או חסרונות ברורים של פרוטוקול זה.
- זה חסר מנגנון QoS
- הזרמת XML או תקשורת מבוססת טקסטים מגדילה את התקורות התפעוליות
- הובלת התוכן מתרחשת לרוב ללא סנכרון
- לעיתים, נוכחות ו/או הודעות מיידיות עלולות לגרום לעומס יתר של שרת
WebSocket – הכל אודות הפרוטוקול
זה’S פרוטוקול IM מודרני, המאפשר נתונים בינאריים וטקסטים’זרימת S וזרימה ללקוח שרת בכל ערוץ מתמשך.
זה’S דו כיווני, דופלקס מלא ומדינה באופיין. זה’S משמש בעיקר לאפליקציה סלולרית הזקוקה לחיבור מתמשך. זה לא קשור להגדרת האופי וסוג הנתונים במעבר. הוא זקוק לתמיכה של פרוטוקולים אחרים כדי ליישם באופן מלא את יכולת ה- IM באפליקציית הצ’אט.
יתרונות
WebSocket נועד למלא את הפער שהטכנולוגיה מבוססת HTTP שנוצרה בהעברת נתונים. עם הזמן נצפה שזה היה יותר מזה. תסתכל על יתרונות מרכזיים ליהנות עם WebSockets.
- זה ממשיך לתקשורת אלא אם כן השרת או הלקוח מפסיקים אותו
- אין כמעט שום התאמה ל WebSocket בכל הנוגע למהירות. זה יכול להעביר נתונים מהר יותר מ- AJAX ו- HTTP
- זה יכול להפוך את העברת הנתונים בין שרתי המקור
- זה תואם לסוגים רבים של פלטפורמות כמו נייד, אינטרנט ושולחן עבודה
- השימוש ב- WebSockets הוא חסכוני מכיוון שהוא מפעיל רק הוצאות 2 בתים
- זה למעשה מתקן את סוגיית הסקרים הארוכה
חסרונות
למרות היתרונות, ל- WebSocket יש כמה חסרונות פוטנציאליים שכדאי לציין. לדוגמה:
- זה עובד רק כשיש לך דפדפן תואם של HTML 5
- חסר לו מנגנון הצלחה כמו איאקס
- שום מתווך או קצה אינו אפשרי מטמון
- כאשר Websocket נמצא בפעולה, המפתחים יתקשו ליישם אפילו את הסטטוסים הפשוטים ביותר של HTTP
השוואה בין פרוטוקולים
לאחר שיש לו הבנה עמוקה יותר של המשמעות הבסיסית של שני הפרוטוקולים הללו, זה’זמן לעבור להשוואה מפורטת ב- XMPP V/S. בחרנו ביד כמה היבטים הנוגעים ביותר ואז השווינו את ההצעות של שני אלה.
הערכה אבטחה קצרה של שני הפרוטוקולים הללו היא מכריעה מכיוון ששימוש בפרוטוקול לא מאובטח יביא את הכל לסיכון. XMPP הוא פרוטוקול מתובל זמן ועבר שינויים ושיפורים מרובים לאורך כל שנות ההפעלה הללו. ככל שדרישות האבטחה משתנות, הפרוטוקול משפר את חזית האבטחה שלו. זה מגיע עם שכבות אבטחה ותכונות שונות.
כאשר XMPP מופעל, זהות אישית היא חובה. יש לאמת גם את ההודעות וגם המארחים לפני שהם חלק מהתקשורת כדי למנוע סיכון זיוף. למרות שזה הספיק כדי לשמור על איומי דואר זבל בשליטה,
XMPP אפילו מאפשר למשתמשי הקצה להוסיף שכבות אבטחה לפי הצורך של השעה.
כשמדובר בהצפנה, XMPP מציעה שני סוגים. ההצפנה הראשונה נוגעת כאשר חיבור מתבסס ואימותו מתחיל. הצפנה זו מסתיימת עם SASL. ברגע שהחיבור נבנה בהצלחה, תקשורת שרת לקוח מגובה על ידי הצפנת TLS.
אם WebSocket’הצעת האבטחה נבדקת בזהירות, תוכל ללמוד שהיא צריכה מעט שיפור. זה’פרוטוקול צעיר מאוד ודורש שיפור ושדרוגים רבים יותר כדי להתאים למה ש- XMPP מציע. אבל, זה לא’זה אומר שזה חסר ביטחון. זה מציע הצפנה חזקה מספיק כדי לשמור על כל חדירה זדונית במפרץ.
הארכיטקטורה המבצעית הליבה של XMPP מבוזרת, בעוד ש- WebSockets עוקב אחר ארכיטקטורה ריכוזית. XMPP מבוסס על מודל שרת הלקוח ומונע אינטראקציה ישירה בין לקוחות. WebSockets לוקחים את העזרה של ממשקי API ומוודאים שהלקוח והשרת מתקשרים ברציפות.
- תאימות לפרוטוקולים אחרים
XMPP הוא פרוטוקול פרימיטיבי וחסר תאימות API. מצד שני, WebSocket הוא אופטימיזציה של API מאוד, שהיא הליבה של תאימות טובה יותר לפרוטוקולים אחרים.
- שליחה וקבלת נתונים בינאריים
ב- Websocket. זה הופך את העברת הנתונים למהירה. XMPP עוקב אחר נתיב דק מאוד להעברת נתונים בינאריים, מה שהופך את הכל למסורבל.
Websocket עוסק בשכבת ההובלה’S הרחבות, בעוד ש- XMPP עוסק בשכבת היישום’S הרחבה. זה’ניתן להוסיף יותר מ- 40 פרוטוקולים על פני רשתות רשת. אבל, xmpp isn’זה גמיש.
למרות ששניהם מועילים להעברת נתונים בזמן אמת במהירות הקפיצה, WebSocket עולה על ביצועי XMPP בחזית זו בגלל אופיו הריכוזי ותקשורת מתמדת. אימות ואישור של כוח XMPP של שרת וגם הלקוח מאט את הביצועים שלו מעט.
דוגמאות לשימוש ב- XMPP ו- WebSocket
XMPP משמש ביישומי WhatsApp, Gtalk ו- Grindr ובנוי בתכונות הצ’אט. אם להיות ספציפי, הפרוטוקול מועדף לרוב כאשר תקשורת מאובטחת או מבוססת קבוצה היא התכונה העיקרית של האפליקציה.
טרלו, רפיון ואי -הסכמה הם שלושת האפליקציות המפורסמות ביותר שנבנו באמצעות WebSockets. כידוע, יישומים אלה מיועדים לצוותים ולעובדים מרוחקים. לסיכום, הפרוטוקול שימושי יותר עבור מרחבי עבודה וירטואליים מוגבלים מכיוון שהוא משתמש בחיבור מתמשך.
מסקנה – באיזה פרוטוקול להשתמש?
WebSocket ו- XMPP – שניהם מיועדים להודעות מיידיות. עם זאת, איזו מהן עליכם לבחור היא שאלה שצריך לענות עליה לאחר שלקחו את דרישות הפרויקט להקשר. מבחינת ההבנה שלנו, אנו ממליצים להשתמש ב- WebSockets כאשר יש להעביר הרבה נתונים, והתקשורת צריכה להישאר פתוחה.
XMPP היא הבחירה הטובה ביותר לבצע כאשר פיתוח דורש טונות של תוספים ואבטחה חייבת להיות מהשורה הראשונה. לכן, לפני שתבחרו בין שני אלה, עליכם לגלות מה בדיוק יעדי הפיתוח שלכם. לעבוד את זה לפני כן ואז בחר פרוטוקול בהתאם. עם זאת, דבר אחד בטוח ששניהם יספקו בביצועים PAR אם משתמשים בהם נכון.
שאלות נפוצות
למה משמש XMPP?
XMPP (פרוטוקול הודעות ונוכחות הניתנות להרחבה) משמש לתקשורת בזמן אמת כמו העברת מסרים מיידיים, צ’אט קול ווידאו ומידע נוכחות.
בשביל מה שקע האינטרנט טוב?
WebSocket טוב ליישומי אינטרנט בזמן אמת כמו משחק מקוון, יישומי צ’אט ופלטפורמות מסחר פיננסי.
האם ניתן להשתמש ב- XMPP עם WebSocket?
כן, ניתן להשתמש ב- XMPP עם WebSocket כדי לשפר את יישומי התקשורת בזמן אמת.
מהם היתרונות של WebSocket מעל XMPP?
ל- Websocket יש חביון נמוך יותר, ביצועים טובים יותר ויכול להיות קל יותר ליישום מאשר XMPP.
האם ניתן להשתמש בכיד האינטרנט להעברת קבצים?
על פי המפרט הרשמי, WebSocket אינו מיועד להעברת קבצים. עם זאת, חלק ממפתחים מצאו דרכים להשתמש ב- WebSocket להעברת קבצים. מאגר Github