
वितरित सिस्टम के लिए केंद्रीकृत कॉन्फ़िगरेशन सर्वर, जिसमें 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 वितरित प्रणाली में बाह्य कॉन्फ़िगरेशन (externalized configuration) के लिए सर्वर-साइड और क्लाइंट-साइड समर्थन प्रदान करता है। Config Server के साथ, आपके पास सभी वातावरणों में एप्लिकेशन के लिए बाहरी प्रॉपर्टी का प्रबंधन करने के लिए एक केंद्रीय स्थान होता है।
क्लाइंट और सर्वर दोनों पर अवधारणाएँ स्प्रिंग Environment और PropertySource अमूर्तताओं के साथ समान रूप से मैप होती हैं, इसलिए वे स्प्रिंग अनुप्रयोगों के साथ बहुत अच्छी तरह से फिट होती हैं लेकिन किसी भी भाषा में चलने वाले किसी भी एप्लिकेशन के साथ उपयोग की जा सकती हैं।
जब कोई एप्लिकेशन डेव से टेस्ट और प्रोडक्शन में डिप्लॉयमेंट पाइपलाइन से गुज़रता है, तो आप उन वातावरणों के बीच कॉन्फ़िगरेशन का प्रबंधन कर सकते हैं और सुनिश्चित कर सकते हैं कि जब वे माइग्रेट करें तो एप्लिकेशन के पास चलने के लिए आवश्यक सब कुछ हो।
सर्वर स्टोरेज बैकएंड के डिफ़ॉल्ट कार्यान्वयन में git का उपयोग होता है, इसलिए यह कॉन्फ़िगरेशन वातावरण के लेबल वाले संस्करणों को आसानी से समर्थन करता है और साथ ही सामग्री प्रबंधन के लिए उपकरणों की एक विस्तृत श्रृंखला के लिए सुलभ है।
वैकल्पिक कार्यान्वयन जोड़ना और उन्हें स्प्रिंग कॉन्फ़िगरेशन के साथ प्लग करना आसान है।
== विशेषताएँ
=== Spring Cloud Config Server
Spring Cloud Config Server निम्नलिखित लाभ प्रदान करता है:
@EnableConfigServer का उपयोग करके स्प्रिंग Boot एप्लिकेशन में आसानी से एम्बेड करने योग्य=== Spring Cloud Config Client
विशेष रूप से स्प्रिंग अनुप्रयोगों के लिए, Spring Cloud Config Client आपको निम्नलिखित की अनुमति देता है:
Environment को आरंभ करें।@RefreshScope उन Spring @Beans के लिए जो कॉन्फ़िगरेशन बदलने पर पुनः आरंभ होना चाहते हैं।/env - Environment को अपडेट करने और @ConfigurationProperties तथा लॉग स्तरों को पुनः बाइंड करने के लिए।
** /refresh - @RefreshScope बीन्स को रिफ्रेश करने के लिए।
** /restart - Spring संदर्भ को पुनरारंभ करने के लिए (डिफ़ॉल्ट रूप से अक्षम)।
** /pause और /resume - Lifecycle विधियों (ApplicationContext पर stop() और start()) को कॉल करने के लिए।== त्वरित प्रारंभ
यह त्वरित प्रारंभ Spring Cloud Config Server के सर्वर और क्लाइंट दोनों के उपयोग के माध्यम से चलता है।
पहले, सर्वर को इस प्रकार प्रारंभ करें:
सर्वर एक 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 Server विभिन्न स्रोतों से दूरस्थ क्लाइंट के लिए कॉन्फ़िगरेशन खींचता है। निम्नलिखित उदाहरण 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 पर बाहरी कॉन्फ़िगरेशन उठाता है।
स्टार्टअप व्यवहार को संशोधित करने के लिए, आप bootstrap.properties (जो application.properties के समान है लेकिन एप्लिकेशन संदर्भ के बूटस्ट्रैप चरण के लिए) का उपयोग करके कॉन्फ़िग सर्वर का स्थान बदल सकते हैं, जैसा निम्नलिखित उदाहरण में दिखाया गया है: