
वितरित प्रणालियों के लिए केंद्रीकृत कॉन्फ़िगरेशन सर्वर, जिसमें HTTP API, Git-आधारित स्टोरेज, प्रॉपर्टी एन्क्रिप्शन/डिक्रिप्शन, और Vault, JDBC तथा स्थानीय फ़ाइलसिस्टम के साथ एकीकरण शामिल है।
//// इस फ़ाइल को संपादित न करें। यह जनरेट की गई है। इस फ़ाइल में किए गए मैन्युअल परिवर्तन पुनः जनरेट होने पर खो जाएंगे। इसके बजाय src/main/asciidoc/ निर्देशिका में फ़ाइलों को संपादित करें। ////
image::https://circleci.com/gh/spring-cloud/spring-cloud-config/tree/master.svg?style=svg["CircleCI", link="https://circleci.com/gh/spring-cloud/spring-cloud-config/tree/master"] image::https://codecov.io/gh/spring-cloud/spring-cloud-config/branch/master/graph/badge.svg["Codecov", link="https://codecov.io/gh/spring-cloud/spring-cloud-config/branch/master"] image::https://api.codacy.com/project/badge/Grade/f064024a072c477e97dca6ed5a70fccd?branch=master["Codacy code quality", link="https://www.codacy.com/app/Spring-Cloud/spring-cloud-config?branch=master&utm_source=github.com&utm_medium=referral&utm_content=spring-cloud/spring-cloud-config&utm_campaign=Badge_Grade"]
Spring Cloud Config वितरित प्रणाली में बाहरी कॉन्फ़िगरेशन के लिए सर्वर-साइड और क्लाइंट-साइड समर्थन प्रदान करता है। Config Server के साथ, आपके पास सभी वातावरणों में अनुप्रयोगों के लिए बाहरी प्रॉपर्टी प्रबंधित करने के लिए एक केंद्रीय स्थान होता है।
क्लाइंट और सर्वर दोनों पर अवधारणाएँ Spring Environment और PropertySource एब्स्ट्रैक्शन से समान रूप से मेल खाती हैं, इसलिए वे Spring अनुप्रयोगों के साथ बहुत अच्छी तरह से फिट होती हैं, लेकिन इन्हें किसी भी भाषा में चलने वाले किसी भी अनुप्रयोग के साथ उपयोग किया जा सकता है।
जब कोई अनुप्रयोग डेवलपमेंट से टेस्ट और फिर प्रोडक्शन तक डिप्लॉयमेंट पाइपलाइन से गुजरता है, तो आप उन वातावरणों के बीच कॉन्फ़िगरेशन प्रबंधित कर सकते हैं और निश्चिंत रह सकते हैं कि माइग्रेट करते समय अनुप्रयोगों के पास चलने के लिए आवश्यक सब कुछ है।
सर्वर स्टोरेज बैकएंड का डिफ़ॉल्ट कार्यान्वयन git का उपयोग करता है, इसलिए यह कॉन्फ़िगरेशन वातावरण के लेबल किए गए संस्करणों को आसानी से समर्थन देता है और सामग्री प्रबंधित करने के लिए कई प्रकार के टूलिंग के लिए सुलभ होता है।
वैकल्पिक कार्यान्वयन जोड़ना और उन्हें Spring कॉन्फ़िगरेशन के साथ प्लग करना आसान है।
== विशेषताएँ
=== Spring Cloud Config सर्वर
Spring Cloud Config सर्वर निम्नलिखित लाभ प्रदान करता है:
@EnableConfigServer का उपयोग करके Spring Boot अनुप्रयोग में आसानी से एम्बेड करने योग्य=== Spring Cloud Config क्लाइंट
विशेष रूप से Spring अनुप्रयोगों के लिए, Spring Cloud Config क्लाइंट आपको निम्न की अनुमति देता है:
Environment को आरंभ करें।@Beans के लिए @RefreshScope, जिन्हें कॉन्फ़िगरेशन बदलने पर पुनः आरंभ करना हो।/env — Environment अपडेट करने और @ConfigurationProperties तथा लॉग स्तरों को पुनः बाइंड करने के लिए।
** /refresh — @RefreshScope बीन्स को रिफ्रेश करने के लिए।
** /restart — Spring कॉन्टेक्स्ट को पुनः आरंभ करने के लिए (डिफ़ॉल्ट रूप से अक्षम)।
** /pause और /resume — Lifecycle विधियों को कॉल करने के लिए (ApplicationContext पर stop() और start())।== त्वरित आरंभ
यह त्वरित आरंभ Spring Cloud Config सर्वर के सर्वर और क्लाइंट दोनों के उपयोग के बारे में बताता है।
सबसे पहले, सर्वर को निम्नानुसार प्रारंभ करें:
सर्वर एक Spring Boot अनुप्रयोग है, इसलिए यदि आप चाहें तो इसे अपने IDE से चला सकते हैं (मुख्य क्लास ConfigServerApplication है)।
इसके बाद एक क्लाइंट को निम्नानुसार आज़माएँ:
प्रॉपर्टी स्रोतों का पता लगाने की डिफ़ॉल्ट रणनीति एक git रिपॉज़िटरी (spring.cloud.config.server.git.uri पर) क्लोन करना और उसे एक मिनी SpringApplication आरंभ करने के लिए उपयोग करना है।
मिनी-एप्लिकेशन के Environment का उपयोग प्रॉपर्टी स्रोतों को सूचीबद्ध करने और उन्हें JSON एंडपॉइंट पर प्रकाशित करने के लिए किया जाता है।
HTTP सेवा में निम्नलिखित रूप के रिसोर्स होते हैं:
जहाँ application को SpringApplication में spring.config.name के रूप में इंजेक्ट किया जाता है (जो सामान्य Spring Boot ऐप में सामान्यतः application होता है), profile एक सक्रिय प्रोफ़ाइल (या प्रॉपर्टी की कॉमा-सेपरेटेड सूची) है, और label एक वैकल्पिक git लेबल है (डिफ़ॉल्ट master है।)
Spring Cloud Config सर्वर दूरस्थ क्लाइंट्स के लिए विभिन्न स्रोतों से कॉन्फ़िगरेशन प्राप्त करता है। निम्नलिखित उदाहरण एक git रिपॉज़िटरी से कॉन्फ़िगरेशन लेता है (जो प्रदान की जानी चाहिए), जैसा कि निम्नलिखित उदाहरण में दिखाया गया है:
अन्य स्रोतों में कोई भी JDBC संगत डेटाबेस, Subversion, Hashicorp Vault, Credhub और स्थानीय फ़ाइल सिस्टम शामिल हैं।
=== क्लाइंट साइड उपयोग
किसी अनुप्रयोग में इन सुविधाओं का उपयोग करने के लिए, आप इसे एक Spring Boot अनुप्रयोग के रूप में बना सकते हैं जो spring-cloud-config-client पर निर्भर करता है (उदाहरण के लिए, config-client के टेस्ट केस या सैंपल अनुप्रयोग देखें)।
डिपेंडेंसी जोड़ने का सबसे सुविधाजनक तरीका Spring Boot स्टार्टर org.springframework.cloud:spring-cloud-starter-config है।
Maven उपयोगकर्ताओं के लिए एक पैरेंट pom और BOM (spring-cloud-starter-parent) भी है, और Gradle व Spring CLI उपयोगकर्ताओं के लिए Spring IO संस्करण प्रबंधन प्रॉपर्टी फ़ाइल भी है। निम्नलिखित उदाहरण एक विशिष्ट Maven कॉन्फ़िगरेशन दिखाता है:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>{spring-boot-docs-version}</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>{spring-cloud-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<!-- repositories also needed for snapshots and milestones -->
अब आप एक मानक Spring Boot अनुप्रयोग बना सकते हैं, जैसे निम्नलिखित HTTP सर्वर:
@SpringBootApplication @RestController public class Application {
@RequestMapping("/")
public String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
जब यह HTTP सर्वर चलता है, तो यह पोर्ट 8888 पर डिफ़ॉल्ट लोकल config सर्वर (यदि चल रहा है) से बाहरी कॉन्फ़िगरेशन प्राप्त करता है।
स्टार्टअप व्यवहार को संशोधित करने के लिए, आप bootstrap.properties का उपयोग करके config सर्वर का स्थान बदल सकते हैं (application.properties के समान, लेकिन एप्लिकेशन कॉन्टेक्स्ट के बूटस्ट्रैप चरण के लिए), जैसा कि निम्नलिखित उदाहरण में दिखाया गया है: