SpringCloud学习路线(4)—— Nacos注册中心

一、认识和安装Nacos

(一)概念: Nacos是Alibaba的产品,现在是SpringCloud中的一个组件,相较于Eureka功能更加丰富。
(二)下载地址: https://github.com/alibaba/nacos/releases

在这里插入图片描述
(三)修改端口号

/conf/application.properties

### 默认端口: 8848; 自己重新更换端口
server.port = 8848;

(四)启动Nacos

startup.cmd -m standalone

二、Nacos的基本使用

(一)服务注册到Nacos

1、在父工程中添加Spring-cloud-alibaba的管理依赖

<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的客户端依赖

<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

3、配置文件添加nacos地址

spring:
	cloud:
		nacos:
			server-addr: localhost:8848

三、Nacos服务分级存储模型

(一)服务分级存储的作用: 提高服务容灾能力

(二)Nacos服务分级存储
在这里插入图片描述
(三)设置服务集群属性

spring:
	cloud:
		nacos:
			server-addr: localhost:8848 #Nacos服务端地址
			discovery:
				cluster-name: HZ #配置集群名称

四、Nacos——NacosRule负载均衡

若想使消费者优先使用同集群的方式就是修改负载均衡的选择规则。

步骤如下:

1、 修改配置文件,设置集群属性

spring:
	cloud:
		nacos:
			server-addr: localhost:8848 #Nacos服务端地址
			discovery:
				cluster-name: HZ #配置集群名称

**2、设置负载均衡IRule 为NacosRule **

userservice:
	ribbon:
		NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule ##配置复印在均衡策略为 NacosRuls,优先使用配置的集群

3、将user-service的权重设置为 1(权重 0~1 ,权重越大访问频率越高)

五、Nacos环境隔离

(一)Nacos环境层级

在这里插入图片描述

(二)Nacos控制台使用Namespace

1、在Nacos控制台菜单栏选择命名空间,并创建命名空间。

2、配置namespace

spring:
	cloud:
		nacos:
			server-addr: localhost:8848
			discovery:
				cluster-name: SH
				namespace: xxxxxxxxx  #命名空间,填写Nacos控制台生成的命名空间ID

六、Nacos与Eureka的比较

(一)共同点:

1、都支持服务注册和服务拉取
2、都支持服务提供者心跳方式做健康监测

(二)不同点
1、Nacos支持服务端主动监测提供者状态:临时示例采用心跳模式,非临时实例采用主动监测模式。
2、临时实力心跳不正常则会被剔除,非临时实例则不会被剔除
3、Nacos支持服务列表变更的消息推送模式,服务列表更新及时
4、Nacos集群默认采用AP(可用性|分区容错性)方式,当集群中存在非临时实例,采用CP(一致性|分区容错性)模式;Eureka采用AP模式

根据实例的不同分为:临时实例非临时实例

如何配置非临时实例

spring:
	cloud:
		nacos:
			server-addr: localhost:8848
			discovery:
				cluster-name: SH
				namespace: xxxxxxxxx  #命名空间,填写Nacos控制台生成的命名空间ID
				ephemeral: false #是否为临时实例,默认为true

猜你喜欢

转载自blog.csdn.net/Zain_horse/article/details/131794471