美文网首页
Nacos安装及应用

Nacos安装及应用

作者: 8090的大叔 | 来源:发表于2020-05-18 01:50 被阅读0次

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

    1. Nacos是什么?

    英文全称Dynamic Naming and Configuration Service,即注册发现服务(注册中心)、配置服务(配置中心),在Nacos中服务(Service)是核心。

    Nacos是Dubbo体系、Spring Cloud Alibaba体系中重要的注册中心实现。
    Nacos = Spring Cloud eurake + Spring Cloud Config。
    与同类注册中心产品相对比,存在一定优势,支持CP+AP。

    Nacos Eurake Zookeeper Consul
    一致性协议 CP+AP AP CP CP
    健康检查 TCP/HTTP/MYSQL/Client Beat Client Beat Keep Alive TCP/Http/gRPC/Cmd
    负载均衡 权重/metadata/Selector Ribbon - RoundRobin
    雪崩保护
    自动注销实例 支持 支持 支持 不支持
    访问协议 HTTP/DNS HTTP TCP HTTP/DNS
    多数据中心 支持 支持 不支持 支持
    跨注册中心同步 支持 不支持 不支持 支持
    SpringCloud 支持 支持 - 支持
    Dubbo 支持 - 支持 -
    K8S 支持 - - 支持

    关键特性

    • 服务发现和服务健康监控
      支持基于DNS和基于RPC的服务发现,对服务健康的实时检查,阻止像不健康的主机或服务实例发送请求。
    • 动态配置服务:
      以中心化、外部化、动态化的方式管理所有环境的应用配置和服务配置。
    • 动态DNS服务:
      支持权重路由,更容易的实现中间层的负载均衡、路由策略、流量控制。
    • 服务以及元数据管理:
      从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。

    2. 环境及版本

    下载地址:https://github.com/alibaba/nacos/releases
    Nacos:nacos-server-1.2.1
    Maven:apache-maven-3.6.3
    JDK:jdk1.8.0_181

    版本信息

    Windos下安装

    解压下载的nacos-server-1.2.1.zip文件,进入nacos/bin目录,双击startup.cmd。


    解压目录

    启动控制台会显示nacos的访问地址


    启动效果

    默认账号密码 nacos/nacos 登录


    QQ图片20200516021317.png

    3. Nacos 配置中心

      <!-- SpringCloud Ailibaba Nacos Config -->
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
      </dependency>
    
    #默认对应nacos服务中dataId格式为,${spring.application.name}-${spring.profile.active}.${file-extension}
    spring:
      application:
        name: config
      cloud:
        nacos:
          config:
            # 配置中心地址
            server-addr: 127.0.0.1:8848
            # 配置文件格式
            file-extension: yml
    

    我们可以指定数据库配置,通过一台或者多台数据库进行配置中心的配置存储。

    指定数据库配置,需使用nacos提供的数据库脚本进行初始化
    nacos\conf\nacos-mysql.sql
    nacos\conf\schema.sql

    修改在nacos\conf\application.properties 配置文件

    #nacos服务端口号
    server.port=8848
    #数据配合
    spring.datasource.platform=mysql
    #数据库个数
    db.num=2
    #地址a
    db.url.0=jdbc:mysql://127.0.0.1:3306/config-a?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
    db.user=root
    db.password=root
    #地址b
    db.url.1=jdbc:mysql://127.0.0.1:3306/config-b?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
    db.user=root
    db.password=root
    

    新建配置

    通过管控台可以直接新建配置信息,提供给我们的服务使用。


    新建配置

    配置列表

    配置列表中,可以使用Data ID、Group进行配置检索,DataID为我们配置文件的id,Group为分组信息。


    QQ图片20200516021317.png

    本地存储

    不论是否使用数据库进行配置管理nacos都会在本地nacos目录下创建data\config-data目录,该目录下使用Group进行分组,来保存我们的配置文件。也可以将目录打包为DEV_GROUP.zip文件上传至nacos。

    本地配置文件

    4. Nacos注册中心

      <!-- SpringCloud Ailibaba Nacos -->
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
      </dependency>
    
    # 注册中心地址配置,可增加配置中心内容,服务的提供者与消费者配置相同,更换spring.application.name即可。
    spring: 
      application:
        #应用名称 
        name: service-provider
      cloud:
        nacos:
          discovery:
            #服务注册地址
            server-addr: 127.0.0.1:8848
    

    服务提供者

    @SpringBootApplication
    @EnableDiscoveryClient
    public class NacosProviderApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(NacosProviderApplication.class, args);
        }
    
        @RestController
        class EchoController {
            @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
            public String echo(@PathVariable String string) {
                return "Hello Nacos Discovery " + string;
            }
        }
    }
    

    服务消费者

    @SpringBootApplication
    @EnableDiscoveryClient
    public class NacosConsumerApplication {
    
        @LoadBalanced
        @Bean
        public RestTemplate restTemplate() {
            return new RestTemplate();
        }
    
        public static void main(String[] args) {
            SpringApplication.run(NacosConsumerApplication.class, args);
        }
    
        @RestController
        public class TestController {
    
            private final RestTemplate restTemplate;
    
            @Autowired
            public TestController(RestTemplate restTemplate) {this.restTemplate = restTemplate;}
    
            @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
            public String echo(@PathVariable String str) {
                return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:Nacos安装及应用

          本文链接:https://www.haomeiwen.com/subject/mtbeohtx.html