欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 前端技术 > javascript >内容正文

javascript

Spring Cloud Alibaba - 05 Nacos 领域模型_NameSpac/Group/Cluster

发布时间:2025/3/21 javascript 56 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。