nacos-server的服务注册与发现的源码,
- https://cloud.tencent.com/developer/article/1881623
按照官方网站搭建的demo过程如下:
Nacos
官方网站: https://github.com/alibaba/nacos
案例demo参考网站: https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-discovery-en
使用依赖
代码语言:javascript复制 <properties>
<spring-cloud.version>2020.0.3</spring-cloud.version>
<spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
<springfox.version>3.0.0</springfox.version>
</properties>Nacos-client
下载
启动
- bin目录下: startup.cmd -m standalone
可视化界面
- http://localhost:8848/nacos
- 账号: nacos
- 密码: nacos
Provider
依赖
代码语言:javascript复制 <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>配置文件
代码语言:javascript复制spring:
application:
name: nacos-provider
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848启动类
代码语言:javascript复制@EnableAutoConfiguration
@EnableDiscoveryClient
@ComponentScan
public class Provider {
public static void main(String[] args) {
SpringApplication.run(Provider.class);
}
}检查
nacos控制界面 -> 服务管理 -> 服务列表
另引入了springfox-boot-starterjar包,在http://127.0.0.1:8080/swagger-ui/index.html中看到接口
consumer
依赖
同Provider
配置文件
代码语言:javascript复制spring:
application:
name: nacos-consumer
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
server:
port: 8090启动类
代码语言:javascript复制@SpringBootApplication
@EnableDiscoveryClient
public class Consumer {
public static void main(String[] args) {
SpringApplication.run(Consumer.class);
}
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
@Autowired
TestService testService;
@Bean
public ApplicationRunner applicationRunner(){
return arguments -> {
testService.echo();
};
}
}测试类
代码语言:javascript复制@Service
public class TestService {
@Autowired
private DiscoveryClient discoveryClient;
@Autowired
private RestTemplate restTemplate;
@Value("${spring.application.name}")
private String appName;
public void echo() {
List<ServiceInstance> instances = discoveryClient.getInstances("nacos-provider");
ServiceInstance serviceInstance = instances.get(0);
String host = serviceInstance.getHost();
int port = serviceInstance.getPort();
String path = String.format("http://%s:%s/echo/%s", host, port, appName);
System.out.println("request path:" path);
String object = restTemplate.getForObject(path, String.class);
System.out.println("object = " object);
}
}响应
代码语言:javascript复制request path: http://***:8080/echo/nacos-consumer
object = Hello Nacos Discovery nacos-consumernacos控制台展示:
nacos-provider | DEFAULT_GROUP | 1 | 1 | 1 | false | 详情|示例代码|订阅者|删除 |
|---|---|---|---|---|---|---|
nacos-consumer | DEFAULT_GROUP | 1 | 1 | 1 | false | 详情|示例代码|订阅者|删除 |


