ملخص
لنفترض أن هناك شرطًا الآن:
يتم نشر تطبيقنا على 10 آلات. عندما نقوم بضبط معلمة تكوين معينة ، لا نحتاج إلى إعادة تشغيل الجهاز. 10 آلات يمكنها تلقائيًا الحصول على أحدث التكوين.
كيف تحقق ذلك؟ هناك أنواع كثيرة ، مثل:
1. ضع التكوين في قاعدة بيانات ، وفي كل مرة يقرأ التطبيق التكوين مباشرة من DB. وبهذه الطريقة ، نحتاج فقط إلى تغيير DB وتحديث أحدث معلومات التكوين إلى قاعدة البيانات. وبهذه الطريقة ، بغض النظر عن عدد التطبيقات ، نظرًا لأنها جميعها تحصل على معلومات التكوين من نفس DB ، يمكنهم بطبيعة الحال الحصول على أحدث التكوين.
2. يوفر كل جهاز واجهة updateConfig تقوم بتحديث معلومات التكوين. عندما يكون من الضروري تعديل التكوين ، تسمى واجهة updateConfig للخادم واحدًا تلو الآخر.
3. استخدم Redis لتنفيذها ووضع معلومات التكوين على Redis ، ولكن بهذه الطريقة ، يجب عليك قراءتها في كل مرة ، والتي لديها المزيد من طلبات الشبكة.
الأساليب الثلاثة المذكورة أعلاه هي الأسهل في التفكير وسهل القيام بها ، ولكن بالطبع هناك العديد من العيوب. على الرغم من وجود العديد من أوجه القصور ، فإن بعض الشركات التقليدية تفعل ذلك.
في شركات الإنترنت ، لم أر أبدًا أي شخص يلعب مثل هذا ، ويستخدمون جميعًا مراكز التكوين الموزعة. استخدم المصدر المفتوح أو تطبيقه بنفسك. حاليًا ، هناك العديد من مراكز التكوين الموزعة المصدر المفتوح ، كما أن تكوين سحابة الربيع هو الأفضل بينها. بعد ذلك ، سوف نستخدم Spring Cloud Config لتنفيذ مركز تكوين موزع.
ما إذا كنت تستخدم أحدث إصدار من Spring Boot 2.0
اعتدت استخدام أحدث Spring Cloud 2.0 للقيام بعرض توزيع موزع هو مركز التكوين. اعتقدت أن الأمر كان بسيطًا ، لكن الأمر استغرق يومًا كاملاً لإنجازه. هناك عدة أسباب:
1. لم يتم تحديث المستند المقابل لـ Spring Cloud تمامًا ، وهناك مشكلة ولا يمكن العثور عليها في المستند ؛
2. حاليًا ، هناك عدد قليل من الشركات التي تستخدم الإصدار 2.0 ، ولا توجد مقالات عملية محددة على الإنترنت. بعد اندلاع المشكلة ، لم يتمكن بايدو من إيجاد حل. من الصعب بشكل أساسي على Google إيجاد حلول ، وكلها شظايا المعرفة المتقطعة ؛
3. هناك بعض التغييرات الطفيفة في التكوين والحافلة في الإصدار 2.0 ، وإذا كان لا يزال يتم وفقًا لإصدار 1.5.x ، فلن يعمل.
بناءً على الأسباب المذكورة أعلاه ، يوصى باستخدام إصدار 1.5.x ليكون أكثر موثوقية. سيتم تقديم المقالة التالية في الإصدار التالي:
حذاء الربيع:
1.5.2.release
تستخدم سحابة الربيع المقابلة:
Dalston.Release
بناء خادم تكوين سحابة الربيع
إذا كنت ترغب فقط في إدارة التكوين بشكل موحد حسب Cloud Config ولا تريد أن تكون متاحًا للغاية في مركز التكوين في الوقت الحالي ، فأنت تحتاج فقط إلى مكونات التكوين والناقل. ومع ذلك ، إذا كنت ترغب في ضمان توفر عالية ، فيجب عليك أيضًا استخدام مكون اكتشاف التسجيل في Spring Cloud.
بالإضافة إلى التكوين والحافلة ، نحتاج أيضًا إلى استخدام GIT. لأن Spring Cloud Config يستخدم GIT لإدارة الإصدار.
من السهل جدًا إنشاء مركز للتكوين بناءً على تكوين سحابة الربيع ، ويتم في بضع خطوات صغيرة فقط.
【1】 قدم مكونات التكوين والحافلة
<Rependency> <roupeD> org.springframework.cloud </rougiD> <intifactid> spring-cloud-config-server </stifactid> </sependency> <redence> <roupiD> org.springframework.cloud </rougiD>
【2】 يستخدم فئة بدء التشغيل enableConfigServer التعليق التوضيحي
package spring.cloud.config ؛ استيراد org.springframework.boot.springapplication ؛ استيراد org.springframework.boot.autoconfigure.springbootapplication ؛ configapplication {public static void main (string [] args) {springapplication.run (configapplication.class ، args) ؛ }}【3】 application.yml ملف تكوين مستودعات RabbitMQ و Git
الخادم: المنفذ: 8040SPRING: التطبيق: الاسم: Spring-Cloud-Config-Server Cloud: Config: Server: GIT: URI: https://gitlab.xxxxxxx.com/config/xxxxxx.git search-paths: usenam كلمة المرور: ضيف الإدارة: الأمان: ممكّن: خطأ
تم تكوين RabbitMQ لأن مكون الناقل يحتاج إلى استخدامه لإخطار العميل ، ويتم إجراء تغييرات التكوين. أيضا ، تذكر الاستخدام
الإدارة: الأمان: ممكّن: خطأ
سيتم إغلاق التحقق ، وستقوم العملية التالية دائمًا بالإبلاغ عن خطأ في التفويض.
تم الانتهاء من مركز تكوين الخادم. يمكنك الآن إجراء تجربة صغيرة على الخادم وإرسال ملف demo-dev.properties. محتوى الملف كما يلي:
العنوان = مرحبا
ثم استخدم
http: // localhost: 8040/demo/dev
إذا الإخراج
{"العنوان": "مرحبا"}هذا يعني أن التفاعل بين Cloud Config و Git على ما يرام.
مركز تكوين وصول العميل
أهدافنا:
بعد تعديل معلومات التكوين وتقديمه إلى GIT ، سيتلقى جميع العملاء المتصلين بـ Spring Cloud Config الإخطارات على الفور والحصول على أحدث معلومات التكوين.
يصف التالي كيفية تحقيق هذا الهدف.
يحتاج العميل فقط إلى القيام ببعض الخطوات الصغيرة لإكمال إجراء الوصول.
【1】 إدخال التبعيات
<Rependency> <roupeD> org.springframework.boot </rougiD> <intifactid> Spring-Boot-Starter-Web </shintifactid> </sependency> <reperence> <roupiD> org.springframework.cloud </roucidid> <ProupId> org.springframework.cloud </rougeid> <StifactId> Spring-Cloud-Cloud-Config </shintifactid> </sperimency> <reperence> <roupiD> org.springframework.cloud </rougiD>
إن إدخال Web-boot-web Spring-Boot هو فقط للتجريب.
【2】 قم بتكوين RabbitMQ وإدخال عناوين URL في مركز التكوين
application.properties
Spring.Application.name = Spring-Cloud-Config-Client1server.port = 8042Management.Security.Enabled = falespring.RabbitMq.host = 127.0.0.1Spring.RabbitMq.port = 5672Spring.RabbitMq.username = guestspring.rabbitmq.port
bootstrap.properties
spring.cloud.config.name = demospring.cloud.config.profile = devspring.cloud.config.label = masterspring.cloud.config.uri = http: // localhost: 8040/
هناك ثلاث نقاط للانتباه إلى:
1.
2. يجب وضع التكوين المتعلق بتكوين سحابة الربيع في bootstrap.properties
3. استخدم spring.cloud.config.uri لتحديد عنوان مركز التكوين
بالإضافة إلى ذلك ، بالنسبة للعميل ، لا تحتاج فئة بدء التشغيل إلى إضافة أي تعليقات توضيحية متعلقة بالتكوين والحافلة .
بعد الوصول إلى هذا العميل ، يمكننا استخدام وحدة تحكم لبدء التجربة.
حزمة springcloudconfig.client ؛ استيراد org.springframework.beans.factory.annotation. org.springframework.web.bind.annotation.restController ؛@restController@refreshscopepublic class hellocontroller {value ("$ {address}") عنوان السلسلة الخاصة ؛ requestmapping ("/address") السلسلة العامة getAddress () {return this.address ؛ }}على افتراض أن HelloconTroller أعلاه يحتاج إلى استخدام تكوين العنوان ، تحتاج فقط إلى استخدام @REFRESHSCOPE و @
refreshscopepublic class hellocontroller {} Value ("$ {address}") عنوان السلسلة الخاصة ؛للتحقق مما إذا كان يمكن للعميل الحصول على أحدث معلومات التكوين ، قدم أ
requestmapping ("/address") السلسلة العامة getAddress () {return this.address ؛ }طريقة.
دعنا نعدل ملف demo-dev.properties ونغير القيمة إلى
العنوان = تحديث مرحبا
وتقديمه إلى git. في هذا الوقت ، نسمي واجهة getaddress
http: // localhost: 8041/address
لقد وجدت أنني لم أحصل على أحدث قيمة. ذلك لأنه بعد الانتهاء من إجراء الضغط إلى Git ، لم نخطر الحافلة السحابية الربيع. يمكنك استخدام ساعي البريد لتقديم طلب نشر والاتصال بالواجهة التالية لإخطار الحافلة.
http: // localhost: 8040/bus/refresh
بمجرد استدعاء هذه الواجهة بنجاح ، ستستخدم BUS RabbitMQ لإخطار جميع العملاء بأنه تم تحديث التكوين.
اهتمام خاص:
نحن ندعو واجهة /bus /refresh للخادم ، وليس واجهة /refresh للعميل.
إذا كان عليك الاتصال بواجهة /bus /refresh على الخادم في كل مرة تقوم فيها بإرسالها ، فهذا أمر مزعج للغاية. يمكنك استخدام WebHook للمساعدة.
إذا كنت تستخدم gitlab الجديد ، فأنت بحاجة فقط إلى النقر فوق [الإعدادات] في المشروع ، ثم انقر فوق [Integrations] لإعداد webhook ، كما هو موضح في الشكل أدناه:
املأ عنوان URL إلى عنوان واجهة /bus /refresh لخادم مركز التكوين ، ثم انقر فوق [إضافة WebHook].
مقارنة مع Apollo من CTRIP
إن الشيء الرائع حول تكوين السحابة الربيعية هو أن تكوينه يتم تخزينه في GIT ، والذي يعزل بشكل طبيعي تعديل التكوين والأذونات والإصدارات وغيرها من المشكلات. يجعل هذا التصميم تكوين سحابة الربيع بسيطة للغاية بشكل عام ، ولكنه يجلب أيضًا بعض الإزعاج.
لنحاول إجراء ملخص بسيط:
| النقاط الوظيفية | أبولو | سحابة الربيع | ملاحظة |
|---|---|---|---|
| واجهة التكوين | تدير واجهة واحدة بيئات مختلفة وتكوينات كتلة مختلفة | لا شيء ، تحتاج إلى العمل من خلال git | |
| تكوين الوقت الفعال | في الوقت الحالى | إعادة التشغيل يسري ، أو أن التحديث اليدوي يسري ساري المفعول | يحتاج Spring Cloud Config إلى تمرير Git Webhook ، بالإضافة إلى قائمة انتظار رسائل إضافية لدعم التأثير في الوقت الفعلي |
| إدارة الإصدار | يتم توفير سجل التحرير وأزرار التراجع مباشرة على الواجهة | لا شيء ، تحتاج إلى العمل من خلال git | |
| إصدار رمادي | يدعم | غير مدعوم | |
| التفويض ، التدقيق ، التدقيق | مدعوم مباشرة على الواجهة ، ويدعم فصل أذونات التعديل والنشر | يجب ضبطها من خلال مستودع GIT ، ولا تدعم فصل التعديل وإطلاق الإذن | |
| مراقبة تكوين مثيل | من السهل معرفة العملاء الذين يستخدمون حاليًا التكوينات | غير مدعوم | |
| التكوين للحصول على الأداء | سريع ، الوصول من خلال قاعدة البيانات ، ودعم التخزين المؤقت | أبطأ ، تحتاج إلى القراءة من مستودع استنساخ GIT ثم من نظام الملفات | |
| دعم العميل | دعم جميع تطبيقات Java و .NET ، وتوفير واجهة برمجة التطبيقات لدعم تطبيقات اللغة الأخرى ، ويدعم أيضًا شرح الربيع للحصول على التكوين | دعم تطبيقات الربيع وقدم التعليق التوضيحي للحصول على التكوين | لدى Apollo مجموعة واسعة من التطبيقات |
أنا شخصياً أوصي باستخدام Spring Cloud Config ، وهو خفيف الوزن للغاية ونشط في المجتمع. من السهل العثور على حل عند مواجهة المشكلات. بالإضافة إلى ذلك ، أعتقد شخصياً أن الفرق بين Apollo و Spring Cloud Config هو أنه لا توجد واجهة. يمكن القيام بالواجهة ، ويمكننا القيام بذلك من خلال GIT ، لكن تجربة المستخدم ليست جيدة.
لخص
ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون لمحتوى هذه المقالة قيمة مرجعية معينة لدراسة أو عمل الجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل. شكرا لك على دعمك إلى wulin.com.