Nacos 数据模型 Key 由三元组唯一确定, Namespace默认是空串,公共命名空间(public),分组默认是 DEFAULT_GROUP。

以上都是nacos官网上面的图片及描述,综合一下应该是这个样子

可以在nacos控制台看到与之对应的界面

我们来看下这些东西都是用来干嘛的,

NameSpace可以用来进行资源的隔离,比如我们dev环境的服务和test环境的服务都往同一个nacos服务上面注册,dev环境是调用不到test环境的服务的。

我们在nacos控制台新建两个namespace,test和dev会生成两个ID

设置我们订单服务和库存服务的namespace,一个为dev一个为test

再来查看nacos控制台的服务列表会看见两个服务并不在public的命名空间下了,而是去到了test和dev下面,调用我们创建订单的接口,会发现在订单服务里面无法去扣减库存了。因为这两个服务现在已经不在同一个namespace下面了,无法进行调用了。

Group顾名思义就是分组了,比如订单和支付服务是支付组,库存物流属于物流组,不同的分组之前的服务也是不能进行调用的。将上面的服务设置成同样的namespace之后,发现服务可以调用了。但是我们有设置成不同的分组,发现服务又不能调用了。

两个扩展点:spring.cloud.nacos.discovery.cluster-name参数

cluster-name,可以设置上之后通过自己的负载均衡算法可以实现优先同集群调用,减少网络开销,比如在成都这边都有部署订单服务和库存服务,那么订单调库存的时候优先调用成都机房的库存服务(spring.cloud.nacos.discovery.cluster-name=CD)。

spring.cloud.nacos.discovery.metadata参数

元数据参数可以配置一些额外的信息,比如设置一个版本进去,通过自己的负载均衡算法实现同版本之间的服务调用。比如线上有10个订单服务和10个库存服务都是V1版本,现在改部分改动,都上了2个V2版本,通过实现我们自己的负载算法,使得V2版本的订单只能调用V2库存服务。

以上的数据模型详见Nacos源码:com.alibaba.nacos.naming.core.ServiceManager类

这个双层Map的key分别是namespace和group::serviceName,

com.alibaba.nacos.naming.core.Service中可以看到有一个Map<String, Cluster>,

com.alibaba.nacos.naming.core.Cluster中才是具体的服务实例com.alibaba.nacos.naming.core.Instance的Set集合,一个是持久化实例,一个非持久化实例。

最新文章

  1. Android网格视图(GridView)
  2. ZeroClipboard 复制到剪贴板
  3. hdu.1104.Remainder(mod &amp;&amp; ‘%’ 的区别 &amp;&amp; 数论(k*m))
  4. 常用的Web服务器
  5. 从ZOJ2114(Transportation Network)到Link-cut-tree(LCT)
  6. AttributeError at /home/home/ Exception Type: AttributeError at /home/home/
  7. SQL Server 备份的 8 种方法。
  8. linux之grep实例讲解
  9. Linux例行工作crontab
  10. C# 课堂总结1-二进制转换
  11. a标签中使用img后的高度多了几个像素
  12. Baidu图表插件--Eharts使用(柱状图)
  13. 【开源项目】智能电视及电视盒子的控制应用TVRemoteIME的接口说明
  14. 网络协议中HTTP,TCP,UDP,Socket,WebSocket的优缺点/区别
  15. C# Note15:设置Window图标的正确方式
  16. C#常用字符串函数
  17. 对String中固定符号隔开的每项做无序不重复监测
  18. day37 异步回调和协程
  19. 使用ajax无法跨源问题总结
  20. Hdu1083 Courses

热门文章

  1. 1050 螺旋矩阵 (25 分)C语言
  2. Netty--【详解】
  3. 流程控制-物流费用计算(嵌套if)
  4. lucene&amp;tantivy对比
  5. 论Java中的抽象类与接口
  6. python中super()
  7. kmp-最小子串回文次数
  8. net 自带cache
  9. Git高级之配置多个SSH key
  10. Spring Framework 源码编译导入