Nacos 服务发现数据模型

Nacos 在经过阿里内部多年生产经验后提炼出的数据模型,则是一种 服务-集群-实例 的三层模型,这样基本可以满足服务在所有场景下的数据存储和管理。如下图:

Nacos 服务发现数据模型

从上图可知,一个服务可以拥有多个集群,且每个集群又由多个实例(服务进程)组成。

Nacos 在服务发现中也使用了命名空间的概念,可以通过命名空间将各种环境的服务进行隔离,例如:隔离开发、测试和生产环境中的服务,使它们互不受影响。如下图:

Nacos 服务发现数据模型

点击【详情】链接按钮,查看第二个【user-service】服务的详细信息,如下图:

Nacos 服务发现数据模型

从上图可知,在 user-servie + myGroup 下面存在两个集群,分别为 myCluster 和 DEFAULT 集群。而 DEFAULT 集群中有两个服务实例,分别运行在 56031 和 56032 端口上面,均采用 dubbo 协议。

通过上面的例子,下面通过一张图描述 Nacos 中命名空间、分组、服务、集群和实例之间的关系:

Nacos 服务发现数据模型

那么,在配置文件中,怎样按照意愿将服务注册到 Nacos 指定的分组、服务和集群下面,配置如下:

spring:
 application:
   # 服务名称
   name: order-service
 main:
   allow-bean-definition-overriding: true
 cloud:
   nacos:
     discovery:
       server-addr: 127.0.0.1:8848
       # 服务的集群名称        
       cluster-name: DEFAULT
       # 服务所属命名空间
       namespace: 8719efd1-94a6-49f7-9846-2debd66f6c0f
       # 服务所属分组
       group: DEFAULT

更多的名词解释:

  • 命名空间(Namespace):用于进行租户粒度的配置隔离,命名空间不仅适用于 Nacos 的配置管理,同样适用于服务发现。命名空间的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。

  • 服务:提供给客户端的软件功能,通过预定义接口网络访问。

  • 服务名:服务提供的标识,通过该标识可以唯一确定其指代的服务。

  • 实例:提供一个或多个服务的具有可访问网络地址(IP:Port)的进程,启动一个服务,就产生了一个服务实例。

  • 元信息:Nacos 数据(如配置和服务)描述信息,如服务版本、权重、容灾策略、负载均衡策略、鉴权配置、各种自定义标签 (label),从作用范围来看,分为服务级别的元信息、集群的元信息及实例的元信息。

  • 集群:服务实例的集合,服务实例组成一个默认集群, 集群可以被进一步按需求划分,划分的单位可以是虚拟集群,相同集群下的实例才能相互感知。

说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号