2015-08-09 9 views
6

के लिए पुनः प्रयास, लोड संतुलन और सर्किट ब्रेकर के लाभ कैसे प्राप्त करें I spring-cloud-Eureka समर्थित माइक्रोस्कोर्सेस अनुप्रयोग में निम्नलिखित सुविधाएं चाहते हैं।स्प्रिंग क्लाउड - वितरित वसंत अनुप्रयोग

1) लोड संतुलन - अगर मैं एक सेवा के लिए 3 नोड्स है, लोड संतुलन उन दोनों के बीच

2 होना चाहिए) का पुन: प्रयास तर्क - अगर एक नोड के कोई जवाब नहीं दिया, पुन: प्रयास निश्चित संख्या के लिए होना चाहिए (उदाहरण के लिए 3. विन्यास योग्य होना चाहिए) एक और नोड पर वापस गिरने से पहले।

3) सर्किट ब्रेकर - अगर कुछ कारणों से, सेवा के सभी 3 नोड्स में कुछ समस्याएं डीबी तक पहुंच रही हैं और अपवाद फेंक रही हैं या प्रतिक्रिया नहीं दे रही हैं, तो सर्किट खुला होना चाहिए, वापस कॉल विधि को बुलाएं और सर्किट स्वचालित रूप से सेवाओं के बाद बंद हो जाती है ठीक।

वसंत-बादल के कई उदाहरण को देखते हुए, मैं

1) RestTemplate विकल्प 1. साथ में मदद मिलेगी पता लगा, लेकिन जब सेवा के RestTemplate पहुँच एक उदाहरण है और यदि नोड में विफल रहता है, यह अन्य दो नोड्स के साथ की कोशिश करेंगे ?

2) हाइस्टिक्स सर्किट ब्रेकर विकल्प (ऊपर 3) के साथ मदद करेगा। लेकिन अगर सिर्फ एक नोड प्रतिक्रिया नहीं दे रहा है, तो सर्किट खोलने और कॉलबैक विधि को कॉल करने से पहले, यह अन्य नोड्स आज़माएगा। और सेवा ठीक होने के बाद यह स्वचालित रूप से सर्किट बंद कर देगा?

3) वसंत-क्लाउड के साथ पुनः प्रयास कैसे करें? मुझे @Retryable एनोटेशन के बारे में पता है। लेकिन क्या यह निम्नलिखित परिस्थितियों में मदद करेगा? 3 बार के लिए एक नोड के साथ पुनः प्रयास करें और इसके बाद विफल हो जाए, सर्किट ब्रेकर में 3 बार अगला नोड 3 बार और अंतिम नोड को आजमाएं।

मुझे लगता है कि ये सभी कॉन्फ़िगरेशन वसंत बादल में उपलब्ध हैं। लेकिन कठिन समाधान समझने के लिए इन सभी के लिए कॉन्फ़िगर कैसे करें।

यहाँ one है प्रस्तावित:

@HystrixCommand 
@Retryable 
public Object doSomething() { 
    // use your RestTemplate here 
} 

लेकिन मैं पूरी तरह से पता नहीं है अगर यह मुझे सभी बारीकियों मैं उपर्युक्त के साथ मदद करने के लिए जा रहा है।

मुझे लगता है कि @FeignClient है। लेकिन इस blog से, मैं समझता हूं कि यह HTTP क्लाइंट अनुरोधों के लिए एक उच्च स्तरीय सुविधा प्रदान करता है। क्या यह पुनः प्रयास और सर्किट ब्रेकर और सभी को संतुलित संतुलन में मदद करता है?

धन्यवाद

उत्तर

6

मैं देख पा रहे हैं एक @FeignClient है। क्या यह पुनः प्रयास और सर्किट ब्रेकर और सभी को संतुलित संतुलन में मदद करता है?

यदि आप पूर्ण वसंत-क्लाउड स्टैक का उपयोग कर रहे हैं, तो यह वास्तव में आपके द्वारा उल्लेखित सब कुछ हल करता है।

इस परिदृश्य में Netflix घटकों वसंत-बादल में निम्नलिखित हैं:

यूरेका - सेवा रजिस्ट्री

आइए आप dyanmically अपनी सेवाओं को रजिस्टर तो आप अपने ऐप्लिकेशन में एक मेजबान को ठीक करने की जरूरत है (यूरेका)।

रिबन - लोड संतुलन

बॉक्स यह राउंड रोबिन loadbalancing प्रदान कर रहा है में से

, लेकिन आप अपने खुद के @RibbonClient (यहां तक ​​कि एक विशिष्ट सेवा के लिए) और डिजाइन अपने कस्टम उदाहरण के लिए यूरेका के आधार पर loadbalancing लागू कर सकते हैं मेटाडाटा। लोडबैंडिंग ग्राहक पक्ष पर होती है।

बहाना करना - HTTP क्लाइंट

@FeignClient साथ

आप तेजी से (अपने बुनियादी ढांचे के बाहर या सेवाओं) आप अन्य सेवाओं के लिए ग्राहकों को विकसित कर सकते हैं। यह रिबन और यूरेका के साथ एकीकृत है ताकि आप अपनी सेवाओं को @FeignClient(yourServiceNameInEureka) देख सकें और जो भी आप समाप्त कर रहे हैं वह एक ग्राहक है जो आपके पसंदीदा तर्क के साथ पंजीकृत उदाहरणों के बीच लोडबेलेंस है। यदि आप वसंत का उपयोग कर रहे हैं तो आप जिस एंडपॉइंट का उपयोग कर रहे हैं उसका वर्णन करने के लिए परिचित @RequestMapping एनोटेशन का उपयोग कर सकते हैं।

Hystrix - सर्किट ब्रेकर

डिफ़ॉल्ट अपने बहाना ग्राहकों hystrix का उपयोग करेगा रूप से, हर अनुरोध एक hystrix आदेश में लिपटे हो जाएगा। आप निश्चित रूप से हाथ से हाइट्रिक्स कमांड बना सकते हैं और अपनी आवश्यकताओं के लिए उन्हें कॉन्फ़िगर कर सकते हैं।

आपको काम करने के लिए थोड़ा कॉन्फ़िगर करना होगा (वास्तव में केवल कुछ @Enable आपकी कॉन्फ़िगरेशन पर एनोटेशन)।

मैं अत्यधिक प्रदान किए गए वसंत दस्तावेज़ीकरण को पढ़ने की अत्यधिक अनुशंसा करता हूं क्योंकि यह लगभग सभी पहलुओं को काफी तेज़ी से पढ़ता है।

http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html

+0

क्या यह संभव है और यह Zuul (एपीआई प्रवेश द्वार) के माध्यम से प्रॉक्सी सभी @FeignClient अनुरोध करने के लिए कोई मतलब होता है? – dementiev

+0

स्थिति पर निर्भर करता है, अगर आपके पास सेवाओं तक सीधी पहुंच है तो मैं मध्य व्यक्ति को छोड़ दूंगा, लेकिन यदि संसाधनों के पूल के सामने गेटवे लगाने का कोई अच्छा कारण है तो यह समझ में आएगा। –

संबंधित मुद्दे