目录
链接:https://pan.baidu.com/s/1-ZY4kca05VojJ_79yubP1A 提取码:ilcd
Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比于eureka功能更丰富,在功能受欢迎程度较高。
一、nacos的安装
nacos 2.0版本云盘地址:
链接:https://pan.baidu.com/s/1-ZY4kca05VojJ_79yubP1A
提取码:ilcd
1、开启nacos服务器
到安装路径的bin下打开cmd
这里我采用单独模式开启
startup.cmd -m standalone
2、访问该服务器网址
登录,默认都是nacos。
进入到nacos管理界面
二、配置nacos
1、配置父工程的依赖
<!--nacos的管理依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
2、客户端子工程配置
<!--nacos客户端依赖包-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
添加yml配置如下:
server:
port: 8001
spring:
application:
name: WXL-DEV-SERVICE-2
cloud:
nacos:
server-addr: localhost:8848 # nacos的服务配置
discovery:
cluster-name: Service_cluster_2 #集群
group: Service_group_2 # 分组名
username: nacos # 用户名
password: nacos # 密码
namespace: public # 命名空间
ephemeral: false #永久实例 哪怕宕机了也不会删除实例,默认为true非永久
启动类添加@EnableDiscoveryClient注解,如下:
package com.wxl;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class APIApplication {
public static void main(String[] args) {
SpringApplication.run(APIApplication.class, args);
}
}
3、重启服务,观察效果
可以观察到nacos已经检测到了这些服务。
三、nacos的服务分级模型
1、修改集群
spring:
cloud:
nacos:
discovery:
cluster-name: HZ # 集群名称,这里HZ代指杭州
重启服务观察效果:
可以看到集群已经改变了。
四、设置nacos的负载均衡
userserver: # 目标服务名称,可修改
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #负载均衡规则
优先选择本集群,再在本集群里采用随机的访问方式,当本地没有时才跨本地访问。
访问时8081访问频率就会是8082的十分之一了。默认权重为1,越大访问频率越高。设置为0时不会被访问到。
五、namespace命名空间
nacos新建命名空间
配置yml:
spring:
cloud:
nacos:
discovery:
namespace: 9729ce53-8514-4ba4-a998-ef78ef850ff8 # dev环境
重启
可以看到order-server已经被调到dev的namespace里了。
环境就被隔离了,要想服务可以互相访问必须放在同一个环境里。
六、nacos和eureka原理对比
默认为临时实例,关闭临时实例如下:
spring:
cloud:
nacos:
discovery:
ephemeral: false #关闭临时实例