一、部署nacos
(一)github下载nacos
(二)修改端口号
conf目录下的application.properties
(三)启动nacos
使用命令行工具进入到nacos的bin目录,输入以下命令启动,这种启动方式是以单个nacos启动,后续有集群的方式启动
二、nacos服务注册
(一)引入父工程依赖,这里定义了springCloudAlibaba依赖的版本号
<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>
(二)项目中引入nacos discovery依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
(三)编写项目yml文件
spring:
application:
name: orderservice
cloud:
nacos:
server-addr: localhost:8848 # nacos服务地址
discovery:#设置地域,作用有两个,一是提高容灾能力,二是加快访问速度
cluster-name: HZ
userservice: # 负载均衡规则
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
ribbon:
eager-load:
enabled: true # 开启饥饿加载
clients: # 指定饥饿加载的服务名称
- userservice
(四)注册RestTemplate
来发送http请求,这里一定要加上@LoadBalanced,它会自动根据服务名称向nacos索取服务实例的ip地址及其他信息,并根据yml文件中设置的负载均衡规则进行服务实例选择
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
(五)测试
这里直接使用了userservice服务名称代理了具体的ip地址
String url = "http://userservice/user/"+order.getUserId();
User user = restTemplate.getForObject(url, User.class);
三、负载均衡
实际上在刚才的yml中有很多关于负载均衡的配置:
1.负载均衡规则
可根据服务名称来配置对应的负载均衡规则,默认的是轮询,这里配置的是nacos的NacosRule
userservice: # 负载均衡规则
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
2.ribbon饥饿加载
通过设置ribbon饥饿加载,可以提高第一次的访问速度
ribbon:
eager-load:
enabled: true # 开启饥饿加载
clients: # 指定饥饿加载的服务名称
- userservice
3.地域设置
微服务可以在多个地域部署,来提高容灾能力,同时,为了提高访问速度,可以设置尽可能同地域之间的微服务调用来提高服务访问速度,前提是设置负载均衡规则为NacosRule,否则默认的仍然是轮询规则
spring:
cloud:
nacos:
discovery:
cluster-name: HZ #杭州
userservice: # 负载均衡规则
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
4.服务实例权重
通过设置权重,可以提高性能优越服务器被访问到的概率,同时如果服务器集群升级的话,可以通过设置权重为0,从而实现平滑升级。
四、nacos统一配置管理
(一)统一配置
1.在nacos服务器上添加统一配置