स्वास्थ्य जाँच और लचीलापन पैटर्न
दोष-सहिष्णु प्रणालियों के लिए सुदृढ़ स्वास्थ्य जाँच डिज़ाइन करें, सर्किट ब्रेकर लागू करें और अन्य लचीलापन पैटर्न अपनाएँ।
स्वास्थ्य जाँच और लचीलापन पैटर्न, CoddyKit पर Spring Boot 4 की संपूर्ण मार्गदर्शिका का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Spring Boot 4 की संपूर्ण मार्गदर्शिका सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Spring Boot 4 की संपूर्ण मार्गदर्शिका पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
स्वास्थ्य जाँच का परिचय
उत्पादन वातावरण में अनुप्रयोगों का विश्वसनीय होना आवश्यक है। स्वास्थ्य जाँच यह सत्यापित करने के स्वचालित तरीके हैं कि कोई अनुप्रयोग या सेवा सही ढंग से चल रही है और ट्रैफ़िक प्राप्त करने के लिए तैयार है।
- वे ऑर्केस्ट्रेटर्स (जैसे Kubernetes) को बताते हैं कि आपका ऐप सक्रिय है।
- वे अस्वस्थ इंस्टैंसेज़ को ट्रैफ़िक भेजे जाने से रोकते हैं।
- वे स्वचालित पुनर्प्राप्ति और स्केलिंग संबंधी निर्णयों में सहायता करते हैं।
Spring Boot Actuator स्वास्थ्य
Spring Boot Actuator में अंतर्निहित /actuator/health एंडपॉइंट उपलब्ध होता है। डिफ़ॉल्ट रूप से, यह डेटाबेस, डिस्क स्पेस और अन्य विभिन्न घटकों से स्वास्थ्य संबंधी जानकारी एकत्र करता है।
इसे एक्सेस करने पर यह आमतौर पर UP या DOWN स्थिति लौटाता है और इसमें शामिल घटकों का विवरण भी देता है।
स्वास्थ्य एंडपॉइंट तक पहुँचना
स्वास्थ्य स्थिति देखने के लिए, आपको Actuator सक्षम करके एंडपॉइंट तक पहुँचना होगा। इसे application.properties में इस प्रकार कॉन्फ़िगर किया जा सकता है:
management.endpoints.web.exposure.include=health
management.endpoint.health.show-details=alwaysकस्टम स्वास्थ्य संकेतक
कभी-कभी डिफ़ॉल्ट स्वास्थ्य जाँच पर्याप्त नहीं होतीं। आपके पास कोई बाहरी API, कस्टम कैश या ऐसा विशिष्ट व्यावसायिक तर्क हो सकता है जिसकी निगरानी आवश्यक हो।
आप HealthIndicator इंटरफ़ेस लागू करके कस्टम स्वास्थ्य संकेतक बना सकते हैं और /actuator/health एंडपॉइंट में अपनी जाँच जोड़ सकते हैं।
कस्टम संकेतक लागू करना
आइए एक काल्पनिक बाहरी सेवा के लिए सरल कस्टम स्वास्थ्य संकेतक बनाएँ। यदि सेवा 'उपलब्ध' है, तो यह UP रिपोर्ट करता है; अन्यथा DOWN।
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;
@Component
public class ExternalServiceHealthIndicator implements HealthIndicator {
private final String SERVICE_NAME = "MyExternalService";
@Override
public Health health() {
if (isExternalServiceUp()) {
return Health.up().withDetail(SERVICE_NAME, "Available").build();
} else {
return Health.down().withDetail(SERVICE_NAME, "Not Available").build();
}
}
private boolean isExternalServiceUp() {
// Simulate checking external service status
// In a real app, this would involve network calls, DB queries, etc.
return Math.random() > 0.3; // 70% chance of being up
}
public static void main(String[] args) {
ExternalServiceHealthIndicator indicator = new ExternalServiceHealthIndicator();
System.out.println("Service Health: " + indicator.health().getStatus());
}
}जीवंतता बनाम तत्परता जाँच
Kubernetes जैसे कंटेनर ऑर्केस्ट्रेटर्स पर परिनियोजित करते समय, दो प्रकार की जाँच महत्वपूर्ण होती हैं:
- जीवंतता जाँच: यह निर्धारित करती है कि अनुप्रयोग इंस्टैंस चल रहा है या नहीं। विफल होने पर Kubernetes कंटेनर को फिर से शुरू करता है।
- तत्परता जाँच: यह निर्धारित करती है कि अनुप्रयोग इंस्टैंस ट्रैफ़िक प्रदान करने के लिए तैयार है या नहीं। विफल होने पर Kubernetes उसे ट्रैफ़िक भेजना रोक देता है।
Spring Boot 2.3+ ने इनके लिए अलग-अलग स्वास्थ्य समूह प्रस्तुत किए, जिन्हें अक्सर /actuator/health/liveness और /actuator/health/readiness पर मैप किया जाता है।
लचीलेपन का परिचय
स्वास्थ्य जाँच के बावजूद, बाहरी निर्भरताएँ विफल हो सकती हैं, जिससे आपका अनुप्रयोग क्रैश या धीमा हो सकता है। लचीलेपन के पैटर्न आपके अनुप्रयोग को विफलताओं को सहजता से संभालने और प्रतिकूल परिस्थितियों में भी काम जारी रखने में सहायता करते हैं।
- वे दोष-सहनशीलता और स्थिरता बढ़ाते हैं।
- वे सेवाओं में विफलताओं के श्रृंखलाबद्ध प्रभाव को रोकते हैं।
- वे सिस्टम के कुछ हिस्सों में समस्या होने पर भी बेहतर उपयोगकर्ता अनुभव सुनिश्चित करते हैं।
सर्किट ब्रेकर पैटर्न
Circuit Breaker पैटर्न किसी ऐसे संचालन को बार-बार चलाने से अनुप्रयोग को रोकता है जिसके विफल होने की संभावना हो। यह विद्युत सर्किट ब्रेकर जैसा है: जब बहुत अधिक विद्युत धारा बहती है, तो नुकसान रोकने के लिए यह ट्रिप हो जाता है।
- CLOSED: अनुरोध आगे जाते हैं। यदि विफलताएँ सीमा से अधिक हो जाएँ, तो यह OPEN में ट्रिप हो जाता है।
- OPEN: अनुरोध तुरंत विफल हो जाते हैं (तेज़ विफलता)। टाइमआउट के बाद यह HALF_OPEN में बदल जाता है।
- HALF_OPEN: सीमित संख्या में परीक्षण अनुरोधों की अनुमति होती है। वे सफल होने पर यह बंद हो जाता है; अन्यथा फिर से खुल जाता है।
Resilience4j के साथ सर्किट ब्रेकर
Resilience4j लचीलेपन के पैटर्न लागू करने के लिए एक लोकप्रिय लाइब्रेरी है। यहाँ धीमे मेथड कॉल की सुरक्षा करने वाले सर्किट ब्रेकर का सरल उदाहरण दिया गया है।
import io.github.resilience4j.circuitbreaker.CircuitBreaker;
import io.github.resilience4j.circuitbreaker.CircuitBreakerConfig;
import io.github.resilience4j.circuitbreaker.CircuitBreakerRegistry;
import java.time.Duration;
public class CircuitBreakerDemo {
private final CircuitBreaker circuitBreaker;
public CircuitBreakerDemo() {
CircuitBreakerConfig circuitBreakerConfig = CircuitBreakerConfig.custom()
.failureRateThreshold(50) // 50% failure rate to open
.waitDurationInOpenState(Duration.ofSeconds(5)) // 5s before HALF_OPEN
.ringBufferSizeInHalfOpenState(2) // 2 calls in HALF_OPEN
.ringBufferSizeInClosedState(5) // 5 calls in CLOSED for failure rate calc
.build();
CircuitBreakerRegistry circuitBreakerRegistry =
CircuitBreakerRegistry.of(circuitBreakerConfig);
circuitBreaker = circuitBreakerRegistry.circuitBreaker("myService");
}
public String callExternalService() {
return circuitBreaker.executeSupplier(() -> {
if (Math.random() < 0.6) { // Simulate 60% failure rate
throw new RuntimeException("Service failed!");
}
return "Service Data";
});
}
public static void main(String[] args) {
CircuitBreakerDemo demo = new CircuitBreakerDemo();
for (int i = 0; i < 15; i++) {
try {
System.out.println(i + ": " + demo.callExternalService());
} catch (Exception e) {
System.err.println(i + ": Error - " + e.getMessage() +
" | CB State: " + demo.circuitBreaker.getState());
try { Thread.sleep(500); } catch (InterruptedException ie) {}
}
}
}
}फ़ॉलबैक मेथड्स
जब सर्किट ब्रेकर खुला हो या सेवा कॉल विफल हो जाए, तो आप हमेशा केवल त्रुटि उत्पन्न नहीं करना चाहेंगे। फ़ॉलबैक मेथड प्राथमिक संचालन के विफल होने पर वैकल्पिक प्रतिक्रिया या कार्रवाई प्रदान करता है।
इससे आपका अनुप्रयोग सहज रूप से सीमित क्षमता में काम जारी रख सकता है; उदाहरण के लिए, क्रैश होने या पूरी त्रुटि स्क्रीन दिखाने के बजाय कैश किया हुआ डेटा, डिफ़ॉल्ट प्रतिक्रिया या खाली सूची लौटाई जा सकती है।
लचीलेपन की त्वरित जाँच
Circuit Breaker जैसे लचीलेपन के पैटर्न लागू करने के निम्नलिखित में से कौन-कौन से लाभ हैं?
पुनरावलोकन: स्वास्थ्य और लचीलापन
हमने देखा कि Spring Boot Actuator और कस्टम संकेतकों के साथ स्वास्थ्य जाँच अनुप्रयोग की स्थिति और ट्रैफ़िक के लिए उसकी तत्परता पर निगरानी रखने में कैसे सहायता करती हैं।
हमने लचीलेपन के पैटर्न के बारे में भी सीखा और Circuit Breaker पर ध्यान दिया, जो श्रृंखलाबद्ध विफलताओं को रोकता है और बाहरी सेवाओं या घटकों के विफल होने पर सहज रूप से सीमित संचालन सुनिश्चित करता है। विश्वसनीय, उत्पादन के लिए तैयार माइक्रोसर्विसेज़ बनाने के लिए इन पैटर्न को लागू करना महत्वपूर्ण है।
एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 21
- पाठ
- 84
अक्सर पूछे जाने वाले प्रश्न
क्या “स्वास्थ्य जाँच और लचीलापन पैटर्न” पाठ निःशुल्क है?
हाँ — Spring Boot 4 की संपूर्ण मार्गदर्शिका अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “स्वास्थ्य जाँच और लचीलापन पैटर्न” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Spring Boot 4 की संपूर्ण मार्गदर्शिका पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“स्वास्थ्य जाँच और लचीलापन पैटर्न” में मैं क्या सीखूँगा?
दोष-सहिष्णु प्रणालियों के लिए सुदृढ़ स्वास्थ्य जाँच डिज़ाइन करें, सर्किट ब्रेकर लागू करें और अन्य लचीलापन पैटर्न अपनाएँ। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Spring Boot 4 की संपूर्ण मार्गदर्शिका का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Spring Boot 4 की संपूर्ण मार्गदर्शिका शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Spring Boot 4 की संपूर्ण मार्गदर्शिका शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“स्वास्थ्य जाँच और लचीलापन पैटर्न” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Spring Boot 4 की संपूर्ण मार्गदर्शिका पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Spring Boot 4 की संपूर्ण मार्गदर्शिका पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Kubernetes ऑर्केस्ट्रेशन की मूल बातें
- Sleuth और Zipkin के साथ वितरित ट्रेसिंग
- स्वास्थ्य जाँच और लचीलापन पैटर्न
- Micrometer और Prometheus के साथ मेट्रिक्स और डैशबोर्ड