1. مقدمة
في المقالة السابقة ، قمنا بتنفيذ مراقبة مثيل خدمة واحد. بالطبع ، في التطبيقات الفعلية ، فإن بيانات مراقبة مثيل واحد ليست ذات قيمة كبيرة. ما نحتاج إليه أكثر هو معلومات مراقبة نظام الكتلة. في هذا الوقت ، نحتاج إلى تقديم التوربينات. يمكن لـ Turbine جمع معلومات المراقبة وتوفير المعلومات المجمعة إلى لوحة معلومات Hystrix للعرض والمراقبة المركزية.
2. بناء مكاتب وخدمات مراقبة
2.1 الهيكل العام والإعداد
يعتمد التنفيذ الهندسي لهذه المقالة على مشروع المقالة السابقة. من خلال إدخال التوربينات ، يقوم بتجميع معلومات مراقبة خدمة خدمة Ribbon وتخرجها إلى لوحة معلومات Hystrix للعرض. نظرًا لأننا نحتاج إلى لوحة معلومات لخدمات متعددة ، سنقوم ببناء مجموعة ريبون للخدمة ، ونحن بحاجة إلى إنشاء مشروع جديد لتربية الخدمة لتجميع المعلومات وعرضها. الهيكل العام النهائي هو كما يلي:
2.2 إنشاء تربة خدمة
قم بإنشاء مشروع Boot SPRING جديد ، اسم توربيني الخدمة ، واستيراد التبعيات اللازمة في pom.xml:
<؟ XSI: schemalocation = "http://maven.apache.org/pom/4.0.0 <soph> 0.0.1-snapshot </version> <packaging> جرة </packaging> <name> service-turbine </name> <description> مشروع تجريبي لـ Spring Boot </descriver <!-Lookup Parent from ropository-> </paret> <properties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <project.reporting.outputencoding> utf-8 </project.reporting.utputing> <java.version> <pring-cloud.version> edgware.sr1 </spring-cloud.version> </sprenties> <reperencies> <reperency> <roupled> org.springframework.cloud </rougiD> <StifactId> spring-clor-cloud-turbine </attifactid> </empency> <StifactId> Spring-Cloud-Netflix-Turbine </shintifactid> </sependency> <reperence> <roupled> org.springframework.boot </rougeid> <StifactId> spring-boot-starter-actuator </stifactid> <StifactId> Spring-boot-starter-test </stifactid> <scope> اختبار </scope> </reperence> </rependencials> <RependencyManagement> <rependencies> <rependency> <rougiD> org.springframework.cloud </rougeid> <spring-claid-clained </atsifactiD> <type> pom </type> <scope> استيراد </scope> </sependency> </rependencies> </sempendencymagement> <build> <clupins> <clupin> <roupiD> org.springframewok
أضف enableTurbine تعليقًا إلى فئة بدء تشغيل المشروع وتمكين التوربينات. يحتوي التعليق التوضيحي بالفعل على enablediscoveryclient enoutation ، أي أن خدمة التسجيل قد تم تمكينها:
springBOOTAPPLICATION enableturbine الطبقة العامة serviceturbineapplication {public static void main (string [] args) {springapplication.run (serviceTurbineApplication.class ، args) ؛ }} أضف تكوينات Eureka و Turbine ذات الصلة في Application.Properties ، على النحو التالي:
spring.application.name = service-turbine server.port = 8766 security.basic.endabled = false eureka.client.serviceurl.defaultzone = http: // localhost: 8761/eureka turbine.aggregator.cluster-config = default turbine.appin-config = Turbine.combine-host-port = true
في التكوين أعلاه ، تقوم المعلمة turbine.app-config بتكوين قائمة ServiceId في Eureka للإشارة إلى الخدمات التي يتم مراقبتها ؛ تحدد المعلمة Turbine.cluster-name-Expression اسم الكتلة الافتراضي. عندما يكون هناك عدد كبير من الخدمات ، يمكن أن تبدأ خدمات التوربينات المتعددة في بناء مجموعات تجميع مختلفة. يمكن استخدام هذه المعلمة لتمييز مجموعات التجميع المختلفة هذه. في الوقت نفسه ، يمكن استخدام قيمة المعلمة لتحديد موقع مجموعات التجميع المختلفة في لوحة معلومات Hystrix. فقط حدد معلمة الكتلة في عنوان URL لتيار Hystrix ؛ تم تعيين معلمة Turbine.com-Host-Port على True ، بحيث يمكن تمييز الخدمات على نفس المضيف من خلال مزيج من اسم المضيف ورقم المنفذ. بشكل افتراضي ، سيتم تمييز الخدمات المختلفة بواسطة المضيف ، والتي ستقدم الخدمات المختلفة على الجهاز المحلي في خدمة واحدة للإحصاء أثناء تصحيح الأخطاء.
3. مراقبة الكتلة
ابدأ مشروع Eureka-Server مع رقم المنفذ 8761 ؛
ابدأ مشروع Eureka-Client مع أرقام المنافذ 8762 و 8763 ؛
ابدأ مشروع Service-Ribbon مع أرقام المنافذ 8764 و 8765 ؛
ابدأ مشروع توربيني الخدمة مع المنفذ رقم 8766.
تفضل بزيارة http: // localhost: 8766/turbine.stream لمعرفة:
تفضل بزيارة http: // localhost: 8765/hystrix ، أدخل دفق المراقبة http: // localhost: 8766/turbine.stream لمعرفة:
كما ترون في الشكل ، على الرغم من أننا بدأنا اثنين من الخدمات ، فإن صفحة المراقبة لا تزال تعرض مخطط مراقبة فقط. ومع ذلك ، يمكننا أن نجد أن سمة المضيفين في منطقة الإبلاغ عن الكتلة في الشكل تختلف عن عند محاولة المراقبة المستقلة من قبل ، ولكن لأن هاتين الحالتين هما نفس الخدمة ، وللحصول على المجموعة ، فإننا نشعر بالقلق إزاء توفر مجموعة الخدمة العالية ، لذلك سوف ينظر التوربين إلى نفس الخدمة ككل وتلخيصها في مخطط مراقبة.
بالطبع ، إذا كنت ترغب حقًا في رؤية مخططين مراقبة ، فيمكنك ضبط spring.application.name من أحد مثيلات الخدمة إلى اسم آخر ، بحيث يظهر اثنين من المخططات المراقبة المختلفة بعد الجري.
4. مع سمسار الرسائل
عندما تقوم Spring Cloud بتغليف التوربينات ، فإنه يلف أيضًا تطبيق مجموعة استنادًا إلى وسيط الرسائل. لذلك ، يمكننا إخراج جميع معلومات المراقبة التي يجب جمعها في وسيط الرسائل ، ثم ستحصل خدمة التوربينات على معلومات المراقبة هذه بشكل غير متزامن من وسيط الرسائل ، وأخيراً تجميعها وإخراجها إلى لوحة معلومات Hystrix. من خلال إدخال وسيط الرسائل ، يمكن تغيير بنية المراقبة التي تنفذها لوحة معلومات التوربينات و Hystrix إلى الهيكل الموضح في الشكل أدناه:
أولاً ، قم بإنشاء مشروع جديد للبلاغ الربيعي ، يسمى Service-Turbine-AMQP ، وقم بتقديم تبعيات من طراز AMQP-Turbine-Turbine-Turbine و Spring-Boot-Starter. إن رؤية هذا هو مجرد تقديم هاتين التبعينين ، لأن ربيع السحابة-توربيني-AMQP يلف فعليًا من طراز الرنبوب النجوي النجوي والثلاثين.
<؟ XSI: schemalocation = "http://maven.apache.org/pom/4.0.0 <soph> 0.0.1-snapshot </version> <packaging> جرة </packaging> <name> service-turbine-amqp </mame> <speciped> مشروع تجريبي لـ Spring Boot </speciped> <parent> <roupiD> org.springframework.boot </roughid> <Thotifactid> spring-boot-parent </splistid> <REPERANTERPARPHAPT/> <!-LANEUP PARTER من المستودع-> </inpart> <ferties> <project.build.sourceencoding> utf-8 </project.build.sourceencoding> <Project.reporting.outputing> uTF-8 </proport.reporting.outppouting> <pring-cloud.version> edgware.sr1 </spring-cloud.version> </properties> <تبعية> <reperency> <roupled> org.springframework.cloud </groupId> <Stifactid> spring-cloud-sturbine-amqp </tefactid> <StifactId> Spring-boot-starter-actuator </stifactid> <scope> اختبار </scope> </premency> </reperency> </reperence> <sperenceManagement> <redency> <redency> <roupiD> org.springframework.cloud </groupid> <sophy> $ {spring-cloud.version} </version> <type> pom </type> <scope> استيراد </scope> </reperence> </reperence> </sperencymanagement> <build> <clupins> <clupin> <roupiD> org.springframework.boot </groupid> </sults> </build> </project> استخدم enableTurbinestream enoutation في الفئة الرئيسية لتمكين تكوين دفق التوربينات:
springBOOTAPPLICATION enableTURBINESTREAMNABLISCOVERYCLIENT الفئة العامة serviceturbineamqpapplication {public static void main (string [] args) {springapplication.run (serviceturbineamqpapplication.class ، args) ؛ }}ثم قم بتكوين ملف Application.Properties:
spring.application.name = service-turbine-amqp server.port = 8766 eureka.client.serviceurl.defaultzone = http: // localhost: 8761/eureka
تم الانتهاء من تكوين التوربينات. يحتاج ما يلي إلى إجراء بعض التعديلات على Ribbon للخدمة بحيث يمكن إخراج معلومات المراقبة الخاصة بها إلى RabbitMQ. هذا التعديل بسيط للغاية. فقط أضف الاعتماد على نتر السحابة-أنفليكس-هايستريكت-AMQP في pom.xml ، على النحو التالي:
<Rependency> <roupiD> org.springframework.cloud </groupId> <intifactid> spring-cloud-netflix-hystrix-amqp </shintifactid> </premited>
بعد الانتهاء من التكوين أعلاه ، ابدأ جميع المشاريع المطلوبة ، تفضل بزيارة http: // localhost: 8765/hystrix ، أدخل دفق المراقبة http: // localhost: 8766/turbine.stream ، ويمكننا أن نرى نفس النتيجة كما كان من قبل ، باستثناء أن جمع معلومات المراقبة هنا يتم تنفيذها بشكل مستمر من خلال خسر الرسالة.
رمز المصدر تنزيل: https://github.com/lingd3/springcloudlearning/tree/master/chapter8
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.