javascript
Spring Cloud Alibaba - 05 Nacos 领域模型_NameSpac/Group/Cluster
文章目錄
- 新增命名空間
- 工程改造
- Namespace資源隔離
- Group
- Cluster
- 源碼
新增命名空間
新增dev 和 prod , 記住命名空間ID
工程改造
artisan-cloud-nacosclient-order
artisan-cloud-nacosclient-product
Namespace資源隔離
我們來搞個例子: dev環境下的artisan-order-center 調用prod環境下的artisan-product-center
【改造點1 】
OrderInfoV2Controller 中 通過 nacos server獲取 prod的 服務地址
/*** 以下僅為演示,實際開發中并不會這樣使用*/// 從nacos server獲取 product-info的地址List<ServiceInstance> instances = discoveryClient.getInstances("artisan-product-center");if (null == instances || instances.isEmpty()) {return "Prod微服務沒有對應的實例可用";}// 從對應的服務實例中獲取訪問地址ServiceInstance serviceInstance = instances.get(0);String uri = serviceInstance.getUri().toString();log.info("從nacos server中獲取的prod地址:", uri);// 發起遠程Http調用ResponseEntity<ProductInfo> responseEntity = restTemplate.getForEntity(uri + "/selectProductInfoById/" + orderInfo.getProductNo(), ProductInfo.class);ProductInfo productInfo = responseEntity.getBody();【改造點2 】
找到剛才的 命名空間ID 分別設置到 order 和 product
【測試】
NameSpace(默認的NameSpace是”public“ NameSpace可以進行資源隔離,比如dev環境下的NameSpace下的服務是調用不到prod的NameSpace下的微服務。 當然了,dev和prod最好不要共用一套nacos 注冊中心。
Group
不同的Group之間不允許調用
我們把namepsace都切換成一樣的, 設置不同的group 來測試下
【測試】
啟動服務,訪問
Cluster
同一個Namespace下 + 同一個Group下, 不同Cluster 內的服務,可以互相訪問
啟動服務,訪問
可以發現 同一個Namespace下 + 同一個Group下, 不同Cluster 內的服務,可以互相訪問。
但有個問題,如果全國多機房,雖然能通,但是網絡上可能會有延遲,盡量確保同一個Cluster內的優先訪問,這就需要編碼實現了。
源碼
https://github.com/yangshangwei/SpringCloudAlibabMaster
總結
以上是生活随笔為你收集整理的Spring Cloud Alibaba - 05 Nacos 领域模型_NameSpac/Group/Cluster的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Cloud Alibaba
- 下一篇: Spring Cloud Alibaba