gRPC - ספריית גוגל

08/12/2023

התחליף המהיר והיעיל לREST API

gRPC

תקשורת ברשת זה הלב של הטכנולוגייה המודרנית. gRPC זה אחד מהhigh-level framework שאנחנו יכולים להשתמש כדי להשיג קליטה והעברת נתונים בצורה יעילה


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

HTTP/1.1 & HTTP/2

http זה protocol תקשורת, בכל ״שיחה״ איתו נעביר header, body, action בheader נעביר מטהדאטה, בbody את התוכן, ובaction איזה סוג פעולה נרצה לבצע get/post/update...

בhttp/2 יש שיפורים ביעילות, אבטחה, ושימוש. אחד השיפורים המשמעותיים זה ההעברה של נתונים בצורה בינארית, עד אז הנתונים היו מועברים ברשת בטקסט טהור מה שנקרא, וזה היה תלוי במשתמש אם ל״דחוס״ אותו או לא.. בלדחוס הכוונה ללהפוך את הטקסט לא׳ לא קריא וב׳ להקטין את הגודל של המידע המועבר כדי שיהיה מהיר יותר


השיפור המשמעותי השני זה הפיצ׳ר שנקרא

server push

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

והדבר הנוסף הוא שאת כל הטוב הזה מקבלים קשר TCP אחד בלבד!

RPC Operations

אופרציות אלו משמשות בgRPC send Header לעדכן את שני הצדדים במידע שהולך לעבור אליהם, בrequest / response

send message האופרצייה שלמעשה שולחת את הדאטה

send half close שאחד הצדדים בעצם מודיע לצד השני שהוא מנתק ומסיים את השיחה

send trailer אופרצייה שמסיימת את תקשורת הrpc ומביאה מידע על השיחה כמו סטטוס, הודעות שגיאה, ועוד.. בעיקר עוזר לטיפול בשגיאות api

RPC types

  1. Unary - בסוג זה יש one request, one response נדמיין את זה כמו מישהו שמתקשר לפיצה מביא להם כתובת למשלוח, שם ופרטים שלו ומה לשים לו בהזמנה ומנתק את השיחה(half close) בנתיים מחכה למשלוח השליח מגיע לכתובת, מעביר ללקוח את הקבלה לתשלום ואת הפיצה(message) והולך(trailer)

  2. Server streaming - אחד request, ואחד או כמה responses כמו מנוי, נגיד מערכת שמעדכנת בכל זמן שמשתנה השיר בגלגל״צ בפועל הקליינט כמו בunary והסרבר: שולח header, אחריו כמה messages שצריך ומסיים בtrailer

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