"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > هل يمكنني الوصول إلى خدمات gRPC متعددة عبر اتصال واحد؟

هل يمكنني الوصول إلى خدمات gRPC متعددة عبر اتصال واحد؟

تم النشر بتاريخ 2024-11-10
تصفح:555

Can I Access Multiple gRPC Services over a Single Connection?

الوصول إلى خدمات gRPC المتعددة عبر اتصال واحد

في السيناريوهات التي توجد فيها خدمات gRPC متعددة على نفس الخادم الذي يستمع على عنوان مشترك، كما في المثال المقدم، فإنه قد يبدو إنشاء اتصالات منفصلة لكل خدمة زائدة عن الحاجة. تهدف هذه المقالة إلى معالجة سبب الحاجة عادةً إلى اتصالات مميزة واستكشاف كيفية الاستفادة من اتصال واحد للوصول إلى خدمات gRPC المتعددة.

القضاء على الحاجة إلى اتصالات متعددة

للوصول بشكل فعال إلى خدمات gRPC المختلفة المستضافة على نفس الخادم، يمكنك الاستفادة من اتصال عميل gRPC واحد. يتضمن هذا الأسلوب تهيئة كائن grpc.ClientConn وتمريره إلى مصانع عملاء الخدمة الفردية، مما يمكنهم من مشاركة نفس الاتصال (الاتصالات) الأساسي.

func main() {
    cc, err := grpc.Dial("localhost:6000", grpc.WithInsecure())
    if err != nil {
        log.Fatal(err)
    }
    c1 := pb.NewSubscriberServiceClient(cc)
    c2 := pb.NewDropperServiceClient(cc)
}

إعادة استخدام التعليمات البرمجية التي تم إنشاؤها من Protobuf

يشمل كود gRPC الذي تم إنشاؤه والمتوفر في ملف pb.go جميع الوظائف الضرورية لتنفيذ عمليات RPCs. وبالتالي، ليست هناك حاجة لتطبيقات إضافية من جانب العميل، ما لم يكن هناك حاجة إلى تنفيذ منطق محدد تلقائيًا أثناء كل مكالمة.

استخدام واجهة للراحة (اختياري)

بالنسبة للحالات التي تكون فيها الخدمات متميزة أسماء الطرق، يمكنك دمجها في بنية واحدة لمزيد من الراحة.

type SubscriberDropper struct {
    pb.SubscriberServiceClient
    pb.DropperServiceClient
}

func main() {
    // ... as above ...
    sd := &SubscriberDropper{c1, c2}
}

من خلال استخدام هذا النهج، يمكنك التخلص من مؤسسات الاتصال المتكررة، مما يؤدي إلى تنفيذ أكثر كفاءة وتحسينًا من جانب العميل لتطبيقات gRPC الخاصة بك.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3