Nacos 입문 학습
38348 단어 springcloudJ2EE
왜 나 코스 야?유레카, 콘 솔 이 생 긴 이상 왜 나 코스 가 있 습 니까?
Nacos 는 클 라 우 드 네 이 티 브 응용 을 구축 하 는 데 도움 이 되 는 동적 서비스 발견, 배치 와 서비스 관리 플랫폼 으로 등록 센터, 배치 센터 와 동적 DNS 서비스 세 가지 기능 을 제공 합 니 다.이음매 없 이 연결 가능
Springcloud
, Spring
, Dubbo
등 유행 프레임 워 크앞서 생방송 을 보면 서 망아지 형 은 이 프로젝트
SpringCloudAlibaba
를 추진 해 왔 는데 그 중에서 가장 중요 한 것 은 나 코스 였 다.넷 플 릭 스 OSS 의 많은 중요 한 구성 요소 들 이 연이어 새로운 기능 개발 을 중단 하 겠 다 고 발표 한 배경 을 알 아야 한다. 한편, Spring Cloud Alibaba 는 새로운 프로젝트 로 고속 교체 중이 다.
비고: 이 문 서 는 기본적으로 홈 페이지 설명 을 학습 합 니 다.
Nacos 설치
다운로드 하 다.
Nacos 입문 설 치 는 사실 홈 페이지 를 직접 볼 수 있 습 니 다. 아주 직 설 적 이 고 간단 합 니 다. 최신 가방 을 다운로드 한 다음 에 바로 실행 하면 됩 니 다!
https://nacos.io/zh-cn/docs/quick-start.html
다운로드:
git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos clean install -U
ls -al distribution/target/
// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin
설치 하 다.
Linux / Unix / mac 시작 명령 (standalone 은 단일 모드 로 실행 되 고 비 클 러 스 터 모드 를 대표 합 니 다):
sh startup.sh -m standalone
만약 에 ubuntu 시스템 을 사용 하거나 스 크 립 트 오류 알림 을 실행 하면 [기 호 를 찾 을 수 없 으 면 다음 과 같이 실행 해 보십시오.
bash startup.sh -m standalone
서 비 스 를 빠르게 익히다.
서비스 등록
curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080'
서비스 발견
curl -X GET 'http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName'
설정 발표
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld"
설정 가 져 오기
curl -X GET "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"
Nacos 통합 개발
Spring
통합 Spring 은 사실 완전한 문서 가 있 습 니 다
https://github.com/nacos-group/nacos-spring-project/wiki/Nacos-Spring-Project-0.3.1-%E6%96%B0%E5%8A%9F%E8%83%BD%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C
설정 관리 시작<dependency>
<groupId>com.alibaba.nacosgroupId>
<artifactId>nacos-spring-contextartifactId>
<version>${latest.version}version>
dependency>
@Configuration
@EnableNacosConfig(globalProperties = @NacosProperties(serverAddr = "127.0.0.1:8848"))
@NacosPropertySource(dataId = "example", autoRefreshed = true)
public class NacosConfiguration {
}
@Controller
@RequestMapping("config")
public class ConfigController {
@NacosValue(value = "${useLocalCache:false}", autoRefreshed = true)
private boolean useLocalCache;
@RequestMapping(value = "/get", method = GET)
@ResponseBody
public boolean get() {
return useLocalCache;
}
}
curl http://localhost:8080/config/get
을 통 해 설정 정 보 를 가 져 오 려 고 합 니 다. 설정 이 발표 되 지 않 았 기 때문에 되 돌아 오 는 내용 은 false curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example&group=DEFAULT_GROUP&content=useLocalCache=true"
http://localhost:8080/config/get
, 이 때 되 돌아 오 는 내용 은 true 입 니 다. 프로그램의 useLocalCache 값 이 동적 으로 업데이트 되 었 음 을 설명 합 니 다.시작 서비스 발견
<dependency>
<groupId>com.alibaba.nacosgroupId>
<artifactId>nacos-spring-contextartifactId>
<version>${latest.version}version>
dependency>
@Configuration
@EnableNacosDiscovery(globalProperties = @NacosProperties(serverAddr = "127.0.0.1:8848"))
public class NacosConfiguration {
}
@Controller
@RequestMapping("discovery")
public class DiscoveryController {
@NacosInjected
private NamingService namingService;
@RequestMapping(value = "/get", method = GET)
@ResponseBody
public List<Instance> get(@RequestParam String serviceName) throws NacosException {
return namingService.getAllInstances(serviceName);
}
}
curl http://localhost:8080/discovery/get?serviceName=example
, 이때 빈 JSON 배열 로 되 돌아 가기 [] curl -X PUT 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=example&ip=127.0.0.1&port=8080'
재 방문
curl http://localhost:8080/discovery/get?serviceName=example
, 이때 되 돌아 오 는 내용 은?[
{
"instanceId": "127.0.0.1#8080#DEFAULT#example",
"ip": "127.0.0.1",
"port": 8080,
"weight": 1.0,
"healthy": true,
"cluster": {
"serviceName": null,
"name": "",
"healthChecker": {
"type": "TCP"
},
"defaultPort": 80,
"defaultCheckPort": 80,
"useIPPort4Check": true,
"metadata": {}
},
"service": null,
"metadata": {}
}
]
SpringBoot
설정 관리 시작
<dependency>
<groupId>com.alibaba.bootgroupId>
<artifactId>nacos-config-spring-boot-starterartifactId>
<version>${latest.version}version>
dependency>
nacos.config.server-addr=127.0.0.1:8848
@SpringBootApplication
@NacosPropertySource(dataId = "example", autoRefreshed = true)
public class NacosConfigApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConfigApplication.class, args);
}
}
@Controller
@RequestMapping("config")
public class ConfigController {
@NacosValue(value = "${useLocalCache:false}", autoRefreshed = true)
private boolean useLocalCache;
@RequestMapping(value = "/get", method = GET)
@ResponseBody
public boolean get() {
return useLocalCache;
}
}
curl http://localhost:8080/config/get
, 반환 내용 은 false curl http://localhost:8080/config/get
, 반환 내용 은 false curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example&group=DEFAULT_GROUP&content=useLocalCache=true"
<dependency>
<groupId>com.alibaba.bootgroupId>
<artifactId>nacos-discovery-spring-boot-starterartifactId>
<version>${latest.version}version>
dependency>
@Controller
@RequestMapping("discovery")
public class DiscoveryController {
@NacosInjected
private NamingService namingService;
@RequestMapping(value = "/get", method = GET)
@ResponseBody
public List<Instance> get(@RequestParam String serviceName) throws NacosException {
return namingService.getAllInstances(serviceName);
}
}
@SpringBootApplication
public class NacosDiscoveryApplication {
public static void main(String[] args) {
SpringApplication.run(NacosDiscoveryApplication.class, args);
}
}
curl http://localhost:8080/discovery/get?serviceName=example
, 이 때 빈 JSON 배열 [] curl -X PUT 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=example&ip=127.0.0.1&port=8080'
curl http://localhost:8080/discovery/get?serviceName=example
, 이때 돌아 오 는 내용 은 [
{
"instanceId": "127.0.0.1-8080-DEFAULT-example",
"ip": "127.0.0.1",
"port": 8080,
"weight": 1.0,
"healthy": true,
"cluster": {
"serviceName": null,
"name": "",
"healthChecker": {
"type": "TCP"
},
"defaultPort": 80,
"defaultCheckPort": 80,
"useIPPort4Check": true,
"metadata": {}
},
"service": null,
"metadata": {}
}
]
SpringCloud
시작 설정
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
<version>${latest.version}version>
dependency>
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.application.name=example
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
@Value("${useLocalCache:false}")
private boolean useLocalCache;
@RequestMapping("/get")
public boolean get() {
return useLocalCache;
}
}
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=useLocalCache=true"
curl http://localhost:8080/config/get
, 반환 내용 은 true curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=useLocalCache=false"
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
<version>${latest.version}version>
dependency>
@SpringBootApplication
@EnableDiscoveryClient
public class NacosProviderApplication {
public static void main(String[] args) {
SpringApplication.run(NacosProviderApplication.class, args);
}
@RestController
class EchoController {
@RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
public String echo(@PathVariable String string) {
return "Hello Nacos Discovery " + string;
}
}
}
server.port=8080
spring.application.name=service-consumer
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumerApplication {
@LoadBalanced
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(NacosConsumerApplication.class, args);
}
@RestController
public class TestController {
private final RestTemplate restTemplate;
@Autowired
public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}
@RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
public String echo(@PathVariable String str) {
return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);
}
}
}
http://localhost:8080/echo/2018
을 시작 하고 Hello Nacos Discovery 2018 이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring Cloud에서 Feign에 대한 일반적인 질문 요약1. FeignClient 인터페이스, @GettingMapping 같은 조합 메모는 사용할 수 없음 코드 예: 이쪽 @RequestMapping(value = "/simple/{id}", method = Reque...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.