gRPC הוא מסגרת RPC אוניברסלית בקוד פתוח עם ביצועים גבוהים שפותחה על ידי Google. אפשר להשתמש בו כדי להגדיר את השירותים באמצעות מאגר אחסון לפרוטוקולים. אתם יכולים להשתמש ב-gRPC כדי לבצע פעולות ב-Cloud Storage. ב-gRPC נעשה שימוש בקישוריות ישירה בין מכונות Compute Engine לבין קטגוריות של Cloud Storage, תוך עקיפת ממשקי הקצה של Google (GFE).
אפשר להתחבר ל-Cloud Storage באמצעות gRPC דרך הלקוחות הנתמכים הבאים:
ספריות הלקוח של Cloud Storage ב-C++, ב-Go וב-Java. איך מפעילים את gRPC בספריית הלקוח
Cloud Storage FUSE. כדי להשתמש ב-Cloud Storage FUSE כלקוח, מציינים את
grpcבשדהclient-protocolבאמצעות קובץ תצורה של Cloud Storage FUSE, או את האפשרות--client-protocolבאמצעות ה-CLI של Cloud Storage FUSE. כדי להשתמש ב-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 , השתמשו בגרסאות שמצוינות בGoogle Cloud רשימת החומרים (BOM) של הספריות. כדי לעדכן את הפרויקט כך שישתמש ב-BOM, אפשר להשתמש בכל אחת מהשיטות הבאות:
Cloud Storage עצמאי
אם אתם משתמשים בספריית הלקוח של Cloud Storage באופן עצמאי (בלי ספריות אחרות שלGoogle Cloud ), השתמשו ב-BOM הספציפי לספריית הלקוח של Cloud Storage.
Maven
מייבאים את ה-BOM בקטע dependencyManagement של קובץ pom.xml.
בדוגמה הבאה אפשר לראות איך מייבאים את ה-BOM וכוללים את פריט המידע שנוצר בתהליך הפיתוח (artifact) של 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 יחד עם ספריות אחרות Google Cloud , אתם צריכים להשתמש ב-BOM של ספריות הלקוח Google Cloud .
Maven
מייבאים את ה-BOM בקטע dependencyManagement של קובץ pom.xml.
בדוגמה הבאה אפשר לראות איך מייבאים את ה-BOM וכוללים את פריט המידע שנוצר בתהליך הפיתוח (Artifact) של 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.
המשך
לפני שמתחילים
חשוב להשתמש בגרסה 1.46.0 ואילך של ספריית הלקוח של Cloud Storage Go.
חשוב לוודא שלכל מכונה של Compute Engine מצורף חשבון שירות, גם אם אין לו הרשאות. חשבון השירות הזה משמש לייצוג של מופע Compute Engine בתהליך לחיצת היד של אבטחת שכבת התעבורה של אפליקציה (ALTS), והוא נדרש לקישוריות ישירה.
יצירת לקוח gRPC
כדי להשתמש בלקוח, צריך להפעיל את ה-constructor NewGRPCClient באפליקציה במקום NewClient.
ספריית הלקוח של Go משתמשת באופן אוטומטי בקישוריות ישירה כשהיא מזהה שהאפליקציה פועלת ב- Google Cloud.
במאמר gRPC API מוסבר איך משתמשים בלקוח gRPC.
הגדרת 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 לא תומך ב-methods
notifications,hmacKeysו-serviceAccount.אפשרויות של בנאי לקוח ספציפיות ל-HTTP, כמו WithHTTPClient, לא נתמכות בספריית הלקוח של Go.
ה-API של gRPC לא נתמך בנקודות קצה אזוריות.
פתרון בעיות בקישוריות ישירה
במאמר קישוריות ישירה מוסבר איך לבדוק אם יש קישוריות ישירה ואיך לפתור בעיות כשאין קישוריות כזו.
המאמרים הבאים
- חיבור ל-Cloud Storage ב-Managed Service for Apache Spark באמצעות gRPC
- הפעלת gRPC במחבר קלט/פלט של Apache Beam ב-Dataflow.