मैं पाइथन के साथ जीआरपीसी का उपयोग क्लाइंट/सर्वर के रूप में कुबर्नेट्स पॉड्स के अंदर कर रहा हूं ... मैं उसी प्रकार के कई फोड लॉन्च करने में सक्षम होना चाहता हूं (जीआरपीसी सर्वर) और क्लाइंट को कनेक्ट करने दें उन्हें (यादृच्छिक रूप से)।जीआरपीसी क्लाइंट साइड लोड बैलेंसिंग
मैंने सर्वर के 10 फोड भेजे और उन्हें लक्षित करने के लिए 'सेवा' सेट अप किया। फिर, क्लाइंट में, मैंने सेवा के DNS नाम से कनेक्ट किया - जिसका अर्थ है कि कुबेरनेट को लोड-बैलेंसिंग करना चाहिए और मुझे यादृच्छिक सर्वर पॉड पर निर्देशित करना चाहिए। हकीकत में, ग्राहक जीआरपीसी फ़ंक्शंस (जो अच्छी तरह से काम करता है) को कॉल करता है लेकिन जब मैं लॉग देखता हूं तो मुझे लगता है कि सभी कॉल उसी सर्वर फोड पर जा रहे हैं।
मुझे लगता है कि क्लाइंट कुछ प्रकार की DNS कैशिंग कर रहा है जो सभी कॉल को उसी सर्वर पर भेजा जा रहा है। क्या यह मामला है? क्या इसे अक्षम करने के लिए वैसे भी है और एक ही स्टब क्लाइंट को "नया" कॉल करने के लिए सेट करें और प्रत्येक कॉल के साथ DNS द्वारा एक नया आईपी लाएं?
मुझे पता है कि अगर मैं हर बार DNS सर्वर से पूछता हूं तो ओवरहेड के बारे में मुझे पता है, लेकिन इस समय लोड को वितरित करना मेरे लिए अधिक महत्वपूर्ण है।
संपादित
शायद नहीं एक कैशिंग मुद्दा ... अभी जिस तरह से काम करता है gRPC हो सकता है। HTTP/2 और लगातार पुन: प्रयोज्य कनेक्शन। प्रत्येक कॉल के बाद "डिस्कनेक्ट" करने का कोई तरीका?
विस्तृत जवाब के लिए धन्यवाद। असल में, मैंने पहले से ही सुझाव दिया है कि आपने प्रत्येक अनुरोध के लिए एक नया चैनल बनाया है (कुशल नहीं, मुझे पता है)। आपके उत्तर से मैं समझता हूं कि डीएनएस में केवल पहला आईपी तब तक अनुरोध प्राप्त करेगा जब तक यह बंद नहीं हो जाता है (कोई उपलब्ध कनेक्शन/मारे गए/दुर्घटनाग्रस्त नहीं) और केवल तभी ग्राहक दूसरे आईपी तक पहुंच जाएंगे और ... क्या यह सही है? – Idan
हां। परिवर्तनों के अनुसार एलबी नीति के रूप में पहले चुनने के बदले राउंड रॉबिन का चयन करना संभव हो गया है। –
वहाँ किसी भी आमतौर पर एकाधिक gRPC सर्वर स्केलिंग पर समाधान है? या क्लाइंट-साइड लोड संतुलन? –