1.9 Nacos注册中心
1.9.1 Nacos说明
Nacos是阿里巴巴的产品,现在是SpringCloud的一个组件,相比Eureka功能更加丰富
1.9.2 Nacos的启动(解压即安装)
1)解压,进入bin目录
2)在bin目录中,进入cmd模式
3)敲入:startup.cmd -m standalone
4)进入网站:http://127.0.0.1:8848/nacos,密码和账户均为nacos
1.9.3 配置
- 在cloud-demo父工程中添加spring-cloud-alilbaba的管理依赖:
com.alibaba.cloudspring-cloud-alibaba-dependencies2.2.6.RELEASEpomimport
- 注释掉order-service和user-service中原有的eureka依赖。添加nacos的客户端依赖:
com.alibaba.cloudspring-cloud-starter-alibaba-nacos-discovery
- 修改user-service&order-service中的application.yml文件,注释eureka地址,添加nacos地址:
spring:cloud:nacos:server-addr: nacos:8848 # nacos服务地址
- 小结:更改配置,就是依赖和配置文件的变更。
1.9.4 Nacos的服务分级存储模型
1)模型:服务-》集群-》实例
user-service-》北京集群/上海集群/深圳集群-》8081/8082/8083
2)为什么要采用集群 集群是按照机房区域划分的,为了服务调用尽量使用本地集群服务,降低服务调用时延。 修改application.yml文件,spring.cloud.nacos.discovery.cluster-name添加属性
3)服务实例设置集群
在启动前修改配置,然后启动,就会给一个服务设置
```java spring: cloud: nacos: server-addr:localhost:8848 # nacos 服务端地址 discovery: cluster-name: HZ # 配置集群名称,也就是机房位置,例如:HZ,杭州 ``` ### 1.9.5 根据权重负载均衡 1. 为什么要有这个功能 有一些机子比较老,不承担很多的工作量; 在系统更新的时候,可以小范围更新,没有问题,再慢慢更新,不影响用户体验。 2. 如何更新 直接在nacos界面中修改,里面有一个改权重的地方。权重越高,访问频次越高,为0时不访问。
1.9.6 环境隔离namespace–配置功能
Nacos除了是注册中心外,还是一个配置中心。
- 这是什么功能,为什么需要再分组
在服务之上,还有一个分组,即为Group和Namespace,不是必须,其中Namespace下的分组目的是为了方便后续不同环境下的配置(例如开发环境dev,测试环境UAT,生产环境Prod)
- 如何进行配置
1)在nacos中创建新的命名空间,获取对应空间的id
2)在配置文件中添加命名空间的选取
cloud: nacos: server-addr:localhost:8848 discovery: cluster-name: SH # 上海 namespace:492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 # 命名空间,填ID
- 小结
1)每一个namespace的id是唯一的
2)服务设置namespoace是要填写的是id,而不是名称
3)不同namespace下的服务是互相不可见的。
1.9.7 nacos注册中心的细节
- 服务提供者:把拥有的服务信息传输给注册中心登记
- 注册中心对服务提供者服务的更新
1)对于临时实例:服务提供者中的服务每隔一个心跳时间(30s)向注册中心信息更新
2)对于非临时实例:注册中心每次主动向服务提供者询问 - 服务消费者获取有效的服务列表(存在服务列表缓存)
1)对于临时实例:消费者定时向注册中心拉去服务列表
2)对弈非临时实例:实例的新增和删除会主动推送给服务消费者。()
1.9.8 Nacos与Eureka的对比
- 相同点
1)度支持服务注册和服务拉取
2)都支持服务提供者心跳方式做健康监测 - 不同点(Nacos额外功能)
1)临时实例心跳不正常会被提出,而非临时实例不会被剔除
2)Nacos支持服务列表变更的消息推送模式,更新更加快捷
图片:
红色字体
用于复制