Spring Cloud Alibaba - 05 Nacos 领域模型_NameSpac/Group/Cluster
Posted 小小工匠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud Alibaba - 05 Nacos 领域模型_NameSpac/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介绍
Spring Cloud Alibaba系列教程——Spring Cloud Alibaba开篇
Spring Cloud Alibaba - 11 Ribbon 自定义负载均衡策略(同集群优先权重负载均衡算法)