이번에는 SpringCloud 서비스 등록 및 발견에 대한 콘텐츠를 공유하고 있으며, 이는 각각 서비스 센터, 서비스 등록 및 서비스 검색으로 설명됩니다. 이제 베이징의 많은 신생 기업이 Springcloud에 의존하기 시작했습니다. 풍부한 문서와 구성 요소 때문일 수 있습니다. 결국, 그것은 현재 비교적 완전한 마이크로 서비스 아키텍처입니다. 이 공유가 모든 사람에게 좋은 도움을 줄 수 있기를 바랍니다.
유레카 서비스 센터
내가 알고 있고 사용하는 한 많은 등록 센터에는 Zookeeper와 Eureka가 있습니다. 이전 기사는 Dubbo+Zookeeper를 공유하여 서비스를 구축 했으므로 이번에는 Eureka를 사용합니다. SpringCloud 프레임 워크는 또한 등록 센터로 권장합니다. 물론 다른 서비스 등록 센터와 통합 될 수 있습니다. 결국 SpringCloud는 SpringBoot에 의존하여 프로젝트를 구축하므로 다른 구성 요소를 통합하는 것이 매우 빠릅니다. 먼저 등록 센터 프로젝트 Eureka_Server를 작성하고 다음을 통해 종속성을 소개하십시오.
<pectionency> <groupid> org.springframework.cloud </groupid> <artifactid> Spring-Cloud-Starter-Eureka-Server </artifactid> </fectionency>
그런 다음 Application.yml 파일에 구성 항목을 추가합니다.
서버 : 2001Spring : 응용 프로그램 : 이름 : Eureka-Serverureureka : Client : Register-With-eureka : False #Service Fetch-Registry로 등록 할 수 있도록 : False #mask 등록 정보 인스턴스 : prefere-ip-address : true instance-id : $ {spring.application.name} : $ {sever.port}구성이 완료되면 클래스를 시작하고 @enableeurekaserver 주석을 추가해야합니다. 설정은 기본적으로 완료되고 실행됩니다. 다음 인터페이스를 얻으려면 http : // localhost : 2001/를 방문하십시오.
제공자 등록 서비스
서비스 등록 센터를 사용하면 서비스를 제공하고 서비스 센터에 이러한 서비스를 등록해야합니다. 이를 용이하게하기 위해 먼저 서비스 제공 업체 및 소비자가 사용하는 인터페이스 모듈 프로젝트 Eureka_api를 생성하고 다음 인터페이스를 만들고 요청 매개 변수 엔티티 클래스를 작성합니다.
public Interface userInterface {@postmapping ( "/user") morp <list <mouser >> getUsers (morq rq); @getMapping ( "/msg") String getMsg ();}Mouser Entity :
공개 클래스 Mouser {Private Long ID; 개인 문자열 사용자 이름; 개인 문자열 userpwd; public long getid () {return id; } public void setId (long id) {this.id = id; } public String getUserName () {return username; } public void setusername (String username) {this.username = username; } public String getUserPwd () {return userPwd; } public void setUserpwd (String userPwd) {this.userpwd = userpwd; }}그런 다음 서비스 제공 업체 측에서 모듈 Eureka_Provider를 작성하고 Eureka 의존성도 소개하지만 IT와 서버 측에는 약간의 차이가 있습니다.
<pectionency> <groupid> org.springframework.cloud </groupid> <artifactid> Spring-Cloud-Starter-Eureka </artifactid> </fectionency>
그런 다음 서비스 제공 업체가 제공 할 서비스 UserController를 작성하고 Eureka_api 모듈에서 userinterface 인터페이스를 구현하십시오. 코드는 다음과 같습니다.
@RestControllerPublic Class USERCONTROLLER는 USERINTERFACE {@autowired 개인 httpservletRequest 요청; @override public morp <list <mouser >> getUsers (morq rq) {morp <list <mouser>> rp = new morp <> (); 목록 <Mouser> list = new ArrayList <> (); for (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 서비스를 정의한 후에는 서비스 등록 센터에 주입 할 수 있어야하므로 다음의 Application.yml 구성이 필요합니다.
스프링 : 응용 프로그램 : 이름 : Eureka-Provider #Service Name Eureka : Client : Service-URL : Defaultzone : http : // localhost : 2001/eureka/#Service Center 주소 인스턴스 : prefere-ip-address : true instance-id : $ {spring.application.name} : $ {Server.port} 서버 : 2004또한 다음 태그 @enableeureKaclient를 시작 클래스에 추가해야합니다. 이는 서비스 제공 업체가 서비스 센터에 비해 클라이언트에 속하기 때문에 Eureka 클라이언트를 시작하는 것을 의미합니다. Eureka_Provider 프로젝트를 실행할 때 등록 센터에서 다음 정보를 볼 수 있습니다.
서비스 제공 업체 인터페이스가 정상인지 확인하기 위해 Eureka Provider : 2004를 직접 클릭 한 다음 사용할 인터페이스 경로를 늘릴 수 있습니다. 다음은 다음과 같습니다. http://192.168.153.148:2004/msg, 일반 액세스 인터페이스에서 다음과 같은 정보를 반환 할 수 있습니다.
소비자 발견 서비스
인터페이스 서비스를 사용하면 서비스를 소비해야하므로 모듈 프로젝트 Eureka_Consumer를 만듭니다. Fegin 의사 클라이언트 방법은 서비스 제공 업체에 액세스하는 데 사용되며 Eureka의 종속성도 소개해야합니다.
<pectionency> <groupid> org.springframework.cloud </groupid> <artifactid> Spring-Cloud-Starter-eureka </artifactid> </fectionency> <groupid> org.springframework.cloud </groupid> <artifactid> spring-cloud-starter-feign> </arepifactid>
그런 다음 서비스 계층에서 사용자 서비스 서비스를 정의하고 공개 인터페이스 모듈 Eureka_api에서 인터페이스를 구현하면 코드는 다음과 같습니다.
@feignclient (value = "eureka-provider") public Interface Userservice 확장 userInterface {}Feignclient를 통해 호출 된 서버 애플리케이션 이름 Eureka Provider를 지정하십시오. 이 이름은 서비스 센터에 등록 된 응용 프로그램 디렉토리에 해당합니다. 컨트롤러 계층에서 응답 출력 UserController를 작성하고 다음과 같은 두 개의 표시된 인터페이스를 제공합니다.
@RestControllerPublic Class USERCONTROLLER {@autowired private userervice userervice; @GetMapping ( "/Users") public morp <list <mouser >> getUsers (morq rq) {return userervice.getUsers (RQ); } @getMapping ( "/msg") public string getmsg () {return userervice.getmsg (); }}마찬가지로 소비자 측은 Application.yml에서 일부 정보를 구성해야합니다.
스프링 : 응용 프로그램 : 이름 : Eureka-Consumereureka : Client : Service-URL : DefaultZone : http : // localhost : 2001/eureka/#register Center 주소 인스턴스 : prefere-ip-address : true instance-id : $ {spring.application.name} : $ {server.port} 서버 : 2005구성은 제공자의 구성과 유사합니다. 마지막으로 시작 클래스에서 다음 주석을 선언해야합니다.
@springbootApplication@enablediscoveryclient // 소비자 클라이언트@enablefeignclients // feign client public 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입니다.
제공자의 결과는 서비스 등록 및 발견을위한 기본 테스트 프로세스 인 소비자에게 액세스하여 얻습니다. 소비자가 제공자 인터페이스를 요청하는 방법은 다음 수동 다이어그램을 통해이를 해결할 수 있습니다.
유레카 서비스 센터가 많이 사용 가능합니다
위의 수동 도면에서 판단하면 서비스 센터는 매우 중요한 역할을합니다. 일반적으로 이러한 종류의 서비스 센터는 하나를 구축 할뿐만 아니라 고도로 사용 가능한 서비스 센터를 구축해야합니다. 실제로 제공자와 소비자의 구성을 수행 할 필요가 없다는 것은 매우 간단합니다. 첫 번째 노드의 Eureka-Server 프로젝트의 Application.yml에서만 구성하고 다른 포트가있는 여러 서비스를 시작하면됩니다 (동일한 서버에는 여러 포트가 있으며 다른 서버 포트가 동일 할 수 있습니다).
서버 : 2001spring : 응용 프로그램 : 이름 : Eureka-Serverureureka : Client : Register-With-eureka : True # 고 가용성을 구성 할 때 Fetch-Registry : True Service-URL : // localhost : 2002/eureka/#Register 2002 Defaultzone : # defaultzone : http : // localhost : // localhost : // localhost : // localhost : // localhost : http : http : http : http : http : http : http : http : // http : // localhost : 2001/eureka/instance : prefer-ip-address : true instance-id : $ {spring.application.name} : $ {server.port} 서버 : evicict-interval-timer-ms : 2000 #exclude service intervals다음 사항은 고도로 사용 가능한 구성에서주의를 기울여야합니다.
여기서 나는 http : // localhost : 2001/및 http : // localhost : 2002/; 공급자가 구성한 레지스트리 주소와 소비자는 모두 PORT 2001이므로 고 가용성을 확인하기 위해 2002 포트 등록 센터에 액세스해야합니다. 효과는 다음과 같습니다.
2002 포트에는 2001 년 포트와 동일한 등록 정보가 있음을 알 수 있습니다. 2001 포트의 응용 프로그램을 닫을 때 2002 년에는 공급자와 소비자의 정보를 찾을 수 있습니다. 자세한 구성은 공식 웹 사이트 설명을 참조하십시오.
git 주소 : https://github.com/shenniubuxing3
Nuget 릴리스 패키지 : https://www.nuget.org/profiles/shenniubuxing3
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.