http://t.csdnimg.cn/5orNS 搭建Nacos集群
1. 启动
进入bin目录
windows命令:
startup.cmd -m standalone
2. 服务注册到nacos
2.1. 引入依赖
在cloud-demo父工程的pom文件中的<dependencyManagement>中引入SpringCloudAlibaba的依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
然后在user-service和order-service中的pom文件中引入nacos-discovery依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.2. 配置nacos地址
在user-service和order-service的application.yml中添加nacos地址
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
3. 服务分级存储模型
3.1. 给user-service(客户端)配置集群
修改user-service的application.yml文件,添加集群配置
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
cluster-name: HZ # 集群名称
我们再次复制一个user-service启动配置,添加属性:
-Dserver.port=8083 -Dspring.cloud.nacos.discovery.cluster-name=SH
3.2. 同集群优先的负载均衡
Nacos中提供了一个NacosRule的实现,可以优先从同集群中挑选实例。
1)给order-service配置集群信息
修改order-service的application.yml文件,添加集群配置
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
cluster-name: HZ # 集群名称
2)修改负载均衡规则
方法一:修改order-service的application.yml文件,修改负载均衡规则
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则
方法二:修改order-service启动类
//自定义负载均衡
@Bean
public IRule randomRule(){
return new NacosRule();//NacosRule优先选择本地集群,采用随机策略
}
4. 权重配置
实际部署中会出现服务器设备性能有差异,我们希望性能好的机器承担更多的用户请求。
但默认情况下NacosRule是同集群内随机挑选,不会考虑机器的性能问题。
因此,Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高。
在nacos控制台,找到user-service的实例列表,点击编辑,即可修改权重:
如果权重修改为0,则该实例永远不会被访问
5. 环境隔离
Nacos提供了namespace来实现环境隔离功能。
- nacos中可以有多个namespace
- namespace下可以有group、service等
- 不同namespace之间相互隔离,例如不同namespace的服务互相不可见
5.1. 创建namespace
5.2. 给微服务配置namespace
修改order-service的application.yml文件
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
cluster-name: HZ
namespace: dev # 命名空间,填ID