Nacos1.1.3小试牛刀

什么是 Nacos(摘自https://nacos.io/zh-cn/docs/quick-start.html)

  Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

  Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

  服务(Service)是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理:

Nacos 的关键特性包括:

  • 服务发现和服务健康监测:
  •   Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。
  • 动态配置服务:
  •   动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。
  • 动态 DNS 服务:
  •   动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以 DNS 协议为基础的服务发现,以帮助您消除耦合到厂商私有服务发现 API 上的风险。Nacos 提供了一些简单的 DNS APIs TODO 帮助您管理服务的关联域名和可用的 IP:PORT 列表.
  • 服务及其元数据管理:

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

Nacos 快速开始:

1.预备环境准备

  Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:

  1. 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
  2. 64 bit JDK 1.8+;下载 & 配置。
  3. Maven 3.2.x+;下载 & 配置。

  从 Github 上下载源码方式:

git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -DskipTests clean install -U

  由于我编译的时候跑Test报错,我这里选择跳过Test.

  编译完进入 nacos\distribution\target\nacos-server-1.1.3\nacos\bin 目录,我这边windows 双击 startup.cmd 启动服务:

Nacos1.1.3小试牛刀_第1张图片

  等服务启动完毕根据其控制台打印的地址去访问http://192.168.216.1:8848/nacos/index.html,登录进去(默认账号密码都是  nacos),会看到以下界面:

Nacos1.1.3小试牛刀_第2张图片

  可以很清晰的看到nacos为我们提供了基于配置管理,服务管理,集群管理三大主功能下的管理。作为服务注册中心的话,如果小伙伴们熟悉Zookeeper的话,其实原理是大同小异的,我们这里主要基于配置中心去操作一下,我们去添加一条配置:

Nacos1.1.3小试牛刀_第3张图片

  其中ID与Group 官方给出的定义如下:

  配置集 ID:Nacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。Data ID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。Data ID 通常采用类 Java 包(如 com.taobao.tc.refund.log.level)的命名规则保证全局唯一性。此命名规则非强制。

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

Java案例实践:

  1.首先基于Nacos 的原生SDK,导入依赖:


    com.alibaba.nacos
    nacos-client
    1.1.1

  操作如下:

public static void main(String[] args) {
        //连接到目标服务的地址
        //指定dataid、 groupid
        String serverAddr="localhost:8848";
        String dataId="example";
        String groupId="DEFAULT_GROUP";
        Properties properties=new Properties();
        properties.put("serverAddr",serverAddr);
        try {
            //ConfigService-> NacosConfigService
            ConfigService configService=NacosFactory.createConfigService(properties);
            String content=configService.getConfig(dataId,groupId,3000);
            System.out.println(content);
       //监听 configService.addListener(dataId, groupId,
new Listener() { @Override public Executor getExecutor() { return null; } @Override public void receiveConfigInfo(String configInfo) { System.out.println("configInfo:"+configInfo); } }); } catch (NacosException e) { e.printStackTrace(); } }

  运行即可获得对应的配置结果。

2.基于SpringBoot 集成 Nacos:

  导入依赖:


     com.alibaba.boot
     nacos-config-spring-boot-starter
     0.2.2

  编写一个Controller:

@NacosPropertySource(dataId = "example",groupId = "DEFAULT_GROUP",autoRefreshed = true)
@RestController
public class NacosConfigController {

    /**
     * 当前的info这个属性,回去nacos-server找到对应的info这个属性
     * 高可用性
     * hello Nacos表示本地属性(降级属性)
   * autoRefreshed :是否自动刷新配置变更
*/ @NacosValue(value = "${info:hello Nacos}",autoRefreshed = true) private String info; @GetMapping("/get") public String get(){ return info; } }

  启动项目访问接口就可以获取结果,其中官方文档有很详细的解释,包括对于 Dubbo,springCloud的集成等。接下去我们深入来学习一下Nacos的源码,来体会设计思路。

 

转载于:https://www.cnblogs.com/wuzhenzhao/p/11384266.html

你可能感兴趣的:(Nacos1.1.3小试牛刀)