Nacos入门之服务注册中心以及命名空间分组和DataID三者关系

文章目录

    • Nacos服务注册中心对比提升
      • 各种服务注册中心对比
      • CAP模型
      • CP原则:一致性 + 分区容错性原则
      • AP原则:可用性原则 + 分区容错性原则
      • Nacos支持CP和AP
      • Nacos何时选择切换模式
    • Nacos命名空间分组和DataID三者关系
      • 三者关系
      • 切换不同环境
        • DataID方案
        • Group方案
        • Namespace空间方案


Nacos服务注册中心对比提升

各种服务注册中心对比

服务注册与发现框架 CAP模型 控制台管理 社区活跃度
Eureka AP 支持 低(2.x版本闭源)
Zookeeper CP 不支持
Consul CP 支持
Nacos AP/CP 支持

CAP模型

计算机专家 埃里克·布鲁尔(Eric Brewer)于2000 年在ACM 分布式计算机原理专题讨论会(简称:PODC)中鹈鹕的分布式系统设计要靠路的三个核心要素:
1. 一致性(Consistency):同一时刻的同一请求的结果相同,所有的数据要求有强一致性(Strong Consistency)
2. 可用性(Availability):所有实例的读写请求在一定时间内可以得到正确的响应
3. 分区容错性(Partition tolerance):在网络异常(光缆断裂、设备故障、宕机)的情况下,系统仍能提供正常的服务
以上三个特点就是CAP原则(又称CAP原理),但是三个特性不可能同时慢煮,所有分布式系统设计要考虑的是在满足P(分区容错性)的前提下选择C(一致性)还是A(可用性),即:CP或AP

CP原则:一致性 + 分区容错性原则

cp原则属于强一致性原则,要求所有节点可以查询的数据随时都要保持一致(同步中的数据不可查询),即:若干个节点形成一个逻辑的共享区域,某一个节点更新的数据多会立即同步到其他数据节点之中,当数据同步完成后才能返回成功的结果,但是实际的运行工程中网络故障在所难免,如果此时若干个服务节点之间无法通信时就会出现错误,从而牺牲了以可用性原则(A),例如关系型数据库中的事务。

AP原则:可用性原则 + 分区容错性原则

AP原则属于弱一致性原则,在集群中只要有存货的节点那么所发送来的所有请求多可以得到正确的响应,在竞选数据同步处理操作中即使某些节点没有成功的实现数据同步也返回成功,这样的牺牲一致性原则(C原则)。

使用场景: 对于数据的同步一定会发出指令,但是最终的节点是否真的实现了同步,并不保证,可是却可以及时的得到数据更新成功的响应,可以应用在网络环境不是很好的场景中。

Nacos支持CP和AP

	nacos无缝支持一些主流的开源生态,同时再阿里进行Nacos设计的时候重复的考虑了市场的运作(市面上大多都是以单一的实现形式为主,例如:zookeeper使用的是CP、而Eureka 采用的是AP),在Nacos中提供了两种模式的动态切换。

Nacos入门之服务注册中心以及命名空间分组和DataID三者关系_第1张图片

Nacos何时选择切换模式

  1. 一般来说,如果不需要储存服务界别的信息且服务实例通过nacos-client注册,并能够保持心跳上报,那么就可以选择AP模式。如果Spring Cloud 和Dubbo,都适用于AP模型,AP模型为了服务的可用性减弱了一致性,因此AP模型下只支持注册临时实例。
  2. 如果需要在服务级别编辑或者储存配置信息,那么CP是必须的,k8s服务和DNS服务则是用于CP模式。CP模式下则支持注册持久化实例,此时则是以Raft协议为集群运行模式,该模式下注册实例之前必须先注册服务,如果服务不存在,则会返回错误。
  3. 切换命令(默认是AP)

curl -X PUT ‘$NACOS_SERVER:8848/nacos/vi/ns/operator/switches?entry=serverMode&value=CP’

注意⚠️:临时和持久的区别主要是在健康检查失败后的表现,持久化实例健康检查失败后会被标记成不健康,而临时实例会直接从列表中被删除。

Nacos命名空间分组和DataID三者关系

命名空间(Namespace)
用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的Group 和 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。

配置分组(Group)
Nacos中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如Buy或Trade) 对配置进行分组,从而区分Data ID 相同的配置集。当您在Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组默认采用DEFAULT_GROUP。配置分组的常见场景:不同的应用或组建使用了相同的配置类型,如database_url 配置和MQ_topic配置。

