您的位置:

Nacos Github详解

一、Nacos 入门与概述

Nacos 是一个基于 Java 实现并用于发现、配置和管理微服务的开源平台。Nacos 支持几乎所有主流类型的服务,例如 K8s、Spring Cloud、Dubbo、gRPC 和 Mesos。Nacos 具有高伸缩性和高可用性,并提供一组易于用于扩展和开发的简单 API。以下是一些 Nacos 目前支持的功能特点:

1. 服务发现和健康检查;

2. 动态配置服务;

3. 动态 DNS 服务;

4. 服务和配置的管理平台。

Nacos 可以用作这些目的的独立组件,或与服务相关的其他组件(如 Spring Cloud、Dubbo、gRPC)一起使用。

二、Nacos 动态配置服务

Nacos 作为为应用程序提供动态配置服务的一种工具,并且 Nacos 提供了全方位的修改配置、刷新配置等功能。以 Spring Cloud 为例,在 Spring Cloud 项目的 bootstrap.properties(或者是 bootstrap.yml/yaml 等,根据实际使用情况设置)中将 Nacos 的地址、命名空间、应用和配置文件信息配置好,就可以实现 Nacos 开箱即用的功能。

1. @RefreshScope 注解:通过该注解标注的 Bean 会被 Actuator 暴露出来,从而实现在不重启应用的情况下变更配置;

2. @Value 注解:获取 Nacos 配置中心中对应的配置项并将其注入到应用程序中,在应用程序中对这个配置项的改变也会实时同步到配置中心中;

3. curl 命令与 Nacos REST API:可以通过 curl 命令或者 Nacos 提供的 REST API 来实现动态操作。

以下是一个使用 Nacos 动态配置服务的示例:

@RestController
public class TestController {

    @Value("${test.config.param1}")
    private String configParam1;

    @GetMapping("/test/config")
    public String getConfigParam(){
        return configParam1;
    }
}

三、Nacos 服务注册与发现

Nacos 服务注册与发现 是一种基于服务-注册-发现体系结构的组件,可以与 Framework 集成,实现自动完成服务注册与发现的功能。可以通过 HTTP、DNS 和 RPC 等多种协议进行服务的注册和发现。

Nacos 支持的服务注册与发现协议:

1. Apache Dubbo RPC;

2. Spring Cloud REST(尤其是 Spring Cloud Alibaba)、Feign、Ribbon;

3. motan RPC。

Nacos 提供一个易于使用的控制台,通过控制台可以轻松进行服务注册、发现、治理和管理工作。控制台的使用者不仅可以使用基于发布订阅、心跳检测、权重和嵌套命名空间等自然可扩展的机制注册和发现服务,还可以使用控制台方便快捷地实现服务集成和跨平台。

以下是一个使用 Nacos 服务注册与发现的示例:

@RestController
public class TestController {

    @Autowired
    private DiscoveryClient discoveryClient;

    @GetMapping("/test/discovery")
    public String getDiscoveryInfo(){
        List
     services = discoveryClient.getServices();
        return services.toString();
    }
}
    

四、Nacos 动态 DNS 服务

Nacos 动态 DNS 服务,基于 DNS-Server 领域知识经验,实现了一套高可用高并发的,支持动态 IP 变更场景的 DNS 服务。使用 Nacos 的动态 DNS 服务几乎不需要改变代码,只需要修改域名系统即可完成全网的数据中心服务治理。Nacos 的 DNS 服务具有以下特点:

1. 动态的 DNS 解析:支持 DNS 解析中间件通过 API 动态向 DNS 服务注册、反注册信息;

2. 动态地支持多数据中心:默认情况下,某个集群的 DNS 服务只返回当前数据中心的 IP 信息。如果您需要查询多个数据中心的 IP,可以设置相应的参数;

3. 全局负载均衡:

4. DNS Cache 与远程配置更新。

以下是一个使用 Nacos 动态 DNS 服务的示例:

dns.lookup('service.hello.example.com', (err, addresses, family) => {
  console.log('addresses:', addresses);
});

五、Nacos 管理平台

Nacos 平台管理界面通过Web界面实现了对服务、配置、实例等内容的管理。其中最为核心的是发布配置的功能,在“配置管理”中可以查看所有的配置,当需要新增一个配置时,可以通过点击右侧“新增配置”按钮进行配置发布。主要功能如下:

1. 集群管理:当有多台机器部署时,需要将他们组成一个集群,以便进行集中管理;

2. 服务列表:查看已经注册的所有服务;

3. 服务监控:对已经注册的服务进行实时监控,可以查看实例列表、运行状态和 metrics 指标;

4. 配置列表:查看所有已发布的配置;

5. 命名空间:通过命名空间实现不同业务线之间的非法互访。

六、Nacos 高可用性与伸缩性

Nacos 支持主备模式(master-slave),高可用模式(Standalone),多机房跨地域部署,在极端情况下也可以采用分区模式等多种部署方式,充分满足各类业务场景需求。这些机制使得 Nacos 具备极高的可用性和伸缩性,能轻松实现在大规模的场景下的服务发现、配置管理等任务。

总结

本文通过对于 Nacos Github 的全面介绍,详细介绍了 Nacos 的入门原理、核心功能以及应用场景。希望读者能够对于 Nacos 有更深入的了解,以此为契机,不断学习、实践,提高自身水平能力。