目录
Nacos提供了namespace来实现环境隔离功能。
- nacos中可以有多个namespace
- namespace下可以有group、service等
- 不同namespace之间相互隔离,例如不同namespace的服务互相不可见
1.创建新的NameSpace
根据CMD的Nacos提示的网址,登录进去Nacos管理页面
填写相应NameSpace信息创建新的Namespace,NameSpaceID不填写则自动生成UUID.
2.给XXX-service配置NameSpace
这里我举得例子有点不太好,但是大概原理都差不多,因为我之前创建过一个Dev的NameSpace,所以我这节内容就是以Dev的NameSpace来讲述了.
我的dev的NameSpaceID是ec8bc8aa-e8c4-4b02-aa4d-daa05797ae8e
所以我的直接再我的UserService里面配置namespace属性
3.Nacos管理页面管理NameSpace
我的Order Service没有配置Namespace,默认分配到名字为public的namespace中
我的User Service配置了dev的NameSpace,因此在dev里面能看见User Service
因此本文通过配置不同的Namespace实现了服务之间的隔离!属于不同Namespace的服务互相是无法访问的!属于同一个Namespace的服务可以互相访问
4.Eureka和Nacos区别
Nacos的服务实例分为两种l类型:
-
临时实例:如果实例宕机超过一定时间,会从服务列表剔除,默认的类型。
-
非临时实例:如果实例宕机,不会从服务列表剔除,也可以叫永久实例。
配置一个服务实例为永久实例:
yml
spring:
cloud:
nacos:
discovery:
ephemeral: false # 设置为非临时实例
Nacos和Eureka整体结构类似,服务注册、服务拉取、心跳等待,但是也存在一些差异:
-
Nacos与eureka的共同点
- 都支持服务注册和服务拉取
- 都支持服务提供者心跳方式做健康检测
-
Nacos与Eureka的区别
- Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
- 临时实例心跳不正常会被剔除,非临时实例则不会被剔除
- Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
- Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式