配置集 ID(Data ID)
Nacos中的莫哥配置集的ID。 配置集ID是组织划分配置的维度之一。Data ID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。Data ID 通常采用类java包(如com.taobao.tc.refund.level)的命名规则保证全局唯一性。此命名规则非强制。
配置集:一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。

三者关系

这三者关系类似于Java里面的package 名和类名,最外层的Namespace 是可以用于区分部署环境的,Group和DataID逻辑上区分两个目标对象。

Nacos入门之服务注册中心以及命名空间分组和DataID三者关系_第2张图片
默认情况
Namespace = public , Griup=DEFAULT_GROUP,默认Cluster是DEFAULT

具体情况
Nacos默认的命名空间是public ,我面就可以利用Namespace 来实现隔离,比如我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个Namespace,不同的Namespace 之间是隔离的。

Group本身就是分组的意思,它可以把不同的微服务划分到同一个分组里面去。

剩下的就是具体微服务,一个Service可以包含多个Cluster,Nacos默认Cluster是DEFAULT,Cluster是对指定微服务的一个虚拟划分。比如说,将一个Service部署在北京和杭州的机房中,北京机房的Service就可以起名为(BJ),杭州机房中的Service就可以起名为(HZ),这样就可以尽量让同一个机房的微服务互相调用,提升性能。

切换不同环境

DataID方案

  1. 指定spring.profile.active和配置文件的DataID来使不同环境下读取不同的配置,配置规则:默认空间+新建dev和test 两个DataID:
    1.新建dev配置DataID
    2.新建test配置DataID
    Nacos入门之服务注册中心以及命名空间分组和DataID三者关系_第3张图片
    修改application.yml
    Nacos入门之服务注册中心以及命名空间分组和DataID三者关系_第4张图片
    然后重启应用,测试访问:
    Nacos入门之服务注册中心以及命名空间分组和DataID三者关系_第5张图片

Group方案

Group分组默认是:DEFAULT_GROUP,所以现在我们就需要分出两组,一组为“dev开发组”,另一组是“test测试组”
1.新建Group
Nacos入门之服务注册中心以及命名空间分组和DataID三者关系_第6张图片
2.新建TEST 测试分组

Nacos入门之服务注册中心以及命名空间分组和DataID三者关系_第7张图片

bootstrap.yml文件:

server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # Nacos 服务注册中心地址
      config:
        server-addr: localhost:8848 # Nacos 作为配置中心地址
        file-extension: yaml # 指定yaml格式的配置
        group: TEST_GROUP #指定分组

#${prefilx}-${spring.application.name}.${file-extension}
#${spring.application.name}-${spring.profiles.active}.${file-extension}
#nacos-config-client-dev.yaml
#nacos-config-client-test.yaml

application.yml文件内容

spring:
  profiles:
    #active: dev # 表示开发环境
    #active: prd # 表示生产环境
    #active: test # 表示测试环境
    active: info #

访问进行验证:
Nacos入门之服务注册中心以及命名空间分组和DataID三者关系_第8张图片

Namespace空间方案

Namespace(命名空间)方案,默认此方案为public,此方案不能删除,我们现在来新建两个命名方案
Nacos入门之服务注册中心以及命名空间分组和DataID三者关系_第9张图片
Nacos入门之服务注册中心以及命名空间分组和DataID三者关系_第10张图片

Nacos入门之服务注册中心以及命名空间分组和DataID三者关系_第11张图片

1.服务管理-服务列表页面查看

此时我们就可以切花对应的命名空间,然后通过GROUP和DataID来进行切换,如果想切换命名空间,需要通过命名空间ID来进行切换。
Nacos入门之服务注册中心以及命名空间分组和DataID三者关系_第12张图片
2.按照域名配置(Namespace+Group+DataId)编写
先通过namespace 命名空间ID来确认使用的命名空间
Nacos入门之服务注册中心以及命名空间分组和DataID三者关系_第13张图片

bootstrap.yml文件配置:

server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # Nacos 服务注册中心地址
      config:
        server-addr: localhost:8848 # Nacos 作为配置中心地址
        file-extension: yaml # 指定yaml格式的配置
        group: DEV_GROUP #指定分组
        namespace: 31aa0a73-6bef-4911-8ae4-7e6c0272e6ad # 命名空间

#${prefilx}-${spring.application.name}.${file-extension}
#${spring.application.name}-${spring.profiles.active}.${file-extension}
#nacos-config-client-dev.yaml
#nacos-config-client-test.yaml

3.测试:访问:http://localhost:3377/config/info 来进行测试

你可能感兴趣的:(nacos,nginx,mysql,数据库)