Nacos简介和原理

这篇具有很好参考价值的文章主要介绍了Nacos简介和原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一,Nacos简介

1.1 Nacos是什么

Nacos提供了统一配置管理、服务发现与注册。其中服务注册和发现的功能,相当于dubbo里面使用到 的zookeeper、或者spring cloud里面应用到的consoul以及eureka

1.2 Nacos特性

服务发现和服务健康检测

Nacos提供了基于RPC的服务发现,服务提供者可以将自身的服务通过原生API或者openApi来实现服务 的注册,服务消费者可以使用API或者Http来查找和发现服务

同时,Nacos提供了对服务的实时监控检查,当发现服务不可用时,可以实现对服务的动态下线从而阻止服务消费者向不健康的服务发送请求。

配置管理

传统的配置管理,是基于项目中的配置文件来实现,当出现配置文件变更时需要重新部署,而动态配置 中心可以将配置进行统一的管理,是的配置变得更加灵活以及高效。

动态配置中心可以实现路由规则的动态配置、限流规则的动态配置、动态数据源、开关、动态UI等场景

1.3 Nacos数据模型 

命名空间(Namespace) 

可用于进行不同环境的配置隔离。

例如:

  1. 可以隔离开发环境——测试环境和生产环境,因为它们的配置可能各不相同;
  2. 可以隔离不同的用户——不同的开发人员使用同一个nacos管理各自的配置,可通过namespace隔离。 不同的命名空间下可以存在相同名称的配置分组(Group) 或配置集。

配置分组(Group) 

配置分组是对配置集进行分组。 通过一个有意义的字符串(如 Buy 或 Trade )来表示。 不同的配置分组下可以有相同的当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 配置分组的常见场景——可用于区分不同的项目或应用

配置集(Data ID)。 

配置集(Data ID) 在系统中,一个配置文件通常就是一个配置集。 一个配置集可以包含了系统的各种配置信息。

1.4 Nacos官网

Nacos支持三种部署模式

二,Nacos部署

Nacos支持三种部署模式

单机模式 - 用于测试和单机试用。

集群模式 - 用于生产环境,确保高可用。

多集群模式 - 用于多数据中心场景。

2.1 单机模式支持mysql

1.安装数据库,版本要求:5.6.5+ 
2.初始化mysql数据库,数据库初始化文件:mysql-schema.sql 
3.修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。 spring.datasource.platform=mysql 
db.num=1 
db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=nacos_devtest db.password=youdontknow ​ 
4.启动nacos sh startup.sh -m standalone 
5.访问nacos localhost:8848/nacos

 nacos,SpringCloud,java,spring cloud

 

2.2集群模式

2.2.1配置集群配置文件

在nacos的解压目录nacos/的conf目录下,有配置文件cluster.conf,请每行配置成ip:port。(请配置3个或3个以上节点)

# ip:port
200.8.9.16:8848
200.8.9.17:8848
200.8.9.18:8848

2.2.2确定数据源

使用内置数据源

无需进行任何配置

Nacos默认自带的是嵌入式数据库derby

使用外置数据源

生产使用建议至少主备模式,或者采用高可用数据库。

初始化 MySQL 数据库

sql语句源文件

application.properties 配置

application.properties配置文件

2.2.3启动服务器

单机模式

sh startup.sh -m standalone

集群模式

使用内置数据源

sh startup.sh -p embedded

使用外置数据源

sh startup.sh

三,服务注册&发现和配置管理

OPen API指南: Open API 指南

服务注册

curl -X PUT 'http://101.43.xx.xx:8848/nacos/v1/ns/instance?serviceName=ITPortal&ip=20.18.7.10&port=8080'
​
curl -X PUT 'http://101.43.xx.xx:8848/nacos/v1/ns/instance?serviceName=ITPortal&ip=20.18.7.11&port=8080'

服务发现

curl -X GET 'http://101.43.xx.xx:8848/nacos/v1/ns/instance/list?serviceName=ITPortal'

发布配置

curl -X POST "http://101.43.xx.xx:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=helloWorld"

