في الأنظمة الموزعة ، تنتشر ملفات التكوين في كل مشروع ، مما يجعل من الصعب إدارتها مركزيًا ، أو إذا تم تعديل التكوين ، فيجب إعادة تشغيله قبل أن يصدر مفعوله. بعد ذلك ، نستخدم Cloud Config لحل نقطة الألم هذه.
خادم التكوين
نستخدم خادم التكوين كخادم التكوين ونحتاج فقط إلى إضافة تبعيات:
<Rependency> <roupiD> org.springframework.cloud </groupId> <Chotifactid> Spring-Cloud-Cloud-Config Server </stifactid> </premed>
في application.yml ، تكوين:
الربيع: التطبيق: الاسم: config-server # اسم السحابة: التكوين: الخادم: git: uri: ملف: https://github.com/yangdd1205/spring-cloud-master/ #username: اسم المستخدم #كلمة المرور: كلمة المرور #الافتراضية label: config #يمكن أن يكون معرفًا ، اسم الفرع ، اسم العلامة ، القيمة الافتراضية هي أيضًا master #-paths: #وبعبارة أخرى ، بالإضافة إلى البحث عن ملفات التكوين في موعد الجذر.
تتمتع مشاريع الربيع عمومًا بمبدأ "الاتفاقية أكبر من التكوين". لذلك ، يتم تسمية ملفات التكوين في GIT الخاصة بنا بشكل عام على اسم {Application}-{profile} .Yml أو {Application}-{profile} .properties.
لدينا ملفان client-dev.yml في الفرع الرئيسي لـ Config-Repo:
معلومات: Master-Dev
العميل-prod.yml:
معلومات: Master-Prod
في فرع التكوين ، هناك نوعان من العميل dev.yml:
معلومات: config-dev
العميل-prod.yml:
معلومات: config-prod
ابدأ خادم التكوين ، يمكننا الوصول إلى ملفات التكوين بالجيت من خلال علاقة التعيين التالية:
/{application )/ {profile) budap/ {label )/10/ {application )- {profile ).yml/ {label)http: // localhost: 4001/client-dev.yml
تكوين العميل
نحن نستخدم التكوين العادي كعميل التكوين ونضيف تبعيات:
<Rependency> <roupeD> org.springframework.boot </rougiD> <insifactid> Spring-Boot-Starter-Web </shintifactid> <reperence> <roupiD> org.springframework.cloud </groupid>
تكوين في bootstrap.yml (bootstrap.yml سيتم تحميل قبل application.yml):
الربيع: التطبيق: الاسم: العميل السحابة: التكوين: uri: http: // localhost: 4001/## يمثل عنوان ملف تعريف مركز التكوين: dev # يعادل spring.profiles.atective السمة ، ولكن الأولوية أعلى من SPRING.Profiles.Active #label
قم بإنشاء جهاز اختبار في التكوين العادي:
RestControllerPublic Class TestController {value ("$ {info}") معلومات سلسلة خاصة ؛ requestMapping (value = "/getInfo") السلسلة العامة getInfo () {return this.info ؛ }}قم بزيارة http: // localhost: 4002/getInfo
قم بتعديل الملف الشخصي في ملف تكوين التكوين العادي لتجاوزه والوصول إليه لعرض النتائج.
لقد قمنا الآن بتنفيذ ملفات التكوين لإدارتها بطريقة موحدة ، ولكن بعد تعديل ملفات التكوين ، كيف لا يمكننا إعادة التشغيل وتصبح مفيدة؟
نقدم تبعيات في التكوين العادي:
<Rependency> <roupiD> org.springframework.boot </rougiD> <intifactid> spring-boot-starter-actuator </shintifactid> </sependency>
أضف التعليق التوضيحي @refreshscope إلى الفصل الذي يحتاج إلى تحديث ديناميكي ، هنا نضيفه إلى testController. وتعطيل مصادقة إذن المشغل في ملف التكوين:
الإدارة: الأمان: ممكّن: خطأ
أعد تشغيل المشروع ، http: // localhost: 4002/getInfo النتيجة هي: config-dev ، والآن قم بتعديل ملف config-dev.yml:
معلومات: config-dev-1.0
استدعاء طريقة المشغل وتحديث يدويًا. http: // localhost: 4002/تحديث ملاحظة: يجب أن تكون طريقة نشر. يمكنك أن ترى ما هي التغييرات:
[ "معلومات"]
تفضل بزيارة http: // localhost: 4002/getInfo مرة أخرى والنتيجة هي: config-dev-1.0.
لقد وجدنا أنه على الرغم من أنه يمكن تحديث التكوين ديناميكيًا ، إلا أنه يجب استدعاء طريقة التحديث يدويًا في كل مرة. إذا كان لدي 1000 خدمة ، يجب أن أسميها 1000 مرة. هل هناك طريقة أفضل؟ وهذا هو استخدامه بالتزامن مع الحافلة السحابية الربيعية.
متاح للغاية
الآن هو خادم التكوين الخاص بنا هو خدمة نقطة واحدة ، وبمجرد تعليق عميل التكوين الأخير ، لن يتم استخدامه. إذن في الجيل ، يجب أن يكون خادم التكوين متاحًا للغاية ، فكيف تفعل ذلك؟ الأمر بسيط للغاية. تمامًا مثل توافر Eureka المذكور سابقًا ، تحتاج فقط إلى نشر العديد من خادم التكوين.
نستخدم مشروع Eureka كمركز للتسجيل مع المنفذ: 7001.
انسخ خادم التكوين إلى config-server-1 ، مع المنفذ: 4003 ، وتسجيل كلا خوادم التكوين في مركز التسجيل.
قم بتسجيل Config-Client على السجل وحدد للحصول على خادم التكوين من Eureka:
الربيع: سحابة: التكوين: #URI: http: // localhost: 4001/## يمثل عنوان مركز التكوين ، حدد مباشرة عنوان عنوان خادم التكوين: dev #label: تكوين اكتشاف: تمكين: TRUE # تمكين الحصول
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.