赞
踩
目录:
(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:
停掉服务后非临时实例,不会删除:
重新启动服务:
重新恢复健康转态:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。