
خادم تكوين مركزي للأنظمة الموزعة مع 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 Cloud Config
خاص بتطبيقات Spring، يتيح لك عميل Spring Cloud Config:
Environment بمصادر خصائص عن بُعد.@RefreshScope لـ Spring @Beans التي تريد إعادة تهيئتها عند تغيّر الإعداد./env لتحديث Environment وإعادة ربط @ConfigurationProperties ومستويات السجل.
** /refresh لتحديث حبوب @RefreshScope.
** /restart لإعادة تشغيل سياق Spring (معطّل افتراضياً).
** /pause و/resume لاستدعاء أساليب Lifecycle (stop() وstart() على ApplicationContext).== بدء سريع
يتناول هذا الدليل السريع استخدام كل من الخادم والعميل في Spring Cloud Config Server.
أولاً، شغّل الخادم كما يلي:
الخادم هو تطبيق Spring Boot، لذا يمكنك تشغيله من بيئة التطوير المتكاملة (IDE) الخاصة بك إذا كنت تفضل ذلك (الفئة الرئيسية هي ConfigServerApplication).
بعد ذلك جرّب عميلاً كما يلي:
الاستراتيجية الافتراضية لتحديد مواقع مصادر الخصائص هي استنساخ مستودع git (على spring.cloud.config.server.git.uri) واستخدامه لتهيئة SpringApplication مصغّر.
يُستخدم Environment الخاص بالتطبيق المصغّر لتعداد مصادر الخصائص ونشرها في نقطة نهاية JSON.
توفّر خدمة HTTP موارد بالشكل التالي:
حيث يتم حقن application كـ spring.config.name في SpringApplication (وهو ما يكون عادةً application في تطبيق Spring Boot عادي)، و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.
يتوفر أيضاً pom أصلي وBOM (spring-cloud-starter-parent) لمستخدمي Maven وملف خصائص لإدارة إصدارات Spring IO لمستخدمي Gradle وSpring CLI. يوضح المثال التالي إعداد 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 لكنه مخصص لمرحلة التمهيد في سياق التطبيق)، كما يوضح المثال التالي:
افتراضياً، إذا لم يتم تعيين اسم تطبيق، سيتم استخدام application. لتعديل الاسم، يمكن إضافة الخاصية التالية إلى ملف bootstrap.properties:
NOTE: عند تعيين الخاصية ${spring.application.name} لا تضع البادئة المحجوزة application- أمام اسم تطبيقك لتجنب مشاكل في تحديد مصدر الخاصية الصحيح.
تظهر خصائص التمهيد في نقطة النهاية /env كمصدر خصائص ذي أولوية عالية، كما يوضح المثال التالي.
مصدر الخصائص المسمى ```configService:/يحتوي على خاصيةfooبقيمةbar` وله الأولوية القصوى.
NOTE: عنوان URL في اسم مصدر الخصائص هو مستودع git، وليس عنوان URL الخاص بخادم الإعداد.
=== التطبيق النموذجي