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
posted @ 2021-05-21 13:53  陽66  阅读(5175)  评论(0编辑  收藏  举报