gRPC היא מסגרת RPC אוניברסלית בקוד פתוח עם ביצועים גבוהים שפותחה על ידי Google. אפשר להשתמש בה כדי להגדיר את השירותים באמצעות Protocol Buffers. אפשר להשתמש ב-gRPC כדי ליצור אינטראקציה עם Cloud Storage. פרוטוקול gRPC משתמש בקישוריות ישירה בין מכונות של Compute Engine לבין קטגוריות של Cloud Storage, בלי לעבור דרך ממשקי הקצה של Google (GFE).
אפשר להתחבר ל-Cloud Storage באמצעות gRPC דרך הלקוחות הנתמכים הבאים:
ספריות הלקוח של Cloud Storage עבור C++, Go ו-Java. הוראות להפעלת gRPC בספריות הלקוח האלה מופיעות במאמר הפעלת gRPC בספריית לקוח.
Cloud Storage FUSE. אפשר להשתמש ב-Cloud Storage FUSE כלקוח על ידי ציון
grpcבשדהclient-protocolבאמצעות קובץ תצורה של Cloud Storage FUSE או האפשרות--client-protocolבאמצעות Cloud Storage FUSE CLI. כדי להשתמש ב-gRPC עם Cloud Storage FUSE, מומלץ להשתמש בגרסאות Cloud Storage FUSE 2.10.0 ומעלה.
הפעלת gRPC בספריית לקוח
C++
לפני שמתחילים
ודאו שהגרסאות הבאות מותקנות:
gRPC בגרסה 1.65.1 ואילך
ספריית הלקוח C++ בגרסה v2.30.0 ואילך
C++ מגרסה 14 ואילך
הוראות להתקנה מופיעות במאמר הגדרת סביבת פיתוח בשפת C++.
חשוב לוודא שלכל מכונה ב-Compute Engine מצורף חשבון שירות, גם אם אין לחשבון השירות הרשאות. חשבון השירות הזה משמש לייצוג של מופע Compute Engine בתהליך לחיצת היד של אבטחת שכבת התעבורה של אפליקציה (ALTS), והוא נדרש לקישוריות ישירה.
הגדרת ספריית הלקוח C++
יוצרים לקוח gRPC באמצעות
gcs::MakeGrpcClient():namespace gcs = google::cloud::storage; void App() { auto client = gcs::MakeGrpcClient(); // application code }ספריית הלקוח של C++ משתמשת אוטומטית בקישוריות ישירה כשהיא מזהה שהאפליקציה פועלת ב- Google Cloud.
כדי להגדיר את ספריית הלקוח ב-C++ לשימוש ב-gRPC, צריך להפעיל את לקוח gRPC של Cloud Storage כדי לעדכן את ההגדרה של מערכת build עבור CMake או Bazel.
CMake
מפעילים את הפלאגין של לקוח gRPC של Cloud Storage בזמן ההידור.
cmake -DGOOGLE_CLOUD_CPP_ENABLE=storage_grpc [other options here]בבסיס הקוד, בפקודה
target_link_libraries()מחליפים אתgoogle-cloud-cpp::storageב-google-cloud-cpp::storage_grpc.לדוגמה, מדריך למתחילים של gRPC משתמש בקוד הבא:
add_executable(quickstart_grpc quickstart_grpc.cc) target_link_libraries(quickstart_grpc google-cloud-cpp::storage_grpc)
Bazel
החלפת התלויות מ-
@google_cloud_cpp//:storageל-@google_cloud_cpp//:storage_grpc.לדוגמה, המדריך למתחילים של gRPC משתמש בקוד הבא:
cc_binary( name = "quickstart", srcs = [ "quickstart.cc", ], deps = [ "@com_github_googleapis_google_cloud_cpp//:storage_grpc", ], )
Java
לפני שמתחילים
ודאו שהגרסאות הבאות מותקנות:
ספריות לקוח Java:
com.google.cloud:google-cloud-storage:2.43.1או מאוחר יותר.com.google.cloud:libraries-bom:26.48או מאוחר יותר.
Java 8 ואילך
הוראות התקנה מופיעות במאמר הגדרת סביבת פיתוח בשפת Java.
חשוב לוודא שלכל מכונה ב-Compute Engine מצורף חשבון שירות, גם אם אין לחשבון השירות הרשאות. חשבון השירות הזה משמש לייצוג של מופע Compute Engine בתהליך לחיצת היד של אבטחת שכבת התעבורה של אפליקציה (ALTS), והוא נדרש לקישוריות ישירה.
עדכון הפרויקט לשימוש ב-BOM
כדי לוודא שבפרויקטים שלכם יש גרסאות תואמות של ספריות לקוח של Google Cloud , צריך להשתמש בגרסאות שמצוינות ברשימת החומרים (BOM) של ספריותGoogle Cloud . כדי לעדכן את הפרויקט כך שישתמש ב-BOM, אפשר להשתמש באחת מהשיטות הבאות:
אחסון בענן עצמאי
אם אתם משתמשים בספריית הלקוח של Cloud Storage באופן עצמאי (בלי ספריות אחרות שלGoogle Cloud ), אתם צריכים להשתמש ב-BOM שספציפי לספריית הלקוח של Cloud Storage.
Maven
מייבאים את ה-BOM בקטע dependencyManagement של קובץ pom.xml.
בדוגמה הבאה אפשר לראות איך מייבאים את ה-BOM וכוללים את ארטיפקט google-cloud-storage.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-storage-bom</artifactId>
<version>2.43.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-storage</artifactId>
</dependency>
</dependencies>
Gradle
מוסיפים תלות בפלטפורמה ב-com.google.cloud:google-cloud-storage-bom:
implementation platform('com.google.cloud:google-cloud-storage-bom:2.43.1')
implementation 'com.google.cloud:google-cloud-storage'
Cloud Storage עם ספריות Google Cloud אחרות
אם אתם משתמשים בספריית הלקוח של Cloud Storage יחד עם ספריות אחרות, אתם צריכים להשתמש ב-BOM של ספריות הלקוח. Google Cloud Google Cloud
Maven
מייבאים את ה-BOM בקטע dependencyManagement של קובץ pom.xml.
בדוגמה הבאה אפשר לראות איך מייבאים את ה-BOM וכוללים את ארטיפקט libraries-bom.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>libraries-bom</artifactId>
<version>26.48.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-storage</artifactId>
</dependency>
</dependencies>
Gradle
מוסיפים תלות בפלטפורמה ב-com.google.cloud:libraries-bom:
implementation platform('com.google.cloud:libraries-bom:26.48.0')
implementation 'com.google.cloud:google-cloud-storage'
יצירת לקוח gRPC
בדוגמה הבאה נעשה שימוש בבונה מבוסס gRPC. לקוח gRPC Java משתמש באופן אוטומטי בקישוריות ישירה כשהוא מזהה שהאפליקציה פועלת ב- Google Cloud.
Go
לפני שמתחילים
חשוב לוודא שאתם משתמשים בספריית הלקוח של Cloud Storage Go בגרסה 1.46.0 ואילך.
חשוב לוודא שלכל מכונה ב-Compute Engine מצורף חשבון שירות, גם אם אין לחשבון השירות הרשאות. חשבון השירות הזה משמש לייצוג של מופע Compute Engine בתהליך לחיצת היד של אבטחת שכבת התעבורה של אפליקציה (ALTS), והוא נדרש לקישוריות ישירה.
יצירת לקוח gRPC
כדי להשתמש בלקוח, צריך לקרוא לבונה NewGRPCClient באפליקציה במקום ל-NewClient.
ספריית הלקוח של Go משתמשת באופן אוטומטי בקישוריות ישירה כשהיא מזהה שהאפליקציה פועלת ב- Google Cloud.
מידע על השימוש בלקוח gRPC מופיע במאמר gRPC API.
הגדרת VPC Service Controls
אם אתם משתמשים בענן וירטואלי פרטי עם כתובות IP וירטואליות מוגבלות (VPC Service Controls) כדי לשפר את האבטחה של הרשת, אתם צריכים לעדכן את כללי חומת האש כדי לאפשר קישוריות ישירה לביצועים אופטימליים בין מופע Compute Engine לבין דלי Cloud Storage.
כדי לעשות זאת, מוסיפים כללים של חומת אש לרשימת ההיתרים כדי לאפשר תעבורת נתונים בכל היציאות עבור בלוקי ה-CIDR הבאים:
- לתנועת IPv4:
34.126.0.0/18 - לתנועת IPv6:
2001:4860:8040::/42
בנוסף לכללים הקודמים, צריך לשמור את הכלל הקיים ברשימת ההיתרים עבור 199.36.153.4/30.
אם יש לכם הגבלות על שינויים בכללי חומת האש ואתם לא יכולים לעדכן אותם, אתם יכולים להשתמש ב-storage.googleapis.com כנקודת הקצה של Cloud Storage במקום ב-google-c2p://storage.googleapis.com כדי לאלץ את התעבורה להימנע מקישוריות ישירה.
לדוגמה, לשימוש ב-C++, .set<google::cloud::EndpointOption>(storage.googleapis.com) במקום google-c2p:///storage.googleapis.com.
הפעלת יכולת צפייה בבקשות שקשורות ל-gRPC
אפשר להגדיר את ספריות הלקוח של Cloud Storage כך שיפיקו מדדים שקשורים ל-gRPC ב-Cloud Monitoring. המדדים שקשורים ל-gRPC יכולים לעזור לכם לבצע את הפעולות הבאות:
מעקב אחרי הביצועים של בקשות gRPC ל-Cloud Storage ואופטימיזציה שלהם.
לפתור בעיות ולנפות באגים.
קבלת תובנות לגבי השימוש באפליקציה וההתנהגות שלה.
מידע על יצירת מדדים שקשורים ל-gRPC זמין במאמר בנושא שימוש במדדים בצד הלקוח.
אם איסוף מדדים לא נחוץ לתרחיש השימוש שלכם, אתם יכולים לבטל את ההסכמה לאיסוף מדדים. הוראות מפורטות מופיעות במאמר השבתה של מדדים בצד הלקוח.
מגבלות
אי אפשר לשלוח בקשות IPv6 דרך רשתות מדור קודם.
אין תמיכה בקישוריות ישירה כשמשתמשים בגרסאות GKE הבאות באשכולות IPv4 בלבד:
- 1.28, 1.28.0-gke.100 ואילך עד 1.28.5-gke.1199000
- 1.27, 1.27.4-gke.1900 ואילך
- 1.26, 1.26.10-gke.1238000 ואילך
- 1.25, 1.25.15-gke.1045000 ואילך
gRPC לא תומך בשיטות
notifications,hmacKeysו-serviceAccount.אפשרויות ספציפיות ל-HTTP בבונה של הלקוח, כמו WithHTTPClient, לא נתמכות בספריית הלקוח Go.
gRPC API לא נתמך בנקודות קצה אזוריות.
פתרון בעיות בקישוריות ישירה
במאמר קישוריות ישירה מוסבר איך לבדוק אם יש קישוריות ישירה ואיך לפתור בעיות כשאין קישוריות כזו.
המאמרים הבאים
- מתחברים למחבר Cloud Storage ב-Dataproc באמצעות gRPC.
- הפעלת gRPC במחבר קלט/פלט של Apache Beam ב-Dataflow.