过年做那个网站致富,建设银行湖南省分行官方网站,竞价托管推广哪家好,昆明做网站公司哪家好转载自 Nacos Spring Cloud 快速开始
本文主要面向 Spring Cloud 的使用者#xff0c;通过两个示例来介绍如何使用 Nacos 来实现分布式环境下的配置管理和服务注册发现。
关于 Nacos Spring Cloud 的详细文档请参看#xff1a;Nacos Config 和 Nacos Discovery。
通过 Nac…转载自 Nacos Spring Cloud 快速开始
本文主要面向 Spring Cloud 的使用者通过两个示例来介绍如何使用 Nacos 来实现分布式环境下的配置管理和服务注册发现。
关于 Nacos Spring Cloud 的详细文档请参看Nacos Config 和 Nacos Discovery。
通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。
前提条件
您需要先下载 Nacos 并启动 Nacos server。操作步骤参见 Nacos 快速入门
启动配置管理
启动了 Nacos server 后您就可以参考以下示例代码为您的 Spring Cloud 应用启动 Nacos 配置管理服务了。完整示例代码请参考nacos-spring-cloud-config-example
添加依赖
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactIdversion${latest.version}/version
/dependency注意版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。
更多版本对应关系参考版本说明 Wiki
在 bootstrap.properties 中配置 Nacos server 的地址和应用名
spring.cloud.nacos.config.server-addr127.0.0.1:8848spring.application.nameexample说明之所以需要配置 spring.application.name 是因为它是构成 Nacos 配置管理 dataId字段的一部分。
在 Nacos Spring Cloud 中dataId 的完整格式如下
${prefix}-${spring.profiles.active}.${file-extension}prefix 默认为 spring.application.name 的值也可以通过配置项 spring.cloud.nacos.config.prefix来配置。spring.profiles.active 即为当前环境对应的 profile详情可以参考 Spring Boot文档。 注意当 spring.profiles.active 为空时对应的连接符 - 也将不存在dataId 的拼接格式变成 ${prefix}.${file-extension}file-exetension 为配置内容的数据格式可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
通过 Spring Cloud 原生注解 RefreshScope 实现配置自动更新
RestController
RequestMapping(/config)
RefreshScope
public class ConfigController {Value(${useLocalCache:false})private boolean useLocalCache;RequestMapping(/get)public boolean get() {return useLocalCache;}
}首先通过调用 Nacos Open API 向 Nacos Server 发布配置dataId 为example.properties内容为useLocalCachetrue
curl -X POST http://127.0.0.1:8848/nacos/v1/cs/configs?dataIdexample.propertiesgroupDEFAULT_GROUPcontentuseLocalCachetrue运行 NacosConfigApplication调用 curl http://localhost:8080/config/get返回内容是 true。 再次调用 Nacos Open API 向 Nacos server 发布配置dataId 为example.properties内容为useLocalCachefalse
curl -X POST http://127.0.0.1:8848/nacos/v1/cs/configs?dataIdexample.propertiesgroupDEFAULT_GROUPcontentuseLocalCachefalse再次访问 http://localhost:8080/config/get此时返回内容为false说明程序中的useLocalCache值已经被动态更新了。
启动服务发现
本节通过实现一个简单的 echo service 演示如何在您的 Spring Cloud 项目中启用 Nacos 的服务发现功能如下图示: 完整示例代码请参考nacos-spring-cloud-discovery-example
添加依赖
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactIdversion${latest.version}/version
/dependency注意版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。
更多版本对应关系参考版本说明 Wiki
配置服务提供者从而服务提供者可以通过 Nacos 的服务注册发现功能将其服务注册到 Nacos server 上。
i. 在 application.properties 中配置 Nacos server 的地址
server.port8070
spring.application.nameservice-providerspring.cloud.nacos.discovery.server-addr127.0.0.1:8848ii. 通过 Spring Cloud 原生注解 EnableDiscoveryClient 开启服务注册发现功能
SpringBootApplication
EnableDiscoveryClient
public class NacosProviderApplication {public static void main(String[] args) {SpringApplication.run(NacosProviderApplication.class, args);}RestControllerclass EchoController {RequestMapping(value /echo/{string}, method RequestMethod.GET)public String echo(PathVariable String string) {return Hello Nacos Discovery string;}}
}配置服务消费者从而服务消费者可以通过 Nacos 的服务注册发现功能从 Nacos server 上获取到它要调用的服务。
i. 在 application.properties 中配置 Nacos server 的地址
server.port8080
spring.application.nameservice-consumerspring.cloud.nacos.discovery.server-addr127.0.0.1:8848ii. 通过 Spring Cloud 原生注解 EnableDiscoveryClient 开启服务注册发现功能。给 RestTemplate 实例添加 LoadBalanced 注解开启 LoadBalanced 与 Ribbon 的集成
SpringBootApplication
EnableDiscoveryClient
public class NacosConsumerApplication {LoadBalancedBeanpublic RestTemplate restTemplate() {return new RestTemplate();}public static void main(String[] args) {SpringApplication.run(NacosConsumerApplication.class, args);}RestControllerpublic class TestController {private final RestTemplate restTemplate;Autowiredpublic 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);}}
}启动 ProviderApplication 和 ConsumerApplication 调用 http://localhost:8080/echo/2018返回内容为 Hello Nacos Discovery 2018。
相关项目
NacosNacos SpringNacos Spring BootSpring Cloud Alibaba