في السيناريوهات التي توجد فيها خدمات 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) }
يشمل كود 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