注册中心和配置中心Nacos学习记录

发布于:2022-11-07 ⋅ 阅读:(665) ⋅ 点赞:(0)

一、nacos的介绍
    1、什么是nacos?
        Nacos(na代表Naming,co代表Configuration,s为Service)是阿里巴巴一个开源的注册中心、配置中心组件
    2、nacos的启动器
        

<!--        nacos注册中心启动器-->        
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
<!--        nacos配置中心启动器-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>


        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
    3、测试
        浏览器访问:http://192.168.209.129:8848/nacos
        默认用户名/密码为:nacos/nacos

三、nacos注册中心(服务的ip和端口)
    1、服务提供者:nacos_provider

pom.xml

 application.yml

启动类注解

@EnableDiscoveryClient//注册中心和发现其他服务

服务消费者:nacos_consumer

pom.xml

        <dependency>
            <groupId>com.bjpowernode</groupId>
            <artifactId>springcloud_common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <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>

application.yml

server:
  port: 80
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.81.130:8848
        namespace: test
  application:
    name: nacos-consumer

启动类注解

@EnableDiscoveryClient//注册中心和发现其他服务

配置类

@Configuration
public class BeanConfig {
    @Bean
    public RestTemplate restTemplate(){
        return  new RestTemplate();
    }
}

测试

@RestController
@RequestMapping("/consumer")
public class ConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    @Autowired
    private DiscoveryClient discoveryClient;//获取服务的实例的工具类

    @RequestMapping("/getUserById/{id}")
    public User getUserById(@PathVariable("id") Integer id){
        //获取所有服务的名字
        // List<String> serviceList = discoveryClient.getServices();
        // for (String serviceName : serviceList) {
        //     System.out.println(serviceName);
        // }
        //getInstances获取服务的实例的集合 
        //getHost()获取地址
        //getPort()获取端口号
        ServiceInstance service = discoveryClient.getInstances("nacos-provider").get(0);
        String url = "http://"+service.getHost()+":"+service.getPort()+"/provider/getUserById/"+id;
       return restTemplate.getForObject(url,User.class);
    }
}

 四、配置中心(配置文件)
    集中管理配置文件

pom.xml

     <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--        nacos注册中心启动器-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
<!--        nacos配置中心启动器-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

bootstrap.yml

spring:
  cloud:
    nacos:
      config:
        server-addr: 192.168.81.130:8848
        prefix: nacos-config #可省略不写,默认为注册到nacos的服务名  前缀
        file-extension: yaml #后缀
        namespace: test #测试环境
        group: TEST_GROUP #DEFAULT_GROUP默认分组

3、启动类注解
            @SpringBootApplication
            @EnableDiscoveryClient

4 在nacos中新建配置文件

 Data Id:${spring.cloud.nacos.config.prefix}.${spring.cloud.nacos.config.file-extension}

5 实时更新最新配置

@RestController
@RefreshScope //重写获取对象
public class ConfigController {
    @Value("${spring.datasource.driver-class-name}")
    private String driverClassName;
    @Value("${spring.datasource.url}")
    private String url;
    @Value("${spring.datasource.username}")
    private String username;
    @Value("${spring.datasource.password}")
    private String password;
    @Value("${spring.datasource.type}")
    private String type;

    @RequestMapping("/config/info")
    public String config(){
        System.out.println(this);
        String configInfo = driverClassName+"<br>"+url+"<br>"+username+"<br>"
                +password+"<br>"+type;
        return configInfo;
    }

}

引入logback.xml查看日志

原理:通过nacos监控MD5来查看

分组隔离

 服务隔离

consumer

 provider

 

五、持久化

nacos有自带嵌入式数据库derby,如果搭建集群则每台nacos的配置文件都不一样,重启后配置文件消失

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.81.129:3306/nacos?characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
                db.user.0=root
                db.password.0=root
        2)建库建表
            ①新建nacos数据库
            ②初始化数据库
                找到/usr/local/nacos/conf/nacos-mysql.sql并在Navicat执行
        3)测试
            ①重启nacos
            ②上传配置文件,观察是否写到了mysql

六、nacos设置开机自启

添加开机自启动文件
       

vim /lib/systemd/system/nacos.service


            [Unit]
            Description=nacos
            After=network.target

            [Service]
            Type=forking
            ExecStart=/usr/local/nacos/bin/startup.sh -m standalone
            ExecReload=/usr/local/nacos/bin/shutdown.sh
            ExecStop=/usr/local/nacos/bin/shutdown.sh
            PrivateTmp=true

            [Install]
            WantedBy=multi-user.target
    2、修改nacos的startup.sh
       

vim /usr/local/nacos/bin/startup.sh


            [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/local/jdk1.8.0_191
            #[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java
            #[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/opt/taobao/java
            #[ ! -e "$JAVA_HOME/bin/java" ] && unset JAVA_HOME
    3、设置开启执行nacos.service
       

        systemctl daemon-reload        #重新加载服务配置
        systemctl start nacos.service  #启动nacos服务
        systemctl status nacos.service #查看nacos服务的状态
        systemctl enable nacos.service #设置为开机启动
        systemctl stop nacos.service   #关闭nacos服务


 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到