"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > هندسة الخدمات المصغرة مع Spring Cloud

هندسة الخدمات المصغرة مع Spring Cloud

تم النشر بتاريخ 2024-07-29
تصفح:210

Microservices Architecture with Spring Cloud

هندسة الخدمات المصغرة هي أسلوب تصميم حيث يتكون التطبيق من خدمات مقترنة بشكل غير محكم. كل خدمة مسؤولة عن وظيفة محددة ويمكن تطويرها ونشرها وتوسيع نطاقها بشكل مستقل. Spring Cloud عبارة عن مجموعة من الأدوات والأطر التي تساعد في بناء خدمات صغيرة قوية وقابلة للتطوير.

ما هي الخدمات المصغرة؟
تقوم الخدمات المصغرة بتقسيم التطبيقات المعقدة إلى خدمات أصغر يمكن التحكم فيها. تركز كل خدمة صغيرة على قدرة عمل واحدة وتتواصل مع الخدمات الأخرى من خلال واجهات برمجة التطبيقات (APIs) المحددة جيدًا، وعادةً ما تستخدم REST أو قوائم انتظار الرسائل.

فوائد الخدمات المصغرة

  • قابلية التوسع: يمكن توسيع نطاق الخدمات الفردية بشكل مستقل بناءً على الطلب.
  • المرونة: يمكن تطوير خدمات مختلفة باستخدام تقنيات ولغات مختلفة.
  • عزل الأخطاء: الفشل في خدمة واحدة لا يؤثر على النظام بأكمله.
  • النشر المستمر: يتيح النشر المتكرر والمستقل للخدمات.

المكونات الرئيسية لسحابة الربيع:

1. تكوين سحابة الربيع:

  • إدارة التكوين الخارجي المركزي.
  • يدعم مصادر التكوين المختلفة مثل Git وSVN والملفات المحلية.
  • مثال: تكوين بيانات اعتماد قاعدة البيانات، ومفاتيح API، والخصائص الأخرى عبر خدمات متعددة.

2. Spring Cloud Netflix:

  • يدمج مكونات Netflix OSS مثل Eureka وHystrix وZuul وRibbon.
  • يوريكا: خادم وعميل اكتشاف الخدمة.
  • Hystrix: قاطع الدائرة الكهربائية لتحمل الأخطاء.
  • Zuul: بوابة API للتوجيه الديناميكي.
  • الشريط: موازنة التحميل من جانب العميل.

3. بوابة سحابة الربيع:

  • مشروع جديد يحل محل زول.
  • يوفر طريقة بسيطة وفعالة لتوجيه الطلبات.
  • ميزات مثل إعادة كتابة المسار، وموازنة التحميل، ومرشحات المسار.

4. تحري سحابة الربيع:

  • تتبع موزع لتتبع تدفق الطلبات عبر الخدمات الصغيرة.
  • يتكامل مع Zipkin للمراقبة والتحليل.

5. تيار سحابة الربيع:

  • إطار عمل لبناء خدمات صغيرة تعتمد على الأحداث.
  • يستخدم أنظمة المراسلة مثل RabbitMQ وApache Kafka.

إنشاء تطبيق خدمات صغيرة بسيط باستخدام Spring Cloud:

إعداد مشاريع التمهيد الربيعي:

  • إنشاء مشاريع Spring Boot منفصلة لكل خدمة صغيرة.
  • تحديد التبعيات لمكونات Spring Cloud في pom.xml أو build.gradle.

تكوين خادم تكوين Spring Cloud :

  • قم بإعداد خادم التكوين لإدارة التكوينات الخارجية.
  • قم بتوجيه الخدمات الصغيرة إلى خادم التكوين للتكوين المركزي.

اكتشاف الخدمة مع يوريكا:

  • إعداد خادم Eureka لتسجيل الخدمة واكتشافها.
  • قم بتكوين كل خدمة صغيرة للتسجيل في خادم Eureka.

بوابة API مع بوابة Spring Cloud :

  • قم بإعداد بوابة Spring Cloud لتوجيه الطلبات إلى خدمات صغيرة مختلفة.
  • تحديد قواعد التوجيه والمرشحات للتعامل مع الطلبات.

إضافة المرونة باستخدام Hystrix:

  • دمج Hystrix لآليات كسر الدائرة والآليات الاحتياطية.
  • قم بتعليق الطرق باستخدام @HystrixCommand لتمكين قطع الدائرة.

التتبع الموزع باستخدام Spring Cloud Sleuth:

  • أضف تبعيات Sleuth لتتبع وتسجيل تدفق الطلبات.
  • استخدم Zipkin لتصور وتحليل بيانات التتبع.

مثال: تنفيذ بنية بسيطة للخدمات الصغيرة

دعونا نفكر في تطبيق أساسي للتجارة الإلكترونية يحتوي على الخدمات الصغيرة التالية:

  1. خدمة المنتج: إدارة معلومات المنتج.
  2. خدمة الطلبات: تتعامل مع الطلبات والمعاملات.
  3. خدمة المخزون: إدارة مستويات المخزون.

الخطوة 1: إنشاء مشاريع Spring Boot
لكل خدمة، أنشئ مشروع Spring Boot بالتبعيات اللازمة:


org.springframework.cloudspring-cloud-starter-netflix-eureka-client

الخطوة 2: إعداد خادم التكوين
قم بإنشاء خادم التكوين وقم بتكوينه للقراءة من مستودع Git:

# application.yml for Config Server
spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/your-repo/config-repo

الخطوة 3: تسجيل الخدمات مع Eureka
في كل خدمة صغيرة، قم بتكوين إعدادات عميل Eureka:

# application.yml for Product Service
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

الخطوة 4: تكوين بوابة Spring Cloud
إعداد المسارات في تطبيق البوابة:

# application.yml for Gateway
spring:
  cloud:
    gateway:
      routes:
        - id: product-service
          uri: lb://PRODUCT-SERVICE
          predicates:
            - Path=/products/**

الخطوة 5: إضافة قاطع الدائرة باستخدام Hystrix
علق على الطرق في فئات الخدمة:

@HystrixCommand(fallbackMethod = "fallbackMethod")
public String getProductDetails(String productId) {
    // logic to get product details
}

public String fallbackMethod(String productId) {
    return "Product details not available";
}

الخطوة 6: تمكين التتبع الموزع
إضافة تبعيات وتكوينات Sleuth وZipkin:

# application.yml for Tracing
spring:
  zipkin:
    base-url: http://localhost:9411/

خاتمة:

يؤدي تنفيذ بنية الخدمات الصغيرة باستخدام Spring Cloud إلى تعزيز قابلية التوسع والمرونة وقابلية الصيانة لتطبيقاتك. تعمل مجموعة أدوات Spring Cloud القوية على تبسيط التعقيدات المرتبطة ببناء وإدارة الخدمات الصغيرة، مما يجعلها خيارًا ممتازًا للمطورين. ومن خلال اتباع أفضل الممارسات والاستفادة من هذه الأدوات القوية، يمكنك إنشاء حلول خدمات صغيرة فعالة وقابلة للتطوير ومتسامحة مع الأخطاء.

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/vidhi_jayswal/microservices-architecture-with-spring-cloud-lff?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3