黑马学SpringCloud-Nacos


目录:

(1)认识和安装Nacos

(2)Nacos-快速入门

(3)Nacos服务多级存储模型 

(4) Nacos-NacosRule负载均衡

(5) Nacos服务实例的权重设置

(6) Nacos-环境隔离

(7)Nacos和Eureka的对比


(1)认识和安装Nacos

 

Windows安装Nacos:

 

 

建议使用1点几的版本 

 

 

 

 

 解压好:

 bin里面是可执行文件:

 双击这个start.cmd:

输入启动命令 

 

 

 

 

按住Ctrl进行访问: 

 默认账号密码都是nacos:就能成功的登录到Nacos的控制台了

 

(2)Nacos-快速入门

消费之跟服务者的代码是不需要变化的,需要变化的是依赖,和服务的地址

 

 

首先在父工程中引入管理依赖:

 

在user-service模块中的pom:注释eureka的依赖,添加nacos依赖

 

 user-service的配置文件:注释eureka的配置:

 

 在order-service做相同的操作:

 

 

重新启动项目:

 

刷新Nacos的控制台:在服务列表中user-service和order-service都注册进来了

 

还可以点击服务详情:

 

测试服务的发现:从101到104

 

 查看idea日志:

 

 

(3)Nacos服务多级存储模型 

为了分散实例

 Nacos引入一个机房的概念,把同在一个机房的多个实例称为一个集群,所以Nacos服务分级存储模型中呢一级是服务,往下是集群,再往下实施例

 

 

 在服务详情里面模式是没有集群。

 

在user-service的配置文件中配置集群名称。 

 启动UserApplication、UserApplication2这样启动他们在HZ集群下面

 

上面启动完在修改一下集群名称SH 

 

 在启动UserApplication3,这样它启动再SH的集群下

 刷新服务列表:

 点进详情:

 

(4) Nacos-NacosRule负载均衡

上面我们已经把实例分别设置了集群,但是我们想实现 OrderService远程调用UserService时,优先选择本地集群,因此我们需要给OrderService配置一个集群属性

 在order-service的配置文件设置集群

 重新orser-service:

查看详情:orderservice也在HZ集群下面

 

 访问测试:101、102、103

 

我们发现8081、8082、8083都查询了数据,它仍然采用的是轮询,没有优先选择同集群的8081和8082 

 

 

 

 

修改orderservice的配置文件 :修改负载均衡规则

 然后再次访问5次:101到105

 查看日志:

发现8083日志什么都没有:

8081和8082都由查询日志:

  

 上面结果可见它优先访问本地的集群8081、8082

他两之间是随机访问的,采用随机的方式负载均衡

假设我们把8081和8082停掉:

 停掉之后:

 HZ已经没有实例了

 

 发起一次请求查询:

 这次请求由8083承担了

 在OrderApplication中会出现一个警告信息:款集群服务产生了

 

(5) Nacos服务实例的权重设置

 

 

可以在详情页设置权重:降低8081的权重,使它访问频率下降

 

 

测试:刷新访问20次:

 

 查看日志:8081被访问了2次

 8082:被访问了很多次

 

 如果权重设为0:

 在次查询测试:8081不会查询,都在8082中查询

 有了权重:

我们想要做一个版本的升级,原来怎么办,我们需要把服务重启,如果一重启,正在访问的用户就不能正常访问了,这就有问题了,所以只能等到用户都下线了,去做版本的升级,但是,如果有了权重,我有多了服务器,先将8081的服务调成0,它就不承担用户请求了,对它停机用户是没有感知的,然后对8081做一些版本的升级,然后重启,权重不先给它调太大,调0点几,让少数用户去访问,进行一个测试,如果没有问题可以逐渐扩大比例,一次升级,这个时候用户是无感知的可以做到平滑升级

(6) Nacos-环境隔离

 Nacos不仅是一个注册中心,它还是一个数据中心,在Nacos里面做数据和服务的管理,它有一个环境隔离的概念

将来可能会有多了namespace,相互之间是隔离开的

服务划分实例划分是基于业务的划分 或者地域

还会有生产环境、测试环境的变化,Namespace是基于环境变化做的隔离

环境隔离是对服务做的隔离,不同的命名空间的服务是不能访问的

 

 

 

 

 

 

没有设置都在public的命名空间 

 

 可以新建命名空间:

 

多了一个命名空间: 

 怎么修改一个服务的命名空间呢?

在order-service的配置文件中:添加创建的命名空间自动生成的id

 重新启动:

order-service已经爆红了: 

 

 

 

 它进入了新创建的dev环境

 

 

 访问测试:

 

要想服务能够访问需要放到相同的环境下

 

 (7)Nacos和Eureka的对比

Nacos比Euraka多了一个主动推送,当服务挂掉之后,注册中心会主动告诉消费者服务挂掉了,服务消费者及时更新,更新的效率变高

服务的提供者改采用临时实例和非临时实例,默认采用的是临时实例

 

 在order-service的配置文件:设置临时实例为false,改为非临时实例 

直接停掉服务,健康转态会变成false:

 过一会会删除

 

 

重启服务:临时实例的true变成了false

 

停掉order-service:

 

 停掉服务后非临时实例,不会删除:

重新启动服务:

 

重新恢复健康转态:

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵俺第一专栏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值