تركز المقالات القليلة الأولى بشكل رئيسي على استخدام Eureka في مركز التسجيل. بعد ذلك ، يمكنك إنشاء مزود خدمة للتسجيل في Eureka.
راجع رمز المصدر التجريبي: https://github.com/ryan-miao/spring-cloud-edgware-demo/tree/master/provider-demo
لتسهيل التحكم في الإصدار ، يتم تكوين المشروعات التالية بناءً على تكوين الأصل https://github.com/ryan-miao/spring-cloud-edgware-demo.
قم بإنشاء مزود مزود Moudle
قم بإنشاء وحدة طفل مع مزود اسم المشروع. املأ تبعيات سبرينغ بوت و springcloud
<ependencies> <!-بدء التبعية Springboot-> <redency> <roupiD> org.springframework.boot </groupId> <StifactId> spring-boot-starter-web </suntifactid> </premitency> <sperence> <Stifactid> spring-boot-starter-actuator </artifactId> </perence> <reperency> <roupiD> org.springframework.boot </rougeid> <Stifactid> <roughid> com.fasterxml.jackson.datatype </rougiD> <intifactid> jackson-datatype-jsr310 </shintifactid> </repreadency> <reperency> <roucid> org.springframework.cloud </groupid> التبعية-> <Rependency> <roupend> io.springfox </rougiD> <intifactid> springfox-swagger2 </shintifactid> </reperence> <eredency> <roupiD> io.springfox </rougeid> <StifactId> springfox-swagger-ui </restifactid> <roupl> com.google.guava </rougiD> <StifactId> جوافا </artifactid> </reperence> <reperency> <roupiD> org.projectlombok </rougiD> <StifactId> lombok </suntifactid> <StifactId> logstash-logback-encoder </artifactid> </reperence> <!-نهاية فئة الأدوات-> </تبعية>
يوفر spring-boot-starter-web إمكانيات الويب ، ويوفر spring-boot-starter-actuator الإحصاءات للمشروع ونقطة نهاية المراقبة الأساسية. إذا كنت ترغب في استخدام مراقبة Spring-Boot-Admin ، فيجب عليك إضافة وضع تطوير spring-boot-devtools jackson-datatype-jsr310 فيمكنك حل الوقت الجديد لـ Java8 Apilocaldate Disintedgration spring-cloud-starter-eureka eureka Client ، المسؤول عن حافظة الحمل swagger lombok يبدو أن مستوى مجموعة التجميع المنعش. يريد Java Essential Library logstash-logback-encoder guava وكامل Java Class Library Logstash-Logback-ANCODER
فئة بدء التشغيل
eNipperisCoveryClient@SpringBootApplicationPublicpublic ProviderDemoApplication {public static void main (string [] args) {springapplication.run (providerdemoapplication.class ، args) ؛ }} @EnableDiscoveryClient لتمكين تسجيل الخدمة
يجب وضع هذا ProviderDemoapplication في الطبقة الخارجية من حزمة المشروع ، لأن springbootappliatin يحتوي على شرح @componentscan ، ويتم فحص المسح الافتراضي ضمن حزمة الفئة هذه ، وإلا يجب تحديد المسح يدويًا.
اختيال
Swagger هو فئة التكوين
enloberwagger2@configurationpublic class SwaggerConfiguration {private apiinfo apiinfo () {return new apiinfobuilder () .Title ("Service Provider API"). } /*** حدد تكوين API. */ bean public docket api () {return new docket (documentationType.swagger_2) .select () .Apis (requestHandlersElectors.WithClassannotation (api.class)) .build () .Apiinfo (apiinfo ()) ؛ }}لتوجيه صفحة Swagger ، نحتاج إلى توجيه ما يلي:
إنشاء وحدة تحكم للتنقل
ControllerPublic Class HomeController {getMapping (value = {"/api" ، "/"}) السلسلة العامة api () {return "redirect: /swagger-ui.html" ؛ }}لنأخذ واجهة وحدة تحكم
api@restController@requestMapping ("/api/v1/user") فئة عامة USERCONTROLLER {قائمة خاصة <Sether> المستخدمين = lists.newarraylist (مستخدم جديد (1 ، "tan haoqiang" ، 100 ، new () ، tan haoqian. localdate.now ()) ، مستخدم جديد (4 ، "James Gosling" ، 150 ، localdate.now ()) ، مستخدم جديد (6 ، "Doug Lea" ، 150 ، localdate.now ())) ؛ getMapping ("/") قائمة عامة <Sevo> list () {return users.stream () .map (u -> new Uservo (U.GetId () ، U.GetName () ، U.Getage () ، U.GetBirth ())). }}بعض تكوينات البيئة البسيطة
application.yml
الربيع: التطبيق: الاسم: موفر-ديمو جاكسون: التسلسل: write_dates_as_timestamps: False Default-Property-Inclusion: Non_null#تكوين وقت انتهاء صلاحية الخادم. إذا لم يتم استلام نبضات القلب بعد هذا الوقت ، فسيقوم Eurekaserver بإزالة هذه الحالة. لاحظ أنه يجب على eurekaserver تعيين eureka.server.eviction-interval-in-ms ، وإلا فإن هذا التكوين غير صالح. هذا التكوين هو بشكل عام ثلاثة أضعاف تكوين وقت تحديث الخدمة. #default 90seureka.instance.lease-expiration-duration-in-seconds: 15 #service تعمل على تحديث التكوين الزمني ، وستكون نبضات القلب في كل مرة هذه المرة #Default 30seureka.instance. /Swagger-Resources /API-Docslog: المسار: سجلات
application dev.yml
الإدارة: الأمان: ممكّن: falseeureka: العميل: Serviceurl: DefaultZone: http: // localhost: 8761/eureka/logstash: url: localhost: 4560
أريد أن أذكر ذلك هنا أنه بما أنني أقوم بدمج Logstash ، يجب أن أقوم بتثبيت LogStash ، انظر Elk للمقدمة. بالطبع يمكنك تخطيه ، طالما أنك لا تقدم تكوين logback.xml ، يمكنك إزالة logstash في التبعية.
تكوين السجل
يتم استخدام LOGBACK كإطار السجل افتراضيًا. التكوين البسيط هو كما يلي. بالنسبة لأولئك الذين لا يرغبون في استخدام LogStash ، ما عليك سوى إزالة appender logstash.
قم بإنشاء مسجل جديد spring.xml تحت المورد
<؟ defaultValue = "Logs"/> <SpringProperty Scope = "Context" name = "logstashurl" source = "logstash.url" defaultValue = "LocalHost: 4560"/> <include resource = "org/springframework/boot/logback/logback. <ChoDer> <dategy> ٪ d {hh: mm: ss.sss} ٪ x {req.remotehost} ٪ x {req.requesturi} $ {appname} <RollingPolicy> <IbenAmePattern> $ {log.path}/$ {appname}. ٪ d {yyyy-mm-dd} .log </fileNamePattern> </rollingpolicy> <conder> <turder> ٪ d {hh: mm: ss.sss} {appname} ٪ x {req.requesturi} ٪ x {req.userAgent} ٪ x {req.method}-[٪ thread] ٪ -5Level ٪ logger {36}-٪ msg ٪ n </pattern> </encoder> </appender> <! <encoder charset = "utf-8"/> </spedender> <springProfile name = "dev"> <root lister = "info"> <appender-ref ref = "console"/> <appender-ref Ref = "file"/> <appender-ref ref = "file"/> <springprofile name = "test ، prod"> <root lister = "info"> <appender-ref Ref = "file"/> <appender-ref Ref = "logstash"/> </rout> </springprofile> </iscification>.بدء
تأكد من بدء تشغيل Eureka ، من الأفضل أن تبدأ المسؤول ، وذلك لتسهيل عرض حالة التطبيق ، كما أن نظام تسجيل ELK متاح أيضًا. بالطبع ، فقط يوريكا هو ضرورة.
تجميع وحزمة
MVN Clean Install Package-Boot-Boot: Repackage
قم بتشغيل الطريقة الرئيسية ، وحدد الملف الشخصي على أنه DEV ، يمكنك تحرير تكوين التشغيل في IDEA وإضافة معلمات
-spring.profiles.active = dev
أو ابدأ جرة سطر الأوامر
انسخ الرمز كما يلي: Java -xms256m -xmx1g -xx:+useg1gc -jar ./target/provider-demo-0.0.1 -snapshot.jar -spring.profiles.active = dev = dev
بعد بدء التشغيل ، Access Eureka
زيارة المسؤول
زيارة مزود ديمو
فضح واجهة برمجة التطبيقات الخاصة بنا للمستهلك
نظرًا لوجود مقدمي الخدمات ، يجب أن يكون ذلك لاستهلاك المستهلك. كيف يجب استهلاك المستهلكين؟ فقط اتصل بطلب HTTP يدويًا. عقد Swagger Restful الذي تم ذكره سابقًا هو المعلمات والمتطلبات التي يقدمها مزود الخدمة لطلب الوصول. إذا قام المستهلك بتطوير هذا العميل يدويًا ، فسيستغرق الأمر وقتًا طويلاً ومعرضًا للخطأ. لذلك ، كمزود خدمة ، يجب عليك توفير SDK أو العميل للمستهلك للاستخدام.
في نظام تكنولوجيا السحابة الربيع ، تكون المكالمات عن بُعد هي الأولوية القصوى. الاستخدام المحدد الذي وجدته هو Feign+Ribbon+Hystrix.
من خلال إرساء الواجهة التعريفية لـ Feign ، يتم تنفيذ مكالمات المستهلك إلى المزود. موازنة تحميل عميل الشريط ، Hystrix هو قاطع دائرة صحية.
هنا ، نحتاج أولاً إلى توفير واجهة Feign.
صقل واجهة برمجة تطبيقات وحدة التحكم في واجهة. أولاً ، نقوم بإنشاء مشروع جديد
https://github.com/ryan-miao/spring-cloud-edgware-demo/tree/master/provider-api
ضع هذا المشروع في قائمة التبعية للمزود-ديمو
<!-التبعية الداخلية-> <reperency> <roupiD> com.test </rougiD> <ArtifactId> Provider-Api </shintifactid> <sophy> 0.0.1-snapshot </splement
الخروج من قناة واجهة userapi في مشروع Provider-API
requestmapping ("/api/v1/user") واجهة عامة userApi {getMapping ("/") قائمة <Servo> list () ؛}يتم تعديل وحدة تحكم المزود-ديمو على النحو التالي
api@restControllerPublic Class USERCONTROLLER تنفذ userapi {قائمة خاصة <Sether> المستخدمين = lists.newarraylist (مستخدم جديد (1 ، "tan haoqiang" ، 100 ، localdate.now () ، user new (2 ، "yan weimin" ، 120 ، localdate.now () مستخدم جديد (4 ، "James Gosling" ، 150 ، LocalDate.Now ()) ، مستخدم جديد (6 ، "Doug Lea" ، 150 ، localdate.now ())) ؛ Override Public List <Suservo> list () {return users.stream () .map (u -> new Uservo (U.GetId () ، U.GetName () ، U.Getage () ، U.GetBirth ())). }}وبهذه الطريقة ، لم تتغير وحدة التحكم ، ولكن تم سحبها من مسار API. موفر الوحدة النمطية المستقلة-العميل الذي نقدمه للمستهلك. يستخدم القسم التالي المستهلك للاستهلاك.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.