一、Nacos的介绍

1、什么是nacos?

        Nacos(na代表naming,co代表configuration,s代表service)是阿里巴巴一个开源的注册中心、配置中心组件

2、nacos的启动器

        spring-cloud-starter-alibaba-nacos-discovery
        spring-cloud-starter-alibaba-nacos-config

二、nacos的安装和启动

1、上传并解压

        cd /usr/upload
        tar -zxvf nacos-server-1.4.1.tar.gz -C /usr/local

2、启动和关闭

        启动:
            cd /usr/local/nacos/bin
            ./startup.sh -m standalone
        关闭:
            cd /usr/local/nacos/bin
            ./shutdown.sh
        测试:
            浏览器:http://192.168.42.132:8848/nacos
            默认账号密码:nacos

三、nacos的注册中心(ip和port)

1、服务提供者

1)pom.xml

            spring-cloud-starter-alibaba-nacos-discovery

2)application.yml

            spring:
              cloud:
                nacos:
                  discovery:
                    server-addr: 192.168.42.132:8848 #nacos的地址
              application:
                name: nacos-provider #map的key

3)app

@EnableDiscoveryClient

2、服务消费者

1)pom.xml

            spring-cloud-starter-alibaba-nacos-discovery

2)application.yml

            spring:
              cloud:
                nacos:
                  discovery:
                    server-addr: 192.168.42.132:8848 #nacos的地址
              application:
                name: nacos-consumer #map的key

3)app

            @EnableDiscoveryClient

三、nacos的配置中心(配置文件)

1、集中管理配置文件

1)pom.xml

            spring-boot-starter-web
            spring-cloud-starter-alibaba-nacos-discovery
            spring-cloud-starter-alibaba-nacos-config

        <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-config</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
2)bootstrap.yml

            spring:
              cloud:
                nacos:
                  config:
                    server-addr: 192.168.42.132:8848 #nacos的地址
                    prefix: nacos-config #默认值是${spring.application.name}
                    file-extension: yaml #默认值是properties

3)在nacos中新建配置文件

            Data Id:${spring.cloud.nacos.config.prefix}.${spring.cloud.nacos.config.file-extension}
            配置格式: yaml
            配置内容:在idea中写好粘贴过去

4)测试

            观察项目启动后的端口、是否注册成功

2、实时更新配置文件

        @RestController
        @RefreshScope //当nacos发送更新通知时,spring会从工厂重新获得当前类的对象 de9b
        public class ConfigController {

            @Value("${msg}")
            private String msg;

            @RequestMapping("/getConfigInfo")
            public String getConfigInfo(){
                System.out.println(this);
                return msg;
            }
        }

        原理:监控MD5

3、配置隔离

        namespace ------------------- 环境名:dev、test、prod
        group     ------------------- 项目名:springcloud_parent、jd_parent
        Data Id   ------------------- 配置文件名/工程名:nacos-config.yaml

4、namespace隔离

①新建namespace

②克隆配置文件

③读取配置文件

5、group隔离

①新建配置文件

②读取配置文件

6、服务隔离

修改配置文件

测试

四、nacos的持久化

1、为什么要持久化?

        nacos有自带的嵌入式数据库derby,如果搭建集群则每台nacos存储的配置文件不一样

2、持久化

1)切换数据库

            vim /usr/local/nacos/conf/application.properties:
                ### If use MySQL as datasource:
                spring.datasource.platform=mysql

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

                ### Connect URL of DB:
                db.url.0=jdbc:mysql://192.168.42.130:3306/nacos?characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
                db.user.0=root
                db.password.0=1111

2)建库建表

            找到/usr/local/nacos/conf/nacos-mysql.sql,并在Navicat中执行

3)测试

            ①重启nacos
            ②上传配置文件,观察是否写到了mysql

五、nacos集群

1、问题

1)如何把请求平均分配给3台nacos?

                nginx

2)nacos的集群搭建

            ①配置3台nacos的通讯地址
                cd /usr/local/nacos/conf
                cp cluster.conf.example cluster.conf
                vim cluster.conf:
                    # ip:port
                    192.168.42.132:8850
                    192.168.42.132:8851
                    192.168.42.132:8852
            ②复制3台nacos
                cd /usr/local
                mkdir nacos-cluster
                cp -r nacos nacos-cluster/nacos-8850
                cp -r nacos nacos-cluster/nacos-8851
                cp -r nacos nacos-cluster/nacos-8852
            ③修改3台nacos的端口号
                vim /usr/local/nacos-cluster/nacos-8850/conf/application.properties
                    server.port=8850
                vim /usr/local/nacos-cluster/nacos-8851/conf/application.properties
                    server.port=8851
                vim /usr/local/nacos-cluster/nacos-8852/conf/application.properties
                    server.port=8852
            ④启动集群
                cd /usr/local/nacos-cluster/nacos-8850/bin
                ./startup.sh
                cd /usr/local/nacos-cluster/nacos-8851/bin
                ./startup.sh
                cd /usr/local/nacos-cluster/nacos-8852/bin
                ./startup.sh

3)搭建nginx

            ①安装c语言环境及nginx的依赖库
                yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
            ②下载nginx
                cd /usr/upload
                wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
            ③解压
                cd /usr/upload
                tar -zxvf nginx-1.12.0.tar.gz
            ④配置安装路径
                cd nginx-1.12.0
                ./configure --prefix=/usr/local/nginx
            ⑤编译并安装
                make && make install
            ⑥配置nginx代理nacos
                vim /usr/local/nginx/conf/nginx.conf:
                    upstream nacos {
                      server 192.168.42.132:8850;
                      server 192.168.42.132:8851;
                      server 192.168.42.132:8852;
                    }
                    server {
                      listen 80;
                      server_name  localhost;
                      location / {
                        proxy_pass http://nacos;
                      }
                    }
            ⑦nginx的启动和关闭
                启动:
                    cd /usr/local/nginx/sbin
                    ./nginx
                关闭:
                    cd /usr/local/nginx/sbin
                    ./nginx -s stop

更多推荐