Nacos
Nacos提供了四个主要功能
- 服务发现和服务运行状况检查(服务治理):Nacos使服务易于注册自己并通过DNS或HTTP接口发现其他服务。Nacos还提供服务的实时运行状况检查,以防止向不正常的主机或服务实例发送请求。
- 动态配置管理:动态配置服务使您可以在所有环境中以集中和动态的方式管理所有服务的配置。Nacos消除了在更新配置时重新部署应用程序和服务的需求,这使配置更改更加有效和敏捷。
- 动态DNS服务:Nacos支持加权路由,使您可以更轻松地在数据中心内的生产环境中实施中间层负载平衡,灵活的路由策略,流控制和简单的DNS解析服务。它可以帮助您轻松实现基于DNS的服务发现,并防止应用程序耦合到特定于供应商的服务发现API。
- 服务和元数据管理(分布式配置):Nacos提供了易于使用的服务仪表板,可帮助您管理服务元数据,配置,kubernetes、DNS,服务运行状况和指标统计信息。
Nacos既可以作为服务治理中心(可以替代 Spring Cloud Eureka)也可以作为配置中心(可替代 Spring Cloud Config)。
Nacos作为一个单独的服务进行部署,不需要用户搭建项目作为服务治理节点。
Nacos 既支持AP也支持CP。
作为服务治理中心:采用的是AP模式,牺牲强一致性,从而保证存在节点宕机也不会影响正常的服务节点提供服务。
作为配置中心:采用的是CP模式,牺牲数据可用性,确保分布式下配置参数的强一致性。
CAP:数据一致性、数据可用性、分区耐受性
Nacos与Eureka的对比
Nacos服务端部署
b.上传到服务器,tar 解压
tar -xvf nacos-server-1.3.1.tar.gz
c.进入bin目录,以单点启动nacos
cd /local/usr/nacos/bin
sh startup.sh -m standalone
d.进入管理页面
http://127.0.0.1:8848/nacos/index.html 默认账户/默认密码 nacos/nacos
Nacos作为spring项目配置中心使用
依赖注入
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-spring-context</artifactId>
<version>0.3.6</version>
</dependency>
在Nacos中配置 Data Id
NacosConfiguration配置类
@Configuration
@EnableNacosConfig(globalProperties = @NacosProperties(serverAddr = "127.0.0.1:8848"))
@NacosPropertySource(dataId = "example", autoRefreshed = true)
public class NacosConfiguration {
}
Controller层
@RestController
public class configcontroller {
@NacosValue(value = "${useLocalCache:默认值}", autoRefreshed = true)
private String useLocalCache;
@RequestMapping("/get")
@ResponseBody
public String get() {
return useLocalCache;
}
}
访问 http://localhost:8080/get 验证结果
Nacos作为SpringCloud配置中心使用
注入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
bootstrap.properties配置文件
- bootstrap 加载优先于 applicaton
- bootstrap 里面的属性会优先加载,默认也不能被本地相同配置覆盖
- 在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息。
#应用名
spring.application.name=springcloud-imagerepair-nacos
#配置文件的前缀
spring.cloud.nacos.config.prefix=springcloud-imagerepair-nacos
#当前生效的配置文件
spring.profiles.active=Test
server.port=8081
#配置中心路径
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#配置文件后缀
spring.cloud.nacos.config.file-extension=properties
在Nacos中配置 Data Id
Controller层
@RestController
@RefreshScope
public class configcontroller {
@Value("${useLocalCache:false}")
private String useLocalCache;
@RequestMapping("/get")
@ResponseBody
public String get() {
return useLocalCache;
}
}
访问 http://localhost:8080/get 验证结果
Nacos作为SpringCloud服务治理中心使用
注入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
application.properties配置(或在Nacos中配置)
#应用名
spring.application.name=springcloud-imagerepair-nacos
#注册地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
在Nacos中完成服务的注册