Nacos 注册中心和配置中心

一,nacos介绍

        1, 什么是nacos?

Nacos(na代表Naming,co代表Configuration,s为Service)是阿里巴巴一个开源的注册中心、配置中心组件

        2、nacos的启动器

​​​​​​​
 
com.alibaba.cloud 
spring-cloud-starter-alibaba-nacos-discovery 
 
 
 
com.alibaba.cloud
 spring-cloud-starter-alibaba-nacos-config
​​​​​​​ 

   

二、nacos的安装和启动

        1、上传并解压

                        打开nacos虚拟机

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

        2、启动和关闭

cd /usr/local/nacos/bin
./startup.sh -m standalone

        3、测试

浏览器访问:http://192.168.23.130:8848/nacos

        默认用户名/密码为:nacos/nacos

三、nacos注册中心(服务的ip和端口)

        1、服务提供者:nacos_provider


1, pom.xml文件
            spring-boot-starter-web
            spring-cloud-starter-alibaba-nacos-discovery
            springcloud_common
2, application.yml 配置文件
            spring:
              cloud:
                nacos:
                  discovery:
                    server-addr: 192.168.23.130:8848 #nacos的IP地址和端口
              application:
                name: nacos-provider  #服务名
3, 启动类  添加注解 允许注册服务和发现服务

            @EnableDiscoveryClient
​

        2,服务消费者 nacos_cosumer

​
​
 1,pom.xml
                spring-boot-starter-web
                spring-cloud-starter-alibaba-nacos-discovery
                springcloud_common
 2,application.yml
                spring:
                  cloud:
                    nacos:
                      discovery:
                        server-addr: 192.168.23.130:8848
                  application:
                    name: nacos-consumer #向注册中心注册的名字
 3, 启动类
                @EnableDiscoveryClient

​

​

        3、测试
​​​​​​​

@RestController
@RequestMapping(value = "/consumer")
public class ConsumerController {
	
	@Autowired
	private RestTemplate restTemplate;

	@Autowired
	private DiscoveryClient discoveryClient;

	@RequestMapping(value="/getUserById/{id}")
	public User getUserById(@PathVariable Integer id){
		//获取nacos中注册的所有服务信息
		List serviceList = discoveryClient.getServices();
		for (String service : serviceList) {
			System.out.println(service);
		}
		//获取nacos中注册的指定服务信息
		ServiceInstance instance = discoveryClient.getInstances("nacos-provider").get(0);
		String serviceUrl = instance.getHost() + ":" + instance.getPort();

		String url = "http://"+serviceUrl+"/provider/getUserById/"+id;
		return restTemplate.getForObject(url, User.class);
	}
}

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

​
1、pom.xml
            spring-boot-starter-web
            spring-cloud-starter-alibaba-nacos-discovery
            spring-cloud-starter-alibaba-nacos-config
 2、bootstrap.yml
            spring:
              cloud:
                nacos:
                  config: #(系统级别的配置)
                    server-addr: 192.168.23.130:8848 #配置中心的地址
                    prefix: nacos-config #默认值是spring.application.name
                    file-extension: yaml #默认值是properties
 3、启动类
            @SpringBootApplication
            @EnableDiscoveryClient

​


        2、在nacos中新建配置文件
           Nacos 注册中心和配置中心_第1张图片

 

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


            配置格式: .yaml结尾
           
        3、测试nacos集中管理配置文件  实时更新配置

   

package com.bjpowernode.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope //重新从BeanFactory获取一个新的实例(该实例使用新的配置)
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;

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

4.测试实时更新配置信息
    注意:需要引入logback.xml 查看完整信息
    原理:nacos监听MD5 每次更新,MD5 都不一样

5.配置隔离

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

五、持久化
​​​​​​​
    1、为什么要持久化?

      nacos有自带嵌入式数据库derby,如果搭建集群则每台nacos的配置文件都不一样,请求的时候可能会找不到配置文件
  


    2、持久化

        1,切换数据库
          

### 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.23.131:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=1111


        2,建库建表

             1.新建nacos数据库
            2.初始化数据库  关闭nacos 再打开
            3.找到/usr/local/nacos/conf/nacos-mysql.sql并在Navicat执行

Nacos 注册中心和配置中心_第2张图片

 

        3)测试

           1.重启nacos
           2.上传配置文件,观察是否写到了mysql

 


   


           


​​​​​​​

你可能感兴趣的:(java,分布式,开发语言)