Spring Cloud Alibaba 기초 튜 토리 얼: Nacos 를 사용 하여 서비스 등록 과 발견 실현
8720 단어 alibabanacosspring-cloud
더 많은 Spring Cloud Alibaba 에 대한 소 개 를 통 해 알 수 있 듯 이 은 중국 실정 에 더욱 부합 되 는 마이크로 서비스 체 계 를 구축한다.
나 코스 가 뭐야?
Nacos 는 마이크로 서 비 스 를 발견 하고 설정 하 며 관리 하 는 데 도움 을 줍 니 다.Nacos 는 간단 하고 사용 하기 쉬 운 특성 집합 을 제공 하여 동적 서비스 발견, 서비스 설정, 서비스 메타 데이터 와 데이터 관 리 를 신속하게 실현 하도록 도와 줍 니 다.Nacos 는 귀하 가 더욱 민첩 하고 쉽게 마이크로 서비스 플랫폼 을 구축 하고 납품 하 며 관리 하 는 데 도움 을 줍 니 다.Nacos 는 '서비스' 중심의 현대 응용 구조 (예 를 들 어 마이크로 서비스 패 러 다 임, 클 라 우 드 네 이 티 브 패 러 다 임) 를 구축 하 는 서비스 인 프 라 시설 이다.
다음 튜 토리 얼 에 서 는 Nacos 를 마이크로 서비스 구조 에 있 는 등록 센터 (대체: eurekba, consul 등 전통 방안) 와 배치 센터 (spring cloud config) 로 사용 합 니 다.
Nacos 설치
다운로드 주소:https://github.com/alibaba/na...본문 버 전: 0.7.0
다운로드 가 완료 되면 압축 을 풀 수 있 습 니 다.서로 다른 플랫폼 에 따라 서로 다른 명령 을 실행 하고 단기 판 Nacos 서 비 스 를 시작 합 니 다.
sh startup.sh -m standalone
cmd startup.cmd -m standalone
startup.sh
스 크 립 트 는 Nacos 가 압축 을 푼 빈 디 렉 터 리 에 있 습 니 다.스프링 클 라 우 드 와 Nacos 의 통합 사용 을 소개 하고 Nacos 의 고급 설정 에 대해 추 후 보충 합 니 다.그 러 니 제 블 로그 나 공중 번 호 를 계속 지 켜 보 세 요!시작 완료 후 방문:
http://127.0.0.1:8848/nacos/
Nacos 의 서비스 관리 페이지 에 들 어 갈 수 있 습 니 다. 구체 적 으로 다음 과 같 습 니 다.응용 프로그램 접속 Nacos 등록 센터 구축
Nacos 서비스의 설치 와 시작 을 마 친 후에 우 리 는 두 개의 응용 프로그램 (서비스 제공 자 와 서비스 소비자) 을 작성 하여 서비스의 등록 과 발견 을 검증 할 수 있 습 니 다.
서비스 공급 자
첫 번 째 단계: Spring Boot 애플 리 케 이 션 을 만 듭 니 다. 이름 은:
alibaba-nacos-discovery-server
입 니 다.스프링 부 트 애플 리 케 이 션 을 아직 모 르 거나 모 르 신다 면 스프링 부 트 기초 튜 토리 얼 을 먼저 배 우 는 것 을 권장 합 니 다.두 번 째 단계: 편집
pom.xml
, 필요 한 의존 설정 을 추가 합 니 다. 예 를 들 어:
org.springframework.boot
spring-boot-starter-parent
2.0.5.RELEASE
org.springframework.cloud
spring-cloud-dependencies
Finchley.SR1
pom
import
org.springframework.cloud
spring-cloud-alibaba-dependencies
0.2.1.RELEASE
pom
import
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-alibaba-nacos-discovery
org.projectlombok
lombok
1.18.2
true
상술 한 내용 은 주로 세 부분 이다.
parent
: spring boot 의 버 전 을 정의 합 니 다 dependencyManagement
: spring cloud 버 전 및 spring cloud alibaba 버 전 은 spring cloud alibaba 가 아직 spring cloud 의 메 인 버 전 관리 에 포함 되 지 않 았 기 때문에 스스로 가입 해 야 합 니 다 dependencies
: 현재 응용 에서 사용 할 의존 내용.여 기 는 주로 Nacos 의 서비스 등록 과 발견 모듈 을 새로 추 가 했 습 니 다. spring-cloud-starter-alibaba-nacos-discovery
dependencyManagement
에 이미 버 전이 도입 되 었 기 때문에 구체 적 인 버 전 을 지정 할 필요 가 없다.세 번 째 단계: 주 클래스 를 만 들 고 HTTP 인 터 페 이 스 를 실현 합 니 다.
@EnableDiscoveryClient
@SpringBootApplication
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
@Slf4j
@RestController
static class TestController {
@GetMapping("/hello")
public String hello(@RequestParam String name) {
log.info("invoked name = " + name);
return "hello " + name;
}
}
}
내용 이 매우 간단 합 니 다.
@SpringBootApplication
정 의 는 Spring Boot 응용 입 니 다.@EnableDiscoveryClient
Spring Cloud 를 여 는 서비스 등록 과 발견 은 여기에 spring-cloud-starter-alibaba-nacos-discovery
모듈 이 도입 되 었 기 때문에 Spring Cloud Common 에서 정의 하 는 서비스 관리 와 관련 된 인 터 페 이 스 는 Nacos 의 실현 을 사용 할 것 이다.이 점 은 우리 가 Eureka, Consul 을 사용 하 든 다른 Spring Cloud 통합 의 등록 센터 를 사용 하 든 마찬가지 입 니 다. 이것 은 Spring Cloud 가 패 키 징 을 한 장점 이기 도 합 니 다. 만약 에 Eureka, Consul 등 등록 센터 의 통합 에 익숙 하지 않 으 면 예전 의 이 편 을 볼 수 있 습 니 다. Spring Cloud 구축 마이크로 서비스 구조: 서비스 등록 과 발견 (Eureka, Consul).네 번 째 단계: 서비스 이름과 Nacos 주 소 를 설정 합 니 다.
spring.application.name=alibaba-nacos-discovery-server
server.port=8001
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
다섯 번 째 단계: 위 에서 만 든 응용 프로그램 을 시작 합 니 다.시작 할 때
-Dserver.port=8001
형식 을 추가 하여 이 컴퓨터 의 서로 다른 포트 에서 여러 개의 인 스 턴 스 를 시작 할 수 있 습 니 다.응용 프로그램 이 시 작 된 후에 우 리 는 콘 솔 이나 로그 에서 다음 과 같은 내용 을 볼 수 있 습 니 다. 등록 이 성공 한 것 을 의미 합 니 다.
INFO 10476 --- [ main] o.s.c.a.n.registry.NacosServiceRegistry : nacos registry, alibaba-nacos-discovery-server 10.123.18.216:8001 register finished
도 ok 을 시작 한 후에 저 희 는 Nacos 의 관리 페이지 를 방문 할 수 있 습 니 다.http://127.0.0.1:8848/nacos/서비스 목록 을 보 려 면 다음 과 같은 내용 을 볼 수 있 습 니 다.
현재 등 록 된 모든 서비스 와 모든 서비스의 클 러 스 터 수, 인 스 턴 스 수, 건강 인 스 턴 스 수 를 표시 합 니 다.상세 한 정 보 를 클릭 하면 우 리 는 모든 서비스의 구체 적 인 사례 정 보 를 볼 수 있 습 니 다. 다음 그림 과 같 습 니 다.
서비스 소비자
다음은 Nacos 에 등 록 된 서 비 스 를 소비 하 는 애플 리 케 이 션 을 실현 한다.
첫 번 째 단계: Spring Boot 응용 프로그램 을 만 듭 니 다. 이름 은:
alibaba-nacos-discovery-client-common
입 니 다.두 번 째 단계: pom. xml 의 의존 내용 을 편집 하고 상기 서비스 제공 자 와 같 으 면 됩 니 다.
세 번 째 단계: 응용 주 클래스 를 만 들 고 HTTP 인 터 페 이 스 를 실현 하 며 이 인터페이스 에서 서비스 제공 자의 인 터 페 이 스 를 호출 합 니 다.
@EnableDiscoveryClient
@SpringBootApplication
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
@Slf4j
@RestController
static class TestController {
@Autowired
LoadBalancerClient loadBalancerClient;
@GetMapping("/test")
public String test() {
// spring cloud common
ServiceInstance serviceInstance = loadBalancerClient.choose("alibaba-nacos-discovery-server");
String url = serviceInstance.getUri() + "/hello?name=" + "didi";
RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject(url, String.class);
return "Invoke : " + url + ", return : " + result;
}
}
}
여 기 는 Spring Cloud Common 의
LoadBalancerClient
인 터 페 이 스 를 사용 하여 서비스 인 스 턴 스 정 보 를 선택 합 니 다.그리고 선택 한 인 스 턴 스 정보 에서 접근 가능 한 URI 를 가 져 와 서비스 제공 자의 인터페이스 규칙 을 연결 하여 호출 합 니 다.네 번 째 단계: 서비스 이름과 Nacos 주 소 를 설정 하여 서비스 소비자 들 이 위 에 Nacos 에 등 록 된 서 비 스 를 발견 할 수 있 도록 합 니 다.
spring.application.name=alibaba-nacos-discovery-client-common
server.port=9000
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
다섯 번 째 단계: 서비스 소비 자 를 시작 한 다음 에 curl 또는 postman 등 도 구 를 통 해 방문 합 니 다. 다음은 curl 을 예 로 들 면:
$ curl localhost:9000/test
Invoke : http://10.123.18.216:8001/hello?name=didi, return : hello didi
$ curl localhost:9000/test
Invoke : http://10.123.18.216:8002/hello?name=didi, return : hello didi
두 번 의 서로 다른 요 구 를 할 때 실제 호출 된 서비스 제공 자의 인 스 턴 스 가 다르다 는 것 을 알 수 있다. 즉,
LoadBalancerClient
인 터 페 이 스 를 통 해 서비스 인 스 턴 스 를 얻 을 때 서비스 제공 자 인 스 턴 스 에 대한 부하 균형 을 실현 한 것 이다.그러나 이러한 실현 은 비교적 번 거 로 운 것 이 분명 하 다. 다음 몇 편 을 예고 하고 서비스 소비 에 관 한 몇 가지 다른 자 세 를 취한 다.참고 자료
본 고 는 독자 들 이 아래 창고 의
alibaba-nacos-discovery-server
항목 과 alibaba-nacos-discovery-client-common
항목 을 살 펴 볼 수 있다.관심 이 있 으 시 면 star, follow, 소장, 리 트 윗 을 환영 합 니 다!
다음 주제 강좌 에 관심 이 있 으 실 수도 있 습 니 다.