windows启动nacos
到nacos的bin目录下 启动tartup.cmd,nacos网址默认为http://localhost:8848/nacos
注册中心
spring:
application:
name: nacos-payment-provider
cloud:
nacos:
discovery:
server-addr: localhost:8848 #配置Nacos地址
主启动类加@EnableDiscoveryClient注解
nacos支持AP,CP模式的切换
nacos默认支持负载均衡(使用RestTemplate时)
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced //负载均衡:默认轮询
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
配置集群(cluster-name)
例如微服务实例A部署在杭州,实例B部署在上海
cloud:
nacos:
server-addr: localhost:8848
discovery:
cluster-name: HZ # 集群名称 HZ杭州
Ribbon的默认实现 ZoneAvoidanceRule 并不能实现根据同集群优先来实现负载均衡,我们把规则改成 NacosRule 即可。我们是用 orderservice 调用 userservice,所以在 orderservice 配置规则。
@Bean
public IRule iRule(){
//默认为轮询规则,这里自定义为随机规则
return new NacosRule();
}
或者配置Yml
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #负载均衡规则
这样,HZ的orderservice默认调用HZ的userservice,当HZ的userservice下线后,即可调用其他的userservice,但是后台会报警告
权重配置
服务器设备性能有差异,部分实例所在机器性能较好,另一些较差,我们希望性能好的机器承担更多的用户请求。但默认情况下 NacosRule 是同集群内随机挑选,不会考虑机器的性能问题。
因此,Nacos 提供了权重配置来控制访问频率,0~1 之间,权重越大则访问频率越高,权重修改为 0,则该实例永远不会被访问。
在 Nacos 控制台,找到 user-service 的实例列表,点击编辑,即可修改权重。
**
另外,在服务升级的时候,有一种较好的方案:我们也可以通过调整权重来进行平滑升级,例如:先把 userservice 权重调节为 0,让用户先流向 userservice2、userservice3,升级 userservice后,再把权重从 0 调到 0.1,让一部分用户先体验,用户体验稳定后就可以往上调权重啦。**
临时实例
Nacos 的服务实例分为两种类型:
- 临时实例:如果实例宕机超过一定时间,会从服务列表剔除,默认的类型。
- 非临时实例:如果实例宕机,不会从服务列表剔除,也可以叫永久实例。
配置一个服务实例为永久实例:
spring: cloud: nacos: discovery: ephemeral: false # 设置为非临时实例
配置中心
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
#namespace: 7a901d46-e75e-4e6a-b186-5980cca4249b
需要动态刷新的类上加 @RefreshScope 注解
匹配规则
{spring.profiles.active}.${spring.cloud.nacos.config.file-extension} 例如:nacos-config-client-dev.yaml
环境切换(三种方案)(例如:命名空间:不同企业,分组:不同项目名,dataid:不同环境)
DataID方案
例子:test环境跟dev环境切换只需更改spring.profiles.active即可