Nacos——注册中心
阅读原文时间:2023年07月08日阅读:1

目录

1.什么是nacos

2.使用——依赖+配置文件

3.Nacos服务分级存储模型

4.服务跨集群调用问题

5.服务集群属性--配置服务集群

6. Nacos-NacosRule负载均衡

7.根据权重进行负载均衡

8.环境隔离——namespace

9.比较Nacos和Eureka


Nacos 英文全称Dynamic Naming and Configuration Service,Na为naming/nameServer即注册中心,co为configuration即注册中心,service是指该注册/配置中心都是以服务为核心,是阿里巴巴的产品 相较于Eureka也是SpringCloud中的一个组件 但是比Eureka功能更加丰富 ,国内更受欢迎。

# 引用nacos依赖
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

#配置文件
spring:
    cloud:
        nacos:
            server-addr: localhost:8848   #nacos服务器地址+端口号 本例以本地启动为例 

原则:服务调用极可能选择本地集群的服务,跨集群调用延迟较高,本地集群不可访问时,再去访问其他集群

1.修改配置文件

spring :
    cloud :
        nacos :
            server-addr : localhost : 8848 #nacos 服务端地址
            discovery :
                cluster-name : BJ #配置集群名称   也就是机房位置 例如 BJ 北京

上面说了将同集群的服务设置在同一集群下是为了进行内网间调用 但是默认情况下进行服务调用的时候并不会默认调用同一集群下的服务。

如何设置:

在配置文件中设置IRule为NacosRule,这个规则会优先寻找自己同集群的服务:

#服务名
service :
    ribbon :
        NFLoadBalanceRuleClassName: com.albaba.cloud.nacos.ribbon.NacosRule
                    # NFLoadBalanceRuleClassName类名  将这个类设置成NacosRule  优先选择本集群  当本集群并没有服务时  会自动进行跨集群访问 并在日志中发出警告

解决的问题:当服务器设备性能有差异,部分实例所在的机器性能较好,另一些较差,我们希望性能好的机器承担更多的用户请求————————权重越大 访问频率越高

Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离

如何配置环境隔离

命名空间——>新建命名空间——>添加命名空间名、描述——>在配置文件中配置(namespace(填写的是命名空间ID))

cloud:
    nacos:
        server-addr: localhost:8848
        discovery:
            cluster-name: BJ #北京
            namespace: 5e585f47-4dae-45c6-8626-fc7b699d6046  # 命名空间 ID

1. Nacos与 eureka的共同点

①都支持服务注册和服务拉取

②都支持服务提供者心跳方式做健康检测

2. Nacos与 Eureka的区别

① Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式

②临时实例心跳不正常会被剔除,非临时实例则不会被剔除

③ Nacos支持服务列表变更的消息推送模式,服务列表更新更及时

④ Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式; Eureka采用AP方式

1 代表为nacos中与Eureka中不同的地方

如何设置临时实例与非临时实例 ephemeral 默认为true 临时实例

spring:
    cloud:
        nacos:
            discovery:
                ephemeral: false #设置为非临时实例     当服务挂掉并不会从列表中剔除服务