一、安装Nacos
(1)下载地址:https://github.com/alibaba/nacos/releases
(2)配置端口、启动
在解压文件中conf/application.properties设置端口默认是8848
双击bin/startup.cmd启动服务
命令行启动:在bin文件下开启黑窗口startup.cmd -m standalone
二、注册服务到Nacos
1、在cloud-demo父工程添加依赖
<!--nacos的管理依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
2、添加Nacos客户端依赖
<!-- nacos客户端依赖包 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
3、在application.yml中添加Nacos地址
server:
port: 8088
spring:
application:
name: orderservice
cloud:
nacos:
server-addr: localhost:8848 # nacos服务地址
4、服务拉取
(1)url访问路径,用服务名称代替ip、端口
String url = "http://orderservice/user/" + user.getOrderId();
(2)在启动类中的RestTemplate添加负载均衡注解
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
三、Ribbon负载均衡
(1)Ribbon负载均衡规则
规则接口是IRule。默认实现是ZoneAvoidanceRule,根据zone选择服务列表,然后轮询
(2)负载均衡自定义两种方式
配置灵活,但修改时需要重新打包发布
@Bean
public IRule randomRule() {
return new RandomRule();
}
直观、方便无需重新打包发布,但是无法做全局配置
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则
(3)Ribbon默认加载方式是懒加载。更改加载方式
ribbon:
eager-load:
enabled: true # 开启饥饿加载
clients: # 指定饥饿加载的服务名称
- userservice
四、Nacos分级存储模型
1、在application.yml中设置集群属性
cloud:
nacos: # nacos的地址信息
server-addr: localhost:8848
discovery:
cluster-name: HZ #设置集群
2、修改负载均衡规则,本地集群优先选择相互访问
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则
3、根据权重负载均衡
编辑修改权重设置,设置为0不会被访问
4、环境隔离
(1)在命名空间设置新建命名空间,在application.yml中设置命名空间填写ID(不同环境不能相互访问)
cloud:
nacos: # nacos的地址信息
server-addr: localhost:8848
discovery:
cluster-name: HZ #设置集群
namespace: 4d22cecf-3eba-400d-a2d1-f5a359f3f0eb #dev环境
五、Nacos配置管理
1、统一配置管理(配置热更新)
配置管理——配置列表——点击加号——新建配置信息
2、获取配置信息
引入nacos配置管理依赖
<!--nacos的配置管理依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
新建bootstrap.yml文件
spring:
application:
name: orderservice #服务名称
profiles:
active: dev # 环境
cloud:
nacos:
server-addr: localhost:8848 # nacos地址
config:
file-extension: yaml # 文件后缀名
服务的读取
@Component
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
private String dateformat;
public void setDateformat(String dateformat) {
this.dateformat = dateformat;
}
public String getDateformat() {
return dateformat;
}
}
3、多环境配置共享
创建配置信息不添加环境名称
网友评论