هذه المرة ، نقوم بمشاركة محتوى حول تسجيل خدمة SpringCloud واكتشافه ، والذي سيتم شرحه من خلال مراكز خدمات البناء وتسجيل الخدمة واكتشاف الخدمة على التوالي. الآن بدأت العديد من الشركات الناشئة في بكين الاعتماد على SpringCloud. قد يكون ذلك بسبب الوثائق والمكونات الغنية. بعد كل شيء ، هو بنية الخدمات الدقيقة كاملة نسبيا في الوقت الحاضر. آمل أن تجلب هذه المشاركة مساعدة جيدة للجميع ؛
مركز خدمة يوريكا
بقدر ما أعرف واستخدام الكثير من مراكز التسجيل تشمل Zookeeper و Eureka. شاركت مقالتي السابقة Dubbo+Zookeeper لبناء الخدمات ، لذلك أستخدم Eureka هذه المرة. يوصي إطار عمل SpringCloud أيضًا بمركز تسجيل. بالطبع ، يمكن دمجها مع مراكز تسجيل الخدمات الأخرى. بعد كل شيء ، يعتمد SpringCloud على Springboot لبناء المشاريع ، لذلك من السريع للغاية دمج المكونات الأخرى. أولاً ، قم بإنشاء مشروع مركز التسجيل eureka_server ، وقدم تبعيات من خلال ما يلي:
<Rependency> <roupled> org.springframework.cloud </rougiD> <CrintifactId> Spring-Cloud-Cloud-eureka-Server </stifactid> </sependency>
ثم أضف عناصر التكوين إلى ملف application.yml:
الخادم: المنفذ: 2001SPRING: التطبيق: الاسم: Eureka-Serveurekea: العميل: التسجيل مع-eureka: false #forbid نفسك للتسجيل كخدمة جلب-registry: false #mask معلومات التسجيل: $ {port}بعد الانتهاء من التكوين ، تحتاج إلى بدء الفصل وإضافة التعليق التوضيحي enableeurekaserver. يتم الانتهاء من الإعدادات بشكل أساسي وتشغيلها. تفضل بزيارة http: // localhost: 2001/ للحصول على الواجهة التالية:
خدمة التسجيل مزود
مع مركز تسجيل الخدمة ، نحتاج أيضًا إلى تقديم بعض الخدمات وتسجيل هذه الخدمات في مركز الخدمة. من أجل تسهيل ذلك ، نقوم أولاً بإنشاء مشروع واجهة eureka_api المستخدمة من قبل مقدمي الخدمة والمستهلكين ، وننشئ الواجهة التالية وطلب فئة كيان معلمة الإرجاع:
الواجهة العامة userInterface {postmapping ("/user") morp <list <mouser >> getUsers (morq rq) ؛ getMapping ("/msg") String getMsg () ؛}كيان موسر:
الطبقة العامة mouser {private long id ؛ اسم المستخدم الخاص بالسلسلة الخاصة ؛ سلسلة خاصة userPWD ؛ Public Long getId () {return id ؛ } public void setId (id long) {this.id = id ؛ } السلسلة العامة getUserName () {return username ؛ } public void setusername (string username) {this.userName = username ؛ } السلسلة العامة getUserPwd () {return userPwd ؛ } public void setUserPwd (String userPwd) {this.userPwd = userPwd ؛ }}ثم قم بإنشاء الوحدة النمطية eureka_provider على جانب مزود الخدمة لدينا ، وكذلك تقديم تبعيات Eureka ، ولكن هناك فرقًا بسيطًا بينها وبين جانب الخادم:
<Rependency> <roupiD> org.springframework.cloud </groupId> <StifactId> Spring-Cloud-Cloud-eureka </stifactid> </premed>
ثم قم بإنشاء خدمة USERCONTROLLER لتزويدها من قبل مزود الخدمة ، وتنفيذ واجهة المستخدم في وحدة EUREKA_API الخاصة بنا. الرمز كما يلي:
RestControllerPublic Class USERCONTROLLER تنفذ userInterface {AUTOWIRED HTTPSERSVLETREQUEST طلب ؛ Override public morp <list <mouser >> getUsers (morq rq) {morp <list <mouser >> rp = new morp <> () ؛ قائمة <Mouser> list = new ArrayList <> () ؛ لـ (int i = 0 ؛ i <5 ؛ i ++) {mouser mouser = new mouser () ؛ mouser.setid (i) ؛ mouser.setuserName ("shenniu" + i) ؛ list.add (mouser) ؛ } rp.sett (list) ؛ rp.setStatus (list.size ()> = 1؟ 1: 0) ؛ rp.setMessage (list.size ()> = 1؟ "": "لا توجد بيانات بعد") ؛ إرجاع RP ؛ } Override public string getMsg () {return "هنا مزود ، منفذ:"+ request.getServerPort () ؛ }}تجدر الإشارة هنا إلى أنه لا يوجد ما بعد التخلص من أو getmapping إضافة إلى واجهتين للخدمة لوحدة التحكم ، لأن هذا يتم إعلانه بواسطة الواجهة المنفذة ؛ بعد تحديد المستخدمين وخدمات MSG ، نحتاج أيضًا إلى أن نكون قادرين على حقنهم في مركز تسجيل الخدمة ، وبالتالي فإن التكوين التالي للتطبيق.
الربيع: التطبيق: التطبيق: الاسم: eureka-provider #service name eureka: العميل: service-url: defaultZone: http: // localhost: 2001/eureka/ #service center addrate مثيل: الخادم المفضل: 2004: 2004:
نحتاج أيضًا إلى إضافة العلامة التالية enableeurekaclient إلى فئة بدء التشغيل ، مما يعني بدء عمل عميل Eureka ، لأن مزود الخدمة ينتمي إلى العميل مقارنةً بمركز الخدمة ؛ عند تشغيل مشروع eureka_provider ، يمكننا رؤية المعلومات التالية في مركز التسجيل:
من أجل التأكد من أن واجهة مزود الخدمة على ما يرام ، يمكننا النقر مباشرة على Eureka-Provider: 2004 ، ثم زيادة المسار إلى الواجهة المراد استخدامها. هنا: http://192.168.153.148:2004/msg ، ويمكننا الحصول على المعلومات التالية التي يتم إرجاعها بواسطة واجهة الوصول العادية:
خدمة اكتشاف المستهلك
مع خدمات الواجهة ، نحتاج أيضًا إلى استهلاك الخدمات ، لذلك نقوم بإنشاء Module Project Eureka_consumer ، لأن طريقة Fegin Pseudo-Client تستخدم للوصول إلى مزود الخدمة الخاص بنا ، ونحتاج أيضًا إلى تقديم تبعيات Eureka:
<Rependency> <roupeD> org.springframework.cloud </rougiD> <intifactid> spring-cloud-starter-eureka </shintifactid> </spertency> <redence> <roupiD> org.springframework.cloud </roucidid>
ثم حدد خدمة مستخدمي المستخدمين في طبقة الخدمة وتنفيذ الواجهة في وحدة الواجهة العامة eureka_api ، الرمز كما يلي:
@dignclient (value = "eureka-provider") الواجهة العامة orseverservice يمتد userInterface {}من خلال FeignClient ، حدد اسم تطبيق الخادم المسمى Eureka-Provider. يتوافق هذا الاسم مع دليل التطبيق المسجل في مركز الخدمة. قم بإنشاء مستخدم استجابة USERCONTROLLER في طبقة وحدة التحكم وتوفير واجهتين معروضتين ، رموز مثل:
RestControllerPublic Class USERCONTROLLER getMapping ("/user") morp public <list <mouser >> getUsers (morq rq) {return orperService.getusers (rq) ؛ } getMapping ("/msg") السلسلة العامة getMsg () {return userservice.getmsg () ؛ }}وبالمثل ، يحتاج جانب المستهلك أيضًا إلى تكوين بعض المعلومات في application.yml:
الربيع: التطبيق: الاسم: eureka-consumereureka: العميل: Service-url: DefaultZone: http: // localhost: 2001/eureka/#register center addrate مثيل: تفضيل-ip-address: true مثيل معرف: $ {spring.application.name}التكوين مشابه لتكوين المزود. أخيرًا ، تحتاج إلى إعلان التعليقات التوضيحية التالية في فئة بدء التشغيل:
@springbootapplication@enableScoveryClient // consumer client@enablefeignclients // feign client client class eurekaconsumerapplication {public static void main (string [] args) {springapplication.run (eurekaconsumerapplication.class ، args) ؛ }}بعد بدء مشروع eureka_consumer ، يمكننا أن نرى المعلومات التي سجلتها في مركز التسجيل:
بعد ذلك ، من خلال الوصول إلى واجهة المستهلك eureka_consumer ، اختبر بيانات الواجهة الخاصة بمزود خدمة eureka_provider لمعرفة ما إذا كان يمكن أن يستجيب بشكل طبيعي. عنوان الواجهة هو http: // 192.168.153.148:2005/msg:
يتم الحصول على نتيجة المزود عن طريق الوصول إلى المستهلك ، وهي عملية الاختبار الأساسية لتسجيل الخدمة واكتشافها ؛ أما بالنسبة لكيفية طلب المستهلك لواجهة الموفر ، يمكننا حلها من خلال الرسم البياني اليدوي التالي:
مركز خدمة يوريكا متاح للغاية
انطلاقًا من الرسم اليدوي أعلاه ، يلعب مركز الخدمة دورًا مهمًا للغاية. عادةً ما لا يبني هذا النوع من مركز الخدمة واحدًا فحسب ، لذلك من الضروري إنشاء مجموعة من مراكز الخدمة المتاحة للغاية ؛ في الواقع ، من السهل جدًا عدم القيام بتكوين المزود والمستهلك. نحتاج فقط إلى تكوينه في التطبيق.
الخادم: المنفذ: 2001SPRING: التطبيق: الاسم: Eureka-serveurekeka: العميل: التسجيل مع-eureka: صحيح # عند تكوين التوفر العالي ، تحتاج إلى فتح وتسجيل نفسك جلبها: true service-url: defaultzone: http: // localhost: 2002/eureka/ # register in eureka on port 2002 http: // localhost: 2001/eureka/مثيل: تفضل IP-address: true مثيل معرف: $ {spring.application.name}يجب أن تكون النقاط التالية اهتمامًا بالتكوينات المتاحة للغاية:
لقد قمت هنا بإنشاء عنوانين للتسجيل: http: // localhost: 2001/and http: // localhost: 2002/؛ نظرًا لأن عناوين التسجيل التي تم تكوينها من قبل المزود والمستهلك كلاهما منفذ 2001 ، من أجل التحقق من توافر عالي ، نحتاج إلى الوصول إلى مركز تسجيل المنافذ لعام 2002 ، والآثار هي كما يلي:
يمكنك أن ترى أن منفذ 2002 لديه نفس معلومات التسجيل مثل منفذ 2001. عندما أغلق تطبيق 2001 منفذ ، لا يزال بإمكاني العثور على معلومات الموفر والمستهلك في عام 2002. لمزيد من التكوين التفصيلي ، يرجى الرجوع إلى وصف الموقع الرسمي.
عنوان GIT: https://github.com/shenniubuxing3
حزمة إصدار Nuget: https://www.nuget.org/profiles/shenniubuxing3
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.