Nacos下载
从 最新稳定版本 下载 nacos-server-$version.zip 包。这里下载的是1.3.2
版。
启动服务器
startup.cmd -m standalone
用户名和密码默认是:nacos
项目实战
项目结构:
- provider:服务提供者1
- provider-2:服务提供者2
- consumer:消费者
provider项目
pom.xml文件:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR6</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
- 注意:这里SpringBoot版本用的是:2.1.13.RELEASE,对应SpringCloud版本:Greenwich.SR6,nacos-config和nacos-discovery版本:2.1.3.RELEASE,其它版本查看版本说明
bootstrap.proerties文件:
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.application.name=service-provider
application.properties文件:
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
Java文件:
启动服务发现:
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
通过 Spring Cloud 原生注解 @RefreshScope
实现配置自动更新:
@RestController("config")
@RefreshScope
public class ConfigController {
@Value("${useLocalCache:false}")
private boolean useLocalCache;
@GetMapping
public String get() {
return "return from provider 1: " + useLocalCache;
}
}
provider-2和provider一样,只是端口号改了。
consumer项目
给 RestTemplate
实例添加 @LoadBalanced
注解,开启 @LoadBalanced
与 Ribbon
的集成:
@SpringBootApplication
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
测试
- 首先通过调用 Nacos Open API 向 Nacos Server 发布配置:dataId 为
service-provider.properties
,内容为useLocalCache=true
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=service-provider.properties&group=DEFAULT_GROUP&content=useLocalCache=true"
还可以通过界面修改:
- 访问
http://localhost:9090/config/get
,此时返回内容为true,说明程序中的useLocalCache值已经被动态更新了。负载均衡也起效果。
服务列表: