لقد تعرضت للخدمات الدقيقة مؤخرًا ولدي بعض الفهم لهذا الجانب. سوف أشاركها معك.
Spring Cloud هي مجموعة كاملة من الأطر لتنفيذ الخدمات المجهرية بناءً على Boot Spring. يمكن القول أن SPRING BOOT باعتباره إطار عمل سحابة الربيع حيث تشكل الخدمات المجهرية معًا نظامًا جديدًا لا يمكن تجاهله. يوفر المكونات المطلوبة لتطوير الخدمات الصغيرة مثل إدارة التكوين ، واكتشاف الخدمة ، وكواكات الدوائر ، والتوجيه الذكي ، والمكيحات الدقيقة ، والحافلة العالمية ، والأقفال العالمية ، وحملات صنع القرار ، والجلسات الموزعة ، وإدارة ولاية الكتلة ، والتي هي مريحة وسهلة الاستخدام. تتضمن Spring Cloud الكثير من الأطر الفرعية ، من بينها Spring Cloud Netflix أحد الأطر ، التي توفر بشكل أساسي وحدات: اكتشاف الخدمة ، قواطع الدوائر والمراقبة ، التوجيه الذكي ، موازنة تحميل العميل ، إلخ.
خاصية
(1) يوفر Eureka ، تسجيل الخدمة واكتشاف ، مركز تسجيل خدمة ، عميل اكتشاف الخدمة ، وواجهة مريحة لعرض جميع الخدمات المسجلة. تستخدم جميع الخدمات عميل اكتشاف خدمة Eureka لتسجيل أنفسهم في خادم Eureka.
(2) Zuul ، Gateway ، يطلب جميع العملاء الوصول إلى خدمات الخلفية من خلال هذه البوابة. يمكنه استخدام بعض تكوينات التوجيه لتحديد الخدمة التي تتعامل مع عنوان URL معين. واحصل على الخدمة المسجلة من Eureka لإعادة توجيه الطلب.
(3) الشريط ، وهذا هو ، موازنة التحميل. عندما ترسل Zuul Gateway طلبًا إلى تطبيق خدمة معينة ، إذا بدأت الخدمة في حالات متعددة ، فسترسلها إلى مثيل خدمة معين من خلال الشريط من خلال سياسة موازنة التحميل معينة.
(4) يتظاهر ، عميل الخدمة ، إذا كانت الخدمات بحاجة إلى الوصول إلى بعضها البعض ، فيمكنك استخدام العميل RestTemplate أو Perign للوصول إليه. يستخدم الشريط افتراضيًا لتحقيق موازنة التحميل.
(5) Hystrix ، مراقبة وقاطع الدائرة. نحتاج فقط إلى إضافة علامة Hystrix إلى واجهة الخدمة لإدراك وظائف المراقبة وقاطع الدائرة لهذه الواجهة.
(6) توفر Hystrix Dashboard ، لوحة المراقبة ، واجهة يمكنها مراقبة الوقت المستهلكة من خلال مكالمات الخدمة على كل خدمة.
(7) التوربينات ، وتجميع المراقبة ، باستخدام مراقبة Hystrix ، نحتاج إلى فتح معلومات المراقبة لكل مثيل خدمة لعرضه. يمكن أن تساعدنا التوربينات في تجميع معلومات المراقبة لجميع مثيلات الخدمة في مكان واحد للعرض الموحد.
يمكنك الرجوع إلى المستند في ذلك: https://springcloud.cc/spring-cloud-netflix.html
(1) مركز تسجيل الخدمة والمراقبة:
@SpringBootApplication@enableeurekaserver@enableHyStrixDashboardPublic Class Applicationregistry {public static void main (string [] args) {new SpringApplicationBuilder (application.class) .Web (true) .run (args) ؛ }}هنا ، يوضح SpringBootApplication باستخدام علامة Boot SPRING أن التطبيق الحالي عبارة عن تطبيق لطف الربيع. وبهذه الطريقة ، يمكنني استخدام الوظيفة الرئيسية مباشرة لبدء التطبيق في IDE ، أو يمكنني أن أبدأ مع سطر الأوامر بعد العبوة. بالطبع ، يمكنك أيضًا بدء حزمة الحرب المعبأة مع خادم مثل Tomcat. استخدم tageNableeureKaserver لبدء مكونات سجل خدمة Eureka أثناء بدء التشغيل. سوف يستمع إلى منفذ ، وهو 8761 افتراضيًا ، لتلقي تسجيل الخدمة. وتوفير صفحة ويب. بعد فتحه ، يمكنك رؤية الخدمة المسجلة. ستوفر إضافة enableHyStrixDashboard صفحة مراقبة. يمكننا إدخال عنوان الخدمة المراد مراقبتها لعرض حالة استدعاء الواجهة مع تمكين مراقبة Hystrix. بالطبع ، من أجل استخدام المكونات المذكورة أعلاه ، نحتاج إلى إضافة التبعيات المقابلة في ملف Maven POM ، مثل استخدام الأوليات النجمة النجمة الربيعية ، والاعتماد على اللوحة النجمية النجمية النجمية والبطولة النجوية.
(2) دعوة بين الخدمة:
هناك طريقتان لإجراء مكالمات الخدمة ، RestTemplate و FeignClient. بغض النظر عن الطريقة ، فإنه يطلق على واجهة HTTP للخدمة من خلال واجهة REST ، والمعلمات والنتائج تسلسلها وتجاهلها افتراضيًا من خلال جاكسون. نظرًا لأن الواجهة المحددة بواسطة RestController من Spring MVC ، يتم تسلسل البيانات التي تم إرجاعها في بيانات JSON عبر جاكسون.
النوع الأول: RestTemplate ، تحتاج فقط إلى تحديد الفاصوليا RestTemplate وتعيينها على موازنة:
ConfigurationPublic class somecloudConfiguration {loadbalanced @bean restTemplate restTemplate () {return new restTemplate () ؛ }}وبهذه الطريقة ، يمكننا حقن هذه الفول حيث نحتاج إليها:
الفئة العامة someserviceClass {Autowired private resttemplate resttemplate ؛ السلسلة العامة getUserById (long userId) {userdto results = restTemplate.getForObject ("http: // user/getUserDetail/" + userId ، userdto.class) ؛ نتائج العودة }}عندما يكون المستخدمون هو معرف الخدمة ، سيحصل Ribbon على مثيل لهذه الخدمة من قائمة مثيلات الخدمة ، وإرسال طلب ، والحصول على النتيجة. يتطلب مستخدم الكائن رقمًا تسلسليًا ، وسيتم إكمال رقمه المضاد للتأليف تلقائيًا.
النوع الثاني: Feignclient
feignclient (value = "users" ، path = "/user") الواجهة العامة userCompositeservice { @requestmapping (value = "/getUserDetail/{id}" ، method = requestmethod.get ، reductes = mediaType.Appleication_json_value) userdto getUserbyid (pathvariable) ؛نحتاج فقط إلى تحديد عذر باستخدام @eignclient. سوف تساعدنا Spring Cloud Feign في إنشاء تطبيق والحصول على بيانات من خدمة المستخدمين المقابلة. من بينها ، القيمة في FeignClient (value = "المستخدمين" ، path = "/user/getUserDetail") هي معرف الخدمة ، والمسار هو بادئة المسار لهذه المجموعة من الواجهات. في تعريف الطريقة التالية ، تمامًا مثل إعداد واجهة Spring MVC ، لهذه الطريقة ، فإن عنوان URL المقابل هو/المستخدمين/getUserDetail/{id}. ثم ، عند استخدامه ، تمامًا مثل حقن خدمة عامة ثم استخدمها:
الطبقة العامة بعض sometherviceClass {Autowired userCompositeservice uservice ؛ public void dosomething () {// ...... userdto results = userService.getuserById (userId) ؛ // عملية أخرى ...}}(3) قاطع الدائرة:
// قاطع الدائرة: من أجل حل المشكلة التي تستدعي طريقة التراجع لاستبدال الطريقة الفاشلة عند فشل استدعاء الطريقة ، تم تحقيق وظيفة أخطاء التسامح/حظر الأعطال. // strainbackmethod يحدد طريقة الاحتياط @hystrixCommand (عابرة method = "dostudentFallback") @requestMapping (value = "dostudent" ، method = requestMethod.get) السلسلة العامة (26!)
من بينها ، استخدم enableCircuitBreaker لتمكين دعم قاطع الدائرة. يوفر Spring Cloud وحدة تحكم لمراقبة تشغيل قاطع الدائرة ، والذي يتم تمكينه من خلال enableHyStrixDashboard.
ما سبق هو مقدمة موجزة لمكونات Spring Cloud Netflix. آمل أن يكون ذلك مفيدًا لتعلم الجميع ، وآمل أن يدعم الجميع wulin.com أكثر.