Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离
1.在Nacos控制台可以创建namespace,用来隔离不同环境
2.然后填写一个新的命名空间信息:
3.保存后会在控制台看到这个命名空间的id:
4.修改order-service的application.yml,添加namespace:
spring:
application:
name: orderservice
cloud:
nacos:
server-addr: tajia-nacos:8848 # nacos服务地址
discovery:
cluster-name: SH
namespace: 3ab6057e-25db-42b8-9f50-12a5a8601b0e # dev环境
5.重启order-service后,再来查看控制台
6.此时访问order-service,因为namespace不同,会导致找不到userservice,控制台会报错:
09-30 20:36:14:000 ERROR 14176 --- [nio-8088-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client: userservice] with root cause
7.Nacos环境隔离总结
a.每个namespace都有唯一id
b.服务设置namespace时要写id而不是名称
c.不同namespace下的服务互相不可见