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下的服務互相不可見