gRPC-Go لجولانج: دليل شامل مع أمثلة عملية

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو gRPC-Go ولماذا تحتاجه؟

gRPC-Go هو التطبيق الرسمي لإطار عمل gRPC للغة البرمجة Go. gRPC (استدعاءات الإجراءات عن بُعد) هو نظام عالي الأداء ومفتوح المصدر لاستدعاء الإجراءات عن بُعد، طورته شركة Google. يسمح لتطبيقات العميل والخادم بالتواصل مع بعضها البعض كما لو كانت في نفس العملية، مما يلغي تعقيدات الشبكة.

لماذا تستخدم gRPC-Go؟

  • أداء عالٍ: يستخدم gRPC بروتوكول HTTP/2 لتعدد الطلبات و Protobuf (Protocol Buffers) لتسلسل البيانات الثنائي الفعال. هذا أسرع بكثير من JSON/XML عبر HTTP/1.1.
  • كتابة صارمة للأنواع: يتم تعريف عقود API في ملفات .proto، مما يسمح بتوليد كود مقيد الأنواع لكل من الخادم والعميل. هذا يزيل العديد من الأخطاء في مرحلة الترجمة.
  • دعم البث: يدعم gRPC أربعة أنواع من RPC: أحادي (طلب-استجابة)، بث من الخادم، بث من العميل، وبث ثنائي الاتجاه.
  • مصادقة وتشفير مدمجان: يدعم gRPC TLS/SSL وآليات المصادقة المختلفة بشكل افتراضي.
  • مثالي للخدمات المصغرة: يعتبر gRPC المعيار الفعلي للتواصل بين الخدمات المصغرة بفضل سرعته وموثوقيته ودعمه للغات متعددة.

التثبيت

للعمل مع gRPC في Go، ستحتاج إلى تثبيت عدة مكونات:

  1. تثبيت Go: تأكد من تثبيت Go الإصدار 1.18 أو أحدث. يمكنك التنزيل من الموقع الرسمي.
  2. تثبيت مترجم Protocol Buffers (protoc):
    # macOS (Homebrew)
    brew install protobuf
    
    # Ubuntu/Debian
    sudo apt install -y protobuf-compiler
    
    # Windows (قم بتنزيل الملف الثنائي من GitHub)
    # https://github.com/protocolbuffers/protobuf/releases
    
  3. تثبيت الإضافات لـ Go:
    # تثبيت إضافات protoc لـ Go
    go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
    go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
    
    # تحديث PATH (أضف إلى ~/.bashrc أو ~/.zshrc)
    export PATH="$PATH:$(go env GOPATH)/bin"
    
  4. تثبيت مكتبة gRPC-Go في مشروعك:
    # تهيئة وحدة Go (إذا لم تكن قد فعلت)
    go mod init my-grpc-project
    
    # تثبيت gRPC
    go get google.golang.org/grpc
    
    # تثبيت protobuf لـ Go
    go get google.golang.org/protobuf
    

ملاحظة: على عكس Python (pip install grpcio)، يستخدم Go نظام الوحدات go get.

بداية سريعة مع مثال كود

لنقم بإنشاء تطبيق بسيط "Hello World" باستخدام gRPC-Go.

الخطوة 1: تعريف البروتوكول (ملف hello.proto)

syntax = "proto3";

package hello;

option go_package = "github.com/yourusername/my-grpc-project/hello";

// تعريف الخدمة
service Greeter {
  // RPC أحادي
  rpc SayHello (HelloRequest) returns (HelloReply);
}

// رسالة الطلب
message HelloRequest {
  string name = 1;
}

// رسالة الرد
message HelloReply {
  string message = 1;
}

الخطوة 2: توليد كود Go

protoc --go_out=. --go-grpc_out=. hello.proto

سينشئ هذا الأمر ملفين: hello.pb.go (هياكل البيانات) و hello_grpc.pb.go (واجهات الخادم والعميل).

الخطوة 3: تنفيذ الخادم (server/main.go)

package main

import (
    "context"
    "log"
    "net"

    "google.golang.org/grpc"
    pb "github.com/yourusername/my-grpc-project/hello" // استبدل بمسارك
)

// server تنفيذ                    

توصيات