1.Nacos下载
下载地址Releases · alibaba/nacos · GitHub
下载后在bin目录下启动
sh startup.sh -m standalone(standalone为单机启动)
出现这个界面就表示启动成功了
2.注册与发现
主要就是引入两个jar包
1.在nacos上进行服务注册
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
引入后在yml配置上nacos地址
spring: application: name: emall (服务名称) cloud: nacos: discovery: cluster-name: cluster (配置的集群名称) namespace: 06e8a589-2ddb-4eed-a936-77c49466af54(指定注册的命名空间默认为public) server-addr: localhost:8848 (nacos地址)
命名空间主要是为了进行环境隔离,每个命名空间会有个唯一id且不同命名空间下环境相互隔离。
配置完启动后在nacos即可看到注册的服务
2.拉取配置信息
在配置列表中发布配置文件后进行配置拉群:
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
引入该接口后进行yml配置
spring: application: name: emall profiles: active: dev cloud: nacos: server-addr: localhost:8848 config: file-extension: yaml (配置文件后缀) prefix: eamll-dev (配置文件名称) group: DEFAULT_GROUP (配置文件分组)
然后在代码进行注入(运行成功不报错就可以认为成功,否则会报错提示找不到)
3.配置文件刷新
当nacos更新了配置文件后如何不进行重启服务而同步更新配置的两个方法:
1.在类上配置一个注解@RefreshScope
配置完后在该类下的@Value都会进行自动刷新
2.配置一个 @ConfigurationProperties(prefix = “配置名前缀”)的类进行注入操作
加入spring,再使用@Autowired注入即可使用
4.Nacos集群
集群配置方式为
spring: cloud: nacos: discovery: cluster-name: cluster(集群名称)
可以通过修改权重调节每个服务的访问比重。
还可以加入该配置可以优先访问同集群下的服务
userservice: ribbon: NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
5.与Eureka对比
相同点:
1.都支持注册和服务拉取
2.都支持心跳检测。
不同点:
1.Nacos的临时服务是以心跳检测的,而非临时的服务则是主动拉取(宕机检测很快,但是服务器压力较大)
2.Nacos支持服务配置同步更新。
3.Nacos默认为AP模式,当存在非临时服务则为CP模式,Eureka为AP模式。