nacos
参考
DIDI的系列,简单入门有demo
https://www.jianshu.com/p/9c98eb1088a3
https://nacos.io/zh-cn/docs/what-is-nacos.html
多环境的配置(namespace 区分DEV 、UAT 、 Test, group区分业务)
http://blog.didispace.com/spring-cloud-alibaba-nacos-config-2/
springcloud 阿里巴巴 maven 版本控制
http://blog.didispace.com/spring-cloud-alibaba-version/
启动nacos
- 本地安装和运行nacos
后台控制台:
http://localhost:8848/nacos/index.html
默认账号密码 nacos / nacos
nacos的优势
既有 配置中心 又有 注册中心,而且可以直接写在 application.properties 里面,不需要单独写个 bootstrap.properties 。
配置中心
- 支持控制台界面(http://localhost:8848/nacos/index.html) 支持登陆功能管理权限
- 支持动态配置(可以通过在类上添加 @RefreshScope注解),默认不会热加载
- 支持url API动态配置(类似于 solr),也支持 控制台修改
- 支持历史版本查询的功能,类似于 git 仓库的功能
- 配置中心功能可以用在简单的springboot项目中,实现自动热加载的功能,不需要重启应用。还有历史版本查询的功能。缺点也很明显,就是除了维护当前应用,没有展现出配置中心的优势
- 注册中心
作为注册中心 和eureka一样,都不需要改啥代码,迁移的成本很低,几乎没啥学习成本
consumer配置
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
server.port=8072
spring.application.name=service-consumer
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class DemoNacosApplication {
public static void main(String[] args) {
SpringApplication.run(DemoNacosApplication.class, args);
}
}
@FeignClient("service-provider")
public interface ClientRemote{
@GetMapping(value="/echo/{str}")
String hello(@PathVariable("str") String str);
}
dataId (例如 demo-ssm.properties)
{spring.profile.active}.${file-extension}
支持API url,新的会覆盖老的配置
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=demo-ssm.properties&group=DEFAULT_GROUP&content=useLocalCache=true"
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example.properties&group=DEFAULT_GROUP&content=useLocalCache=false"
curl -X PUT "http://127.0.0.1:8848/nacos/v1/ns/operator/switches?entry=pushEnabled&value=false&debug=false"
curl -X GET "http://127.0.0.1:8848/nacos/v1/ns/operator/switches"
localhost:8080/config/get
缺点
文档和社区太少了,碰到问题都搜不到解决方案,官网的文档都没那么全。 比如关闭 nacos的API功能,提升安全。这个最为致命
和SpringCloud的版本兼容性很差,比如 0.2.0Release版本 和 2.0.6版本SB兼容性很好,但是 和2.1.5版本SB,既不报错,也不成功急死人啊。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.2.0.RELEASE</version>
</dependency>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>