一、Nacos环境隔离
Nacos提供了namespace来实现环境隔离功能。
nacos中可以有多个namespace。namespace下可以有group、service等。不同namespace之间相互隔离,例如不同namespace的服务互相不可见。
使用Nacos Namespace 环境隔离 步骤:
1.在Nacos控制台可以创建namespace,用来隔离不同环境
2.然后填写一个新的命名空间信息:
3.保存后会在控制台看到这个命名空间的id: 默认为public
4.修改order-service的application.yml,添加namespace:
spring:
cloud:
nacos:
server-addr: localhost:8848
discovery:
cluster-name: HZ
namespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 # 命名空间,填ID
5.重启order-service后,再来查看控制台:
6.此时访问order-service,因为namespace不同,会导致找不到userservice,控制台会报错:
二、Nacos与Eureka的区别
Nacos与eureka的共同点:
都支持服务注册和服务拉取
都支持服务提供者心跳方式做健康检测
Nacos与Eureka的区别:
Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
临时实例心跳不正常会被剔除,非临时实例则不会被剔除
Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式
Nacos的服务实例分为两种l类型:
-临时实例:如果实例宕机超过一定时间,会从服务列表剔除,默认的类型。
-非临时实例:如果实例宕机,不会从服务列表剔除,也可以叫永久实例。
服务注册到Nacos时,可以选择注册为临时或非临时实例,临时实例宕机时,会从nacos的服务列表中剔除,而非临时实例则不会 。通过下面的配置来设置:
spring:
cloud:
nacos:
discovery:
ephemeral: false # 设置为非临时实例