처음 몇 기사는 주로 등록 센터에서 유레카 사용에 중점을 둡니다. 다음으로 Eureka에 등록 할 서비스 제공 업체를 만들 수 있습니다.
데모 소스 코드 : https://github.com/ryan-miao/spring-cloud-edgware-demo/tree/master/provider-demo를 참조하십시오
버전 제어를 용이하게하기 위해 다음 프로젝트는 상위 구성 https://github.com/ryan-miao/spring-cloud-edgware-demo를 기반으로 구성됩니다.
어린이 Moudle 제공 업체 데모를 만듭니다
프로젝트 이름 제공 업체 데모로 자식 모듈을 만듭니다. SpringBoot 및 SpringCloud 종속성을 채우십시오
<pectionies> <!-SpringBoot 종속성 시작-> <pectionency> <groupId> org.springframework.boot </groupId> <artifactid> spring-boot-starter-web </artifactid> </fexpendency> <pectionency> <groupid> org.springframework.boot </groupId> spring-spring-spring-staratorator <artifactid> </dependency> <pectionement> <groupId> org.springframework.boot </groupId> <artifactid> spring-boot-devtools </artifactid> <solpital> true </옵션> </dependency> <groupid> com.fasterxml.jackson.datatype </groupid> <Artifactid> Jackson-datatatype-JSR310 </artifactid> </fectionency> <pectionement> <groupid> org.springframework.cloud </groupid> <atrifactid> spring-cloud-starter-eureka </artifactid> </dependency> <!-Springboot </grouppod> <GroupPoD> IO.sprod> <Artifactid> springfox-swagger2 </artifactid> </fectionency> <pectionency> <groupid> io.springfox </groupid> <artifactid> springfox-swagger-ui </artifactid> <! <!-도구 클래스 시작-> <groupid> com.goava </group ava </groupid> <Artifactid> guava </artifactid> </dependency> <pectionency> <groupid> org.projectlombok </groupid> <artifactid> lombok </artifactid> <seleptal> </fextence> </dependency> <pection> <groupid> wem.logstash.logback> <artifactid> logstash-logback-encoder </artifactid> </fectionency> <!-도구 클래스 엔드-> </dectomencies>
spring-boot-starter-web 웹 기능을 제공하며 spring-boot-starter-actuator 프로젝트 통계 및 기본 모니터링 엔드 포인트를 제공합니다. Spring-Boot-Admin 모니터링을 사용하려면 spring-boot-devtools 개발 모드 jackson-datatype-jsr310 을 추가해야합니다. Java8 Apilocaldate Disintectration spring-cloud-starter-eureka Eureka 클라이언트의 새로운 시간을 해결하고 swagger 등록 할 책임이있는 Swagger lombok 상쾌한 컴파일 레벨 Getter Setter 도구가 보입니다. guava 의 크고 완전한 Java Essential Class Library logstash-logback-encoder ELK에 로그를 수집하려고합니다.이 Appender를 사용하십시오.
스타트 업 클래스
@enablediscoveryClient@springbootApplicationPublic Class ProviderDemoApplication {public static void main (string [] args) {springApplication.run (providerDemoApplication.class, args); }} 서비스 등록을 가능하게하는 @EnableDiscoveryClient
@springbootappliatin에는 @componentscan의 주석이 포함되어 있고 기본 스캔 이이 클래스 패키지에서 스캔되기 때문에이 제공자 데 메모 적용은 프로젝트 패키지의 가장 바깥 층에 배치해야합니다. 그렇지 않으면 스캔을 수동으로 지정해야합니다.
멋진
Swagger는 구성 클래스입니다
@EnablesWagger2@configurationPublic Class SwaggerConfiguration {private apiinfo apiinfo () {return new apiinfoBuilder () .title ( "Service Provider API") .Description ( "사용자 정보 제공") .termsofServiceUrl ( ""). } /*** API 구성을 정의합니다. */ @bean public docket api () {return new Docket (documentationtype.wagger_2) .select () .apis (requestHandlersElectors.withClassAnnotation (api.class)) .build () .apiinfo (apiinfo ()); }}Swagger 페이지의 라우팅의 경우 다음을 안내해야합니다.
탐색 할 컨트롤러를 만듭니다
@ControllerPublic Class HomeController {@getMapping (value = { "/api", "/"}) public String api () {return "reture"returect :/swagger-ui.html "; }}컨트롤러 인터페이스를 사용해 봅시다
@api@restcontroller@restontroller ( "/api/v1/user") public class usercontroller {private list <user> user = lists.newarraylist (1, "tan haoqiang", 100, localdate.now ()), 새 사용자 (2, "yan weimin", 120, localdate.now (3)) Haoqiang ", 100, LocalDate.now ()), 새로운 사용자 (4,"James Gosling ", 150, LocalDate.now ()), 새 사용자 (6,"Doug Lea ", 150, LocalDate.Now ())); @GetMapping ( "/") 공개 목록 <Sovo> list () {return user.Stream () .map (u-> new uservo (u.getId (), u.getName (), u.getage (), u.getBirth ()) .collect (collectors.tolist ()); }}간단한 환경 구성
application.yml
스프링 : 응용 프로그램 : 이름 : 제공자-데모 잭슨 : 직렬화 : write_dates_as_timestamps : false default-property-induscion : non_null#서버 만료 시간 구성. 이 시간이 지나면 심장 박동이 접수되지 않으면 EureKaserver 가이 인스턴스를 제거합니다. Eurekaserver는 Eureka.server.eviction-interval-timer-in-ms를 설정해야합니다. 그렇지 않으면이 구성이 유효하지 않습니다. 이 구성은 일반적으로 서비스 새로 고침 시간 구성의 3 배입니다. #default 90seureka.instance.lease-expiration-in-seconds : 15 #서비스는 시간 구성을 새로 고침하고 하트 비트는이 시간마다 활성화됩니다. /Swagger-Resources /API-DOCSLOG : 경로 : 로그
응용 프로그램 dev.yml
관리 : 보안 : 활성화 : Falseseeureka : Client : ServiceUrl : Defaultzone : http : // localhost : 8761/eureka/logstash : url : localhost : 4560
Logstash를 통합하기 때문에 Logstash를 설치해야한다고 언급해야합니다. 소개를 위해 Elk를 참조하십시오. 물론 logback.xml 구성을 제공하지 않는 한 종속성에서 Logstash를 제거 할 수 있습니다.
로그 구성
로그백은 기본적으로 로그 프레임 워크로 사용됩니다. 간단한 구성은 다음과 같습니다. Logstash를 사용하고 싶지 않은 사람들은 Logstash Appender를 제거하십시오.
리소스에서 새 Logback-Spring.xml을 만듭니다
<? xml version = "1.0"encoding = "utf-8"?> <configuration scan = "true"scanperiod = "60 초"디버그 = "false"> <springProperty scope = "context"name = "appname"source = "spring. source = "log.path"defaultValue = "logs"/> <SpringProperty scope = "context"name = "logstashurl"source = "logstash.url"defaultValue = "LocalHost : 4560"/> <resource = "org/springframwork/boot/logging/logging/base.xml"! 이름 = "Console"> LoggingInterceptor <Encoder> <pattern> %d {hh : mm : ss.sss} %x {req.req.remotehost} %x {req.requesturi} $ {appname} [ %스레드] %-5level %logger {36}- %n </appleder> </appleder> </appleder> 파일-> <appender name = "file"> <RollingPolicy> <filenamepattern> $ {log.path}/$ {appname}.%d {yyyy-mm-dd} .log </filenamepattern> </rollingpolicy> <comoder> <pantation>%d {hh : mm : ssssss}}}} %x {req.remotehost} %x {req.requesturi} %x {req.useragent} %x {req.method}-[ %스레드] %] %-5level %logger {36}- %msg %n </pattern> </encoder> </acpledender> <-logstash-> appender name = "> <soneterd> $ {logstashurl} </destination> <encoder charset = "utf-8"/> </applender> <springprofile name = "dev"> <root level = "info"> <appender-ref ref = "console"/> <appender-ref ref = "file"/> <appender-ref ref = "파일"/> ref = "logstash"/> </root> </springProfile> <SpringProfile name = "test, prod"> <root level = "info"> <appender-Ref ref = "file"/> <appender-Ref ref = "logstash"/> </root> </springProfile> </configuration>시작
Eureka가 시작되었는지 확인하고 관리자가 시작하는 것이 가장 좋습니다. 앱 상태보기를 용이하게하기 위해 Elk의 로깅 시스템도 사용 가능합니다. 물론 유레카만이 필수입니다.
컴파일 및 패키지
MVN 청소 설치 패키지 스프링 부츠 : 재 포장
기본 메소드 실행, 프로파일을 개발자로 지정하고 아이디어에서 실행 구성을 편집하고 매개 변수를 추가 할 수 있습니다.
--- 스프링 .profiles.active = dev
또는 명령 줄 JAR을 시작하십시오
코드를 다음과 같이 복사하십시오.
스타트 업 후 Eureka에 액세스하십시오
관리자를 방문하십시오
제공자 데모를 방문하십시오
API를 소비자에게 노출시킵니다
서비스 제공 업체가 있으므로 소비자 소비를위한 것이어야합니다. 소비자는 어떻게 소비해야합니까? 이 HTTP 요청을 수동으로 호출하십시오. 앞에서 언급 한 Swagger Restful Contract는 서비스 제공 업체가 액세스를 요청하기 위해 제공하는 매개 변수 및 요구 사항입니다. 소비자 가이 클라이언트를 수동으로 개발하면 시간이 많이 걸리고 오류가 발생합니다. 따라서 서비스 제공 업체로서 사용하기 위해 SDK 또는 클라이언트를 소비자에게 제공해야합니다.
스프링 클라우드 기술 시스템에서는 원격 통화가 당연히 최우선 과제입니다. 내가 찾은 특정 사용량은 Feign+Ribbon+Hystrix입니다.
Feign의 선언 인터페이스 도킹을 통해 제공자에 대한 소비자 호출이 구현됩니다. 리본 클라이언트로드 밸런싱, Hystrix는 건강한 회로 차단기입니다.
여기에서 먼저 Feign의 인터페이스를 제공해야합니다.
컨트롤러의 API를 인터페이스로 개선하십시오. 먼저 새로운 프로젝트를 만듭니다
https://github.com/ryan-miao/spring-cloud-edgware-demo/tree/master/provider-api
이 프로젝트를 제공자 데모의 종속성 목록에 넣으십시오
<!-내부 종속성-> <pectionency> <groupId> com.test </groupId> <artifactID> 제공자 -api </artifactid> <버전> 0.0.1-snapshot </version> </dependent> <!-내부 종속성 종료->
제공자 -API 프로젝트에서 userAPI 인터페이스 채널을 종료하십시오
@requestmapping ( "/api/v1/users") public interface userApi {@getMapping ( "/") 목록 <SORERVO> list ();}제공자 데모의 컨트롤러는 다음과 같이 수정됩니다
@api@restcontrollerpublic class usercontroller는 userapi {private list <user> users = lists.newarraylist (1, "tan haoqiang", 100, localdate.now (), 새로운 사용자 (2, "Yan Weimin", 120, LocalDate.now ()), 새로운 사용자 (3, ","tan hae hae ha quang " LocalDate.now ()), 새 사용자 (4, "James Gosling", 150, LocalDate.now ()), 새 사용자 (6, "Doug Lea", 150, localDate.now ())); @override public list <uservo> list () {return user.stream () .map (u-> new uservo (u.getid (), u.getname (), u.getage (), u.getbirth ()) .collect (collectors.tolist ()); }}이러한 방식으로 컨트롤러는 변경되지 않았지만 API 경로에서 가져 왔습니다. 독립 모듈 제공 업체 -API는 소비자에게 제공하는 클라이언트입니다. 다음 섹션에서는 소비자를 사용하여 소비합니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.