获取配置

curl -X GET "http://101.43.xx.xx:884/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test"

四,SpringCloud集成Nacos

注册中心

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

使用 @EnableDiscoveryClient 注解开启服务注册与发现功能

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@EnableDiscoveryClient
@EnableFeignClients
@EnableRedisHttpSession
public class GulimallSearchApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallSearchApplication.class, args);
    }

}

(1)注册服务nacos-payment-provider,存在9001,9002两个实例

server:
  port: 9001
spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: 101.43.xx.xx:8848 #配置Nacos地址
server:
  port: 9002
spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: 101.43.xx.xx:8848 #配置Nacos地址

nacos,SpringCloud,java,spring cloud

 这样Nacos上就注册了一个服务nacos-payment-provider,有2个实例分别是9001和9002

(2)注册一个客户端

 

server:
  port: 83

spring:
  application:
    name: nacos-order-consumer
  cloud:
    nacos:
      discovery:
        server-addr: 101.43.xx.xx:8848
        metadata:
          preserved.heart.beat.interval: 1000
          preserved.heart.beat.timeout: 1000
          preserved.ip.delete.timeout: 1000
ribbon:
  ServerListRefreshInterval: 1000

#消费者将要去访问的微服务名称(成功注册进nacos的微服务提供者),在这配置了访问的服务,业务类就不用在定义常量了
service-url:
  nacos-user-service: http://nacos-payment-provider

 

nacos,SpringCloud,java,spring cloud

 

测试接口

@RestController
public class OrderNacosController {
    /*
    因为在yml中配置了service-url.nacos-user-service,
    这里不需要再定义要访问微服务名常量,而是通过boot直接读出来
     */
    @Value("${service-url.nacos-user-service}")
    private String serverURL;

    @Resource
    private RestTemplate restTemplate;

    @GetMapping("/consumer/payment/nacos/{id}")
    public String paymentInfo(@PathVariable("id") Long id){
        return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
    }
}

 

访问接口

http://localhost:83/consumer/payment/nacos/1 可以看出轮询调用服务9001和9002(默认使用的ribbon做为负载工具)

下线9001再次访问上述接口就会只有9002提供服务

nacos,SpringCloud,java,spring cloud 

配置中心

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
server:
  port: 3377

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      //注册
      discovery:
        server-addr: 101.43.xx.xx:8848 #Nacos服务注册中心地址
      //配置
      config:
        server-addr: 101.43.xx.xx:8848 #Nacos作为配置中心地址
        file-extension: yaml  #指定yaml格式的配置
       

(1)测试接口

@RestController
@RefreshScope   //SpringCloud原生注解 支持Nacos的动态刷新功能
public class ConfigClientController {

    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config/info")
    public String getConfigInfo(){
        return configInfo;
    }
}

(2)Nacos中增加配置文件

 命名格式

nacos,SpringCloud,java,spring cloud

nacos,SpringCloud,java,spring cloud 

nacos,SpringCloud,java,spring cloud

 (3)访问测试

http://localhost:3377/config/info输出结果:NACOS CONFIG DEV

再次修改配置内容

 nacos,SpringCloud,java,spring cloud

http://localhost:3377/config/info输出结果:NACOS CONFIG DEV222

五,Nacos原理

5,1注册中心原理

心跳机制

(1)心跳的发送间隔

(2)心跳的超时时间 。设置一个心跳超时的阈值 。记录针对于某一个服务实例的最后一次更新的时间 。当前时间-当前实例最后一次更新的时间>心跳超时的阈值

nacos,SpringCloud,java,spring cloud

5.2配置中心原理

nacos,SpringCloud,java,spring cloud

客户端把本地缓存的配置MD5处理后和服务端配置的MD5编码比较,如果不一样代码配置改动了,否则配置未改动文章来源地址https://www.toymoban.com/news/detail-767249.html

到了这里,关于Nacos简介和原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Cloud Nacos详解

    Spring Cloud Nacos 是一个由阿里巴巴集团开发的开源分布式系统服务发现、配置管理和服务管理的平台。Nacos 支持多种服务发现方式,包括 DNS 方式、HTTP 和 RPC 方式,同时提供了灵活的配置管理功能,支持配置的推送和拉取。Nacos 可以帮助开发者轻松地构建和管理云原生应用,提

    2024年02月11日
    浏览(47)
  • Spring Cloud整合nacos

    Spring Cloud 是一个分布式微服务框架,提供了一系列用于构建分布式系统的工具和组件。Nacos 是阿里巴巴开源的一个注册中心和配置中心,也提供调用链追踪、动态配置、服务发现、流量管理等功能。 在使用 Spring Cloud 构建微服务应用时,我们需要整合 Nacos,以下是整合步骤:

    2024年02月10日
    浏览(37)
  • 【Spring Cloud】Nacos 配置管理详解

    1.1 为何需要配置管理 在复杂的软件开发与部署过程中,配置管理起到了至关重要的作用。以下是配置管理所带来的主要优势: 解耦配置与代码 :通过将配置从代码中分离,可以在不更改代码的情况下,修改应用的行为。这对于多环境部署(如开发、测试、生产等)来说尤为

    2024年02月10日
    浏览(41)
  • Spring Cloud集成Nacos实现本地配置优先 | Spring Cloud 9

    Nacos Config Starter 实现了 org.springframework.cloud.bootstrap.config.PropertySourceLocator 接口,并将优先级设置为最高。 在 Spring Cloud 应用启动阶段,会主动从 Nacos Server 端获取对应的数据,并将获取到的数据转换成 PropertySource 且注入到 Environment 的 PropertySources 属性中,所以使用 @Value 注解

    2024年02月15日
    浏览(64)
  • Spring Cloud集成Nacos实现服务配置中心 | Spring Cloud 7

    先我们来看一下,微服务架构下关于配置文件的一些问题: 配置文件相对分散。在一个微服务架构下,配置文件会随着微服务的增多变的越来越多,而且分散在各个微服务中,不好统一配置和管理。 配置文件无法区分环境,开发环境、测试环境、线上环境。微服务项目可能会

    2024年02月14日
    浏览(55)
  • 微服务 – Spring Cloud – Nacos 配置中心

    Data ID : nacos-config-client-dev.yaml Group: DEV-CLOUD2023

    2024年02月11日
    浏览(63)
  • Spring Cloud Gateway + Nacos 灰度发布

    本文将会使用 SpringCloud Gateway 网关组件配合 Nacos 实现 灰度发布(金丝雀发布) 创建子模块 服务提供者  provider ,网关模块  gateway 父项目 pom.xml 配置 服务提供者 provider 这里我们计划引入  nacos , 所以先创建一个 nacos 配置文件  dataId  为  provider.properties , 这里用默认的命名

    2024年02月03日
    浏览(35)
  • Spring Cloud Alibaba nacos配置中心

    第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Spring Cloud Netflix 之 Hystrix 第九章 代码管理gitlab 使用 第十章 Spr

    2024年02月08日
    浏览(57)
  • Spring Cloud集成Nacos作为配置中心

    Nacos的安装与配置 Spring Cloud集成Nacos作为注册中心 LoadBalacer集成Nacos实现负载均衡 常见的负载均衡策略分析 Spring Cloud集成Dubbo实现RPC调用 前面我们已经介绍了 Nacos 的安装与配置, Spring Cloud 集成 Nacos 作为服务的注册中心,集成 Nacos 实现服务的负载均衡和一些常见的负载均衡

    2024年02月15日
    浏览(55)
  • 九、Nacos源码系列:Nacos配置中心原理(一)- SpringCloud应用启动时拉取配置

    熟悉Spring的小伙伴都知道,Spring 提供了强大的扩展机制。其中包括 ** ApplicationContextInitializer **,该扩展是在上下文准备阶段(prepareContext), 容器刷新之前做一些初始化工作 ,比如我们常用的配置中心 client 基本都是继承该初始化器,在容器刷新前将配置从远程拉到本地,然

    2024年02月19日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包