Java में माइक्रोसर्विस आर्किटेक्चर का परिचय
माइक्रोसर्विस आर्किटेक्चर सॉफ्टवेयर विकास के लिए एक दृष्टिकोण है, जिसमें एप्लिकेशन को छोटी, स्वतंत्र रूप से डिप्लॉय की जा सकने वाली सेवाओं के एक सेट के रूप में बनाया जाता है। प्रत्येक सेवा एक विशिष्ट व्यावसायिक कार्य को लागू करती है और हल्के प्रोटोकॉल, अक्सर HTTP/REST या मैसेज क्यू के माध्यम से दूसरों के साथ संचार करती है। Java, अपनी परिपक्व इकोसिस्टम और फ्रेमवर्क के कारण, इस क्षेत्र में अग्रणी में से एक है।
मोनोलिथिक एप्लिकेशन के विपरीत, जहां सारा कोड एक ही प्रक्रिया में होता है, माइक्रोसर्विस अलग-अलग घटकों को स्केल करने, विभिन्न कार्यों के लिए अलग-अलग तकनीकों का उपयोग करने और डिप्लॉयमेंट को सरल बनाने की अनुमति देते हैं। इस लेख में, हम आर्किटेक्चर के प्रमुख सिद्धांतों का विश्लेषण करेंगे, Spring Boot का उपयोग करके Java में एक व्यावहारिक उदाहरण देखेंगे, और सुरक्षा और मॉनिटरिंग के मुद्दों पर भी चर्चा करेंगे।
माइक्रोसर्विस आर्किटेक्चर के मुख्य सिद्धांत
स्वतंत्रता और ढीला युग्मन
प्रत्येक माइक्रोसर्विस का अपना डेटा स्टोरेज होना चाहिए और वह अन्य सेवाओं के आंतरिक कार्यान्वयन पर निर्भर नहीं होना चाहिए। यह टीमों को अपनी सेवाओं को स्वतंत्र रूप से विकसित करने, परीक्षण करने और डिप्लॉय करने की अनुमति देता है। ढीला युग्मन स्पष्ट रूप से परिभाषित API (REST, gRPC) और क्यू (RabbitMQ, Kafka) के माध्यम से एसिंक्रोनस इंटरैक्शन के द्वारा प्राप्त किया जाता है।
विकेंद्रीकृत डेटा प्रबंधन
मोनोलिथ के विपरीत, जहां एक डेटाबेस पूरे एप्लिकेशन को सेवा प्रदान करता है, प्रत्येक माइक्रोसर्विस अपने स्वयं के डेटाबेस का प्रबंधन करता है। यह PostgreSQL, MongoDB या यहां तक कि in-memory स्टोरेज भी हो सकता है। इस दृष्टिकोण को Database per Service कहा जाता है और यह डेटा स्कीमा में बदलाव के दौरान होने वाले विवादों को रोकता है।
स्थिरता और दोष सहनशीलता
माइक्रोसर्विस को इस तरह से डिज़ाइन किया जाना चाहिए कि एक सेवा की विफलता पूरे सिस्टम के कामकाज को बाधित न करे। पैटर्न का उपयोग किया जाता है: Circuit Breaker (Hystrix या Resilience4j), Retry, Timeout और Bulkhead। कुछ सेवाओं के अनुपलब्ध होने पर आंशिक कार्यक्षमता (graceful degradation) को लागू करना भी महत्वपूर्ण है।
Spring Boot के साथ Java में माइक्रोसर्विस का व्यावहारिक कार्यान्वयन
Spring Boot Java में माइक्रोसर्विस बनाने के लिए सबसे लोकप्रिय फ्रेमवर्क है। यह एक अंतर्निहित सर्वर (Tomcat, Jetty), स्वचालित कॉन्फ़िगरेशन और स्टार्टर्स का एक विस्तृत सेट प्रदान करता है। आइए उपयोगकर्ताओं के प्रबंधन के लिए एक सरल माइक्रोसर्विस बनाने पर विचार करें।
बेसिक REST-सर्विस
हम एक माइक्रोसर्विस user-service बनाएंगे, जो User एंटिटी के लिए CRUD ऑपरेशन प्रदान करता है।
@RestController@RequestMapping("/api/users")public class UserController {
@Autowired private UserService userService;
@GetMapping("/{id}") public ResponseEntity<User> getUser(@PathVariable Long id) { User user = userService.findById(id); return ResponseEntity.ok(user); }
@PostMapping public ResponseEntity<User> createUser(@RequestBody User user) { User saved = userService.save(user); return ResponseEntity.status(HttpStatus.CREATED).body(saved); }
@PutMapping("/{id}") public ResponseEntity<User> updateUser(@PathVariable Long id, @RequestBody User user) { User updated = userService.update(id, user); return ResponseEntity.ok(updated); }
@DeleteMapping("/{id}") public ResponseEntity<Void> deleteUser(@PathVariable Long id) { userService.delete(id); return ResponseEntity.noContent().build(); }}UserService क्लास में बिजनेस लॉजिक होता है और यह Spring Data JPA रिपॉजिटरी तक पहुंचता है। यह ध्यान रखना महत्वपूर्ण है कि प्रत्येक सेवा का अपना डेटाबेस होता है। user-service के लिए, यह users टेबल वाला PostgreSQL हो सकता है।
Eureka के साथ सर्विस डिस्कवरी
माइक्रोसर्विस आर्किटेक्चर में, सेवाएं गतिशील रूप से रजिस्टर होती हैं और एक-दूसरे को ढूंढती हैं। Netflix Eureka एक लोकप्रिय सर्विस डिस्कवरी है। आइए जोड़ते हैं