微服务实战 01 Nacos 入门

Nacos 入门

  • 什么是Nacos
    • Nacos 的关键特性
    • 服务发现和服务健康检测:
    • 动态配置服务
    • 动态DNS服务
    • 服务及其元数据管理
  • Nacos 的使用
    • Nacos 的安装
    • Nacos 实现服务的注册与发现
    • Nacos 实现统一的配置管理
      • 动态更新配置
      • 自定义 Namespace 和Group
  • Nacos 的高可用部署
  • Nacos 实现原理
    • 注册中心原理

什么是Nacos

Nacos 是 Dynamic Naming and Configuration Service 的首字母简称;⼀个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos 致力于解决微服务中的统一配置,它提供了一组简单易用的特性及,囊住开发者快速实现动态服务发现、服务配置、服务元数据及流量管理

Nacos 的关键特性

服务发现和服务健康检测:

Nacous支持基于 DNS和基于RPC的服务发现,服务提供者使用原生SDK,OpenApi或一个独立的AgentTODO注册Service后,服务消费者可以使用DNS或HTTP&API查找和发现服务

Nacos提供对服务实时的健康检查,阻止像不见看的主机或者服务实例发送请求

动态配置服务

Nacos 提供了一个简洁易用的UI帮助用户管理所有服务的配置。Nacos还提供了包括配置版本跟踪、金丝雀发布、一键回滚配置及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助用户更安全地在生产环境中管理配置变更,降低配置变更带来的风险。

动态DNS服务

动态DNS支持权重路由,让开发者更容易地实现中间层负载均衡、更灵活的路由策略、流量控制,以及数据中心内网的简单DNS解析服务。

服务及其元数据管理

Nacos 可以使开发者从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析,服务的健康状态、服务的流量管理、路由及安全策略、服务的SLA及重要的metrics统计数据。

Nacos 的使用

Nacos 的安装

  1. 下载Nacos发布版本下载链接
  2. 解压进入 \nacos\conf 根据sql文件创建数据库
  3. 进入 \nacos\conf 目录下 更改 application.properties 中数据库连接地址
  4. 进入bin目录下命令行执行 startup.cmd 文件
  5. 之后访问 http://localhost:8848/nacos/index.html

Nacos 实现服务的注册与发现

  1. 新建 springBoot 项目
  2. 添加Maven依赖
 
        <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
        dependency>
  1. 增加配置
    在 bootstrap.yml 文件中增加如下配值
# Spring
spring: 
  application:
    # 应用名称
    name: zcct-discovery
  profiles:
    # 环境配置
    active: dev
  cloud:
    nacos:
      discovery:
        # 服务注册地址
        server-addr: 127.0.0.1:8848
      config:
        # 配置中心地址
        server-addr: 127.0.0.1:8848
  1. 启动程序
    微服务实战 01 Nacos 入门_第1张图片

Nacos 实现统一的配置管理

  1. 在项目中导入
  <!--Nacos Config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
  1. 在配置文件中增加如下配置
# Spring
spring: 
  application:
    # 应用名称
    name: zcct-discovery
  profiles:
    # 环境配置
    active: dev
  cloud:
    nacos:
      discovery:
        # 服务注册地址
        server-addr: 127.0.0.1:8848
      config:
        # 配置中心地址
        server-addr: 127.0.0.1:8848
        # 配置文件格式
        file-extension: yml
        # 共享配置
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
  1. 增加如下代码
@Component
public class TestService {
    @Value("${myName}")
    String MyName;

    public String getMyName() {
        return MyName;
    }
}
  public static void main(String[] args) {

        ConfigurableApplicationContext run = SpringApplication.run(ZcctDiscoveryApplication.class, args);
        TestService testService = (TestService)run.getBean("testService");
        System.out.printf(testService.getMyName());
    }
  1. 运行打印结果
    在这里插入图片描述

动态更新配置

也就是修改在配置中心上的值之后,应用程序需要感知值的变化,

  1. 更改如下代码
 ConfigurableApplicationContext run = SpringApplication.run(ZcctDiscoveryApplication.class, args);
       // TestService testService = (TestService)run.getBean("testService");
        while (true) {
            System.out.println(run.getEnvironment().getProperty("myName"));
            try {
                TimeUnit.SECONDS.sleep(1);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
  1. 可以看出 配置的值已经动态改变
    微服务实战 01 Nacos 入门_第2张图片

自定义 Namespace 和Group

在前面使用的配置中心都在用默认的Namespace:public 和 Group:DFFAULT_GROUP,Nacos的数据模型Key室友三元组来进行唯一确认的,其中 Namespace 解决了多环境及多租户数据隔离问题,Group时Nacos中用来实现Data ID 分组管理机制,它可以实现不用的Service/dataid的隔离
微服务实战 01 Nacos 入门_第3张图片
在程序中的配置
微服务实战 01 Nacos 入门_第4张图片
在 Nacos 中的配置
在这里插入图片描述
微服务实战 01 Nacos 入门_第5张图片

Nacos 的高可用部署

Nacos 提供了集群架构,防止单点故障,包含一个leader节点和多个Foower节点。,他的数据一致性算法采用的是 Ralf,同样采用了该算法的中间件有 , Redis Sentinel 的Leader 选举

微服务实战 01 Nacos 入门_第6张图片

  1. 修改 cluster.conf 文件的 配置信息
  2. 修改 application.properties中的数据库地址
  3. 启动 nacos,访问Nacos控制台

Nacos 实现原理

Nacos 机构图
微服务实战 01 Nacos 入门_第7张图片

  • provider APP : 服务提供者
  • Consumer APP:服务消费者
  • Name Server:通过 Vritual IP 或者DNS 的方式实现Nacos高可用集群的服务路由
  • Nacos Server:包含 Open Api 是功能的访问入口,Config Service 、 Naming Service 是Nacos 提供的配置服务、名字服务模块。 Consistency Protocol 是一致性协议,用来实现Nacos集群节点的数据同步
  • Nacos Console : Nacos 控制台

注册中心原理

服务注册的功能只要体现在:

  • 服务实例在启动时注册到服务注册表,并在关闭时注销
  • 服务小否者查询服务注册表,获得可用实例
  • 服务注册中心需要调用服务 实例的健康检查API来验证他是否能够处理请求

微服务实战 01 Nacos 入门_第8张图片

你可能感兴趣的:(springCloud,Alibaba,微服务,java,云原生,spring,cloud)