Nacos系列(一):nacos介绍及服务搭建

517 阅读2分钟

1、什么是nacos

Nacos在微服务架构中为我们解决了统一配置、服务注册与发现等问题。

1.1nacos有以下主要特性

  • 服务发现与服务健康检查

    1. 服务提供者注册服务,服务提供者使用DNS、HTTP、API查找和发现服务
    2. nacos提供对服务的健康检查,阻止向不健康的主机或者服务发送请求。
  • 动态配置服务

    nacos通过内嵌数据库或者mysql统一存储服务相关配置文件,提供实时更新,回滚等功能

  • 动态DNS服务

    动态dns支持路由权重,容易实现中间层负载均衡等功能

2、nacos基本使用

2.1、单机

1、nacos主要有2种部署方式,分别为单机、集群。nacos依赖jdk1.8及以上版本 2、jar包安装,从git上下载直接运行 3、window下启动在nacos/bin下目录下直接启动, 打开bin文件夹,双击运行startup.cmd即可启动Nacos服务端。 4、Linux下启动 在nacos/bin 目录下执行sh startup.sh -m standalone

3. Spring Boot项目接入Nacos配置中心h和服务中心

创建消费者和提供者工程,引入相关依赖

  <dependencies>
       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
  </dependencies>
<!--管理版本-->


   <dependencyManagement>
        <dependencies>
		        <!--spring cloud alibaba-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.1.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
		 </dependencies>
    </dependencyManagement>

添加基础配置文件bootstrap.yml

spring:
  application:
    name: service-order
  cloud:
    nacos:
      discovery:
        server-addr: ${NACOS_HOST:pigx-register}:${NACOS_PORT:8848}
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        file-extension: yml

在启动类,添加注解

@SpringBootApplication
@EnableDiscoveryClient
public class SmsApplication {
    public static void main(String[] args) {
        SpringApplication.run(SmsApplication.class, args);
    }
}

控制台,可在控制台上创建相应的配置文件 服务名+&{spring。profiles.active}.&{spring.cloud.config.file-extension} 配置文件内容,修改配置文件内容,重新请求,可看到配置文件动态刷新@RefreshScope

@RequestMapping
@RestController
@RefreshScope
public class IndexController {
    @Value("${hello}")
    private String hello;
    @GetMapping("index")
    public String index() {
        return hello;
    }
}

查看控制台,在服务管理中,服务已经注册

4、集群部署

4.1、配置文件

  • application.properties:Spring boot 项目默认的配置文件
  • cluster.conf.example 集群配置样例文件 实际中文件名为cluster.conf
  • nacos-mysql.sql mysql数据库脚本;nacos支持Derby和mysql,两种持久化机制
  • nacos-logback.xml nacos日志配置文件

4.2、集群配置文件修改

  • 创建cluster.conf配置文件
10.10.109.21:8848
11.16.128.34:8848
11.16.128.36:8848
``


在所有集群服务器中配置文件保持一致,服务器间要保持通信

  • 配置mysql数据库 执行nacos-mysql.sql脚本 修改application.properties配置文件
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/pigxx_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
# db.user=root
# db.password=XU1210wd@
  • 在三台服务器中执行sh startup.sh或者startup.cmd -m cluster(window)

  • 集群配置文件相应修改

spring.cloud.nacos.config.server-addr=192.168.0.1:8848,192.168.0.2:8848,192.168.0.3:8848