Nacos数据模型
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集合,一个是持久化实例,一个非持久化实例。

Nacos数据模型的更多相关文章
- Nacos 知识点
Nacos 名字的由来(取红色的英文字符): Dynamic Naming and Configuration Service Nacos 是 Spring Cloud Alibaba 的一个组件,详 ...
- Nacos快速开始
Nacos是一个服务发现.配置管理和服务管理的组件. 说到服务注册与发现,我想到Eureka.Zookeeper 说到服务治理,我想到Dubbo 说到配置管理,我想到Apollo 作为后起之秀的Nac ...
- 基于nacos注册中心的ribbon定制规则
前面说到基于nacos的注册发现有可以扩展实现我们自己的负载均衡算法(Nacos数据模型),来实现同集群调用,是基于spring.cloud.nacos.discovery.cluster-name参 ...
- SpringCloudAlibaba注册中心与配置中心之利器Nacos实战与源码分析(上)
不断踩坑并解决问题是每个程序员进阶到资深的必要经历并以此获得满足感,而不断阅读开源项目源码和总结思想是每个架构师成长最佳途径.本篇拉开SpringCloud Alibaba最新版本实战和原理序幕,以工 ...
- SpringCloud之nacos
以下是官网文档中个人感兴趣的部分整理,官方完整文档链接如下: Nacos 官方文档 1.nacos是什么? 1.1 概念:快速实现动态服务发现.服务配置.服务元数据及流量管理. 简单来说就是发现.配置 ...
- SpringCloud Alibaba01-Nacos
全家桶介绍: https://spring-cloud-alibaba-group.github.io/github-pages/greenwich/spring-cloud-alibaba.html ...
- Spring Cloud微服务学习笔记
Spring Cloud微服务学习笔记 SOA->Dubbo 微服务架构->Spring Cloud提供了一个一站式的微服务解决方案 第一部分 微服务架构 1 互联网应用架构发展 那些迫使 ...
- Nacos
欢迎来到 Nacos 的世界! Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. Nacos 帮助您 ...
- Nacos 发布 1.0.0 GA 版本,可大规模投入到生产环境
经过 3 个 RC 版本的社区体验之后,Nacos 正式发布 1.0.0 GA 版本,在架构.功能和 API 设计上进行了全方位的重构和升级. 1.0.0 版本的发布标志着 Nacos 已经可以大规模 ...
随机推荐
- 洛谷P1036 选数 题解 简单搜索/简单状态压缩枚举
题目链接:https://www.luogu.com.cn/problem/P1036 题目描述 已知 \(n\) 个整数 \(x_1,x_2,-,x_n\) ,以及 \(1\) 个整数 \(k(k& ...
- NSOperationQueue队列依赖相关思考
添加依赖后,队列中网络请求任务有依赖关系时,任务结束判定以数据返回为准还是以发起请求为准? waitUntilFinished方法容易误解. 依赖关系 // // ViewController.m / ...
- Go中的Package和Module分析
Package 所谓package(包)其实就是代码的一种组织管理方式,代码多了就需要放入文件,文件多了就需要归类放入文件夹,就好比我们在给电脑装软件时会进行归类安装,其实也是有意无意对电脑软件安装的 ...
- (01)大话设计模式-简单工厂-java实现
1.运算接口 public interface Operation { public double getResult(double NumberA , double NumberB); } 2.加减 ...
- Java面向对象之异常详解
目录 Java面向对象之异常[一] Java面向对象之异常[二] 捕获异常的规则 访问异常信息 异常对方法重写的影响 finally详解 Java面向对象之异常[一] Java面向对象之异常[二] 往 ...
- AESEncryption Aes 加密
/******************************************************* * * 作者:朱皖苏 * 创建日期:20180521 * 说明:此文件只包含一个类,具 ...
- OpenGL ES for Android
经过半年的准备OpenGL ES for Android系列文章终于要和大家见面了,在这里定一个小目标-先吸引1000个粉丝,万一实现了呢.写关于OpenGL ES的文章开始是有一些犹豫的,因为Ope ...
- ForkJoin统计文件夹中包含关键词的数量
2018-06-09总结: ForkJoin确实可以很快速的去解析文件并统计关键词的数量,但是如果文件过大就会出现内存溢出,是否可以通过虚拟内存方式解决内存溢出的问题呢? package com.ox ...
- [洛谷P4617] [COCI2017-2018#5] Planinarenje
Description \(Mirko\) 和 \(Slavko\) 喜欢一起去远足. \(Mirko\) 偏好攀登山峰,而 \(Slavko\) 偏爱山谷.因此每次他们登上一座山峰后,\(Slavk ...
- Ubuntu16手动安装OpenStack——glance篇--转
全文转自https://www.voidking.com/dev-ubuntu16-manual-openstack-glance/ 目标 紧接着<Ubuntu16手动安装OpenStack—— ...