• nacos系列 (nacos整合springboot)


    1.1 介绍

    一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

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

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

    其他相关产品 consul 等也要服务注册和管理的功能

    官网: https://nacos.io/zh-cn/

    Nacos 的关键特性:
       1. 服务发现和服务健康监测
       2. 动态配置服务
       3. 动态 DNS 服务
       4. 服务及其元数据管理
    ......
    

    1.2 nacos生态

    1.3 安装

    推荐的稳定版本为1.4.2或2.0.1。

    1.3.1 下载

    准备工作:
    1. 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
    2. 64 bit JDK 1.8+;
    3. Maven 3.2.x+;
    

    github下载地址:https://github.com/alibaba/nacos.git

    本次以1.3.2为例进行介绍,大家尽量选择稳定版本

    bin : 命令夹

    conf: 配置文件夹

    data: 辅助数据文件夹

    logs : 日志文件夹

    target: 编译文件夹

    1.3.2 启动

    nacos有两种启动方式

    1. 单节点启动
    2. 集群启动 (修改以下两个文件)
      1. conf/cluster.conf
      2. conf/application.properties
    1. 修改配置文件
    #*************** Config Module Related Configurations ***************#
    ### If use MySQL as datasource:
     spring.datasource.platform=mysql
    
    ### Count of DB:
     db.num=1
    
    ### Connect URL of DB:
     db.url.0=jdbc:mysql://127.0.0.1:3306/nacos-conf?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
     db.user=root
     db.password=root
    
    1. 数据库文件导入
    把conf文件夹下的mysql文件导入到创建好的数据库中,与步骤1的链接数据库保持一致
    
    1. nacos启动

    Linux/Unix/Mac

    启动命令(standalone代表着单机模式运行,非集群模式):

    sh startup.sh -m standalone

    ubuntu

    bash startup.sh -m standalone

    Windows

    启动命令(standalone代表着单机模式运行,非集群模式):

    startup.cmd -m standalone

    1.3.3 web页面访问

    默认用户名密码 是 nacos/nacos

    访问地址:http://localhost:8848/nacos

    ----到这nacos就搭建完成了
    

    1.4 web页面

    下面主要介绍nacos的web页面

    2. nacos集成

    2.1 springboot集成

    # 注意:  版本 0.2.x.RELEASE 对应的是 Spring Boot 2.x 版本,版本 0.1.x.RELEASE 对应的是 Spring Boot 1.x 版本。
    

    项目初始化搭建,引入jar包

      <!--引入nacos配置包  读取nacos上配置文件需要这个包-->   
     <dependency>
         <groupId>com.alibaba.boot</groupId>
         <artifactId>nacos-config-spring-boot-starter</artifactId>
         <version>0.2.1</version>
     </dependency>
     
     <!--引入nacos服务注册包-->
     <dependency>
         <groupId>com.alibaba.boot</groupId>
         <artifactId>nacos-discovery-spring-boot-starter</artifactId>
         <version>0.2.1</version>
     </dependency>
     <!--引入nacos-client包  个别需要加  不加会报nacos  api的错-->
     <dependency>
        <groupId>com.alibaba.nacos</groupId>
        <artifactId>nacos-client</artifactId>
        <version>0.6.2</version>
    </dependency>
    ps: 注意  nacos-client的版本与上面nacos-config的有个对应关系
    

    初始化项目

    @SpringBootApplication
    public class CloudNacosApplication {
        @NacosInjected
        private NamingService namingService;
    
        @Value("${server.port}")
        private int serverPort;
    
        @Value("${spring.application.name}")
        private String applicationName;
    
        // 现在采用原生的nacos+springboot  需要自己手动注册到nacos上  后期可以使用ali的nacos包,使用注解@EnableDiscoveryClient
        @PostConstruct
        public void registerInstance() throws NacosException {
            namingService.registerInstance(applicationName, "127.0.0.1", serverPort);
        }
    
        public static void main(String[] args) {
            SpringApplication.run(CloudNacosApplication.class, args);
        }
    
    }
    
    # 服务注册名  单例名称  唯一
    spring:
      application:
        name: cloud-nacos
    # 端口
    server:
      port: 8080
    # 服务注册地址   nacos地址
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
      config:
        server-addr: 127.0.0.1:8848
    

    注册服务,启动项目去nacos上查看服务已经注册

    image-20210521105000550

    读取配置文件 测试类如下,nacos配置文件如下

    @RestController
    @NacosPropertySource(dataId = "huhy-dev",autoRefreshed = true)
    public class NacosConfiigController {
    
        @NacosValue(value = "${huhy.username:yang}",autoRefreshed = true)
        private String username;
    
        /**
         * 测试nacosvalue获取配置文件属性
         * @return
         */
        @GetMapping("/getUsername")
        public String getUserName(){
            return "hello "+ username;
        }
    }
    

    image-20210521105157578

    接口测试

    image-20210521105217268

    ## 注意   先了解,后期介绍nacos+springcloud的时候详细解析
    1. @NacosValue  和 @Value的注解区别
    2. @RefreshScope
    
    hhy_0602@163.com
  • 相关阅读:
    0001 工作业务问题_滞纳金公式计算区别实例
    001 win10下安装linux子系统--Ubuntu及其图形界面
    Java知识系统回顾整理01基础07类和对象01引用
    Java知识系统回顾整理01基础06数组07数组工具类Arrays
    Java知识系统回顾整理01基础06数组06二维数组
    Vue 框架中添加百度地图组件
    VUE中使用vue.nextTick 报this.nextTick is not a function错误
    VUE 饿了么项目实战 VUE &quot;TypeError: Cannot read property 'deliveryPrice' of undefined&quot;报错
    VUE vue2.0配置webpack.dev.conf.js加载本地json数据
    VUE response.json() 的更新问题
  • 原文地址:https://www.cnblogs.com/huhongy/p/14793476.html
Copyright © 2020-2023  润新知