Spring Cloud Alibaba Nacos 简易入门

1.Nacos 简介

为什么叫Nacos

前四个字母为Nameing和Configuration的前两个字母,最后的s为Service。

是什么?

Nacos(Nacos:Dynamic Naming and Configuration Service)是一个更易于构建原生应用的动态服务发现、配置管理和服务管理平台。Nacos就是注册中心+配置中心的组合,它等价于Eureka+Config+Bus

能干嘛?

它能替代Eureka做服务中心,替代Config做微服务配置中心。

2.安装Nacos

安装之前首先下载Nacos,下载地址https://github.com/alibaba/nacos/releases 。这里注意如果是Windows(有Java+MySQL8.0以下版本环境)可以下载完开箱即用。Windows启动如下命令。

startup.cmd -m standalone

如果你的MySQL版本是8.x,使用方法如下:
1.下载源码git clone https://github.com/alibaba/nacos.git
2.用Idea打开项目,修改pom.xml里面的MySQL版本


    mysql
    mysql-connector-java
    
    8.0.18

3.修改MySQL驱动 com/alibaba/nacos/naming/healthcheck/MysqlHealthCheckProcessor.java

// import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;原数据在24行
//将其替换
import com.mysql.cj.jdbc.MysqlDataSource;

4.重新编译

mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U

5.将编译好的文件复制到你所要存放的nacos的地方:

cp  distribution  xxx
mv distribution nacos

这时候就相当于你下载了一个支持MySQL8.xNacos。你可以用相对应得命令启动。
已经编译好下载地址:https://pan.baidu.com/s/1xVeg0t98BKlUbgvQMzTBxA 提取码:vssl

如果是Linux/Mac,启动命令如下。

sh startup.sh -m standalone

启动之后可以访问Nacos客户端,默认用户名密码都是nacos
Spring Cloud Alibaba Nacos 简易入门_第1张图片

3.Nacos做注册中心

服务提供方

1.创建springboot项目并添加依赖

    
        1.8
        2.2.0.RELEASE
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
    

    
        
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                ${spring-cloud-alibaba.version}
                pom
                import
            
        
    

2.配置文件配置


server.port=9001
spring.application.name=nacos-provider
# nacos注册中心地址
spring.cloud.nacos.discovery.server-addr=localhost:8848

3.启动文件添加注解

@EnableDiscoveryClient
@SpringBootApplication
public class AlibabaProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(AlibabaProviderApplication.class, args);
    }

}

4.提供消费接口

@RestController
public class HelloController {

    @Value("${server.port}")
    String serverPort;

    @GetMapping("/provider/hello")
    public String hello(){
        return "nacos1 hello"+serverPort;
    }
}

5.再创建一个项目如上配置用于后面做负载均衡测试,或者如下图直接拷贝虚拟端口映射
Spring Cloud Alibaba Nacos 简易入门_第2张图片
6.启动项目测试提供的接口:http://localhost:9001/provider/hello
Spring Cloud Alibaba Nacos 简易入门_第3张图片

服务消费方

1.创建springboot项目并添加依赖,这里依赖与服务提供方相同
2.配置application.properties

server.port=9011
spring.application.name=nacos-consumer
spring.cloud.nacos.discovery.server-addr=localhost:8848
        
#消费者将要去访问的微服务名称(注册成功进nacos的微服务提供者)
service-url.nacos-user-service=http://nacos-provider

3.配置注册RestTemplate进行服务间接口调用

@Configuration
public class ApplicationContextConfig {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

4.调用服务提供方接口

@RestController
public class OrderNacosController {
    @Autowired
    RestTemplate restTemplate;

    @Value("${service-url.nacos-user-service}")
    private String serverUrl;
    
    @GetMapping("/consumer/hello")
    public String hello(){
        return restTemplate.getForObject(serverUrl+"/provider/hello",String.class);
    }

}

5.启动项目测试:http://localhost:9011/consumer/hello


各个服务注册中心比较(Nacos CA/AP都支持):
Spring Cloud Alibaba Nacos 简易入门_第4张图片

4.Nacos做配置中心

1.创建springboot项目并引入依赖

    
        1.8
        2.2.1.RELEASE
    

    
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-config
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
            
                
                    org.junit.vintage
                    junit-vintage-engine
                
            
        
    

    
        
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                ${spring-cloud-alibaba.version}
                pom
                import
            
        
    

2.对两个配置文件进行配置bootstrap.propertiesapplication.properties,boostrap加载优先级高于application
bootstrap.properties:


server.port=3377

spring.application.name=nacos-config-client
# 注册中心
spring.cloud.nacos.discovery.server-addr=localhost:8848
# 配置中心
spring.cloud.nacos.config.server-addr=localhost:8848
# 这里指定的文件格式需要和nacos上新建的配置文件后缀相同,否则读不到
spring.cloud.nacos.config.file-extension=properties
# 分组配置
#spring.cloud.nacos.config.group=DEV_GROUP
# 命名空间配置
# spring.cloud.nacos.config.namespace=782bd58a-0902-4ac4-bef3-f145806eff3c

# 配置文件名称拼接公式,拼接后与nacos中相对于
#  ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

详细说明参考https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

application.properties配置:

spring.profiles.active=dev

3.定义接口获取配置信息

@RestController
@RefreshScope  //支持nacos动态刷新
public class ConfigController {

    @Value("${config.info}")
    private String configInfo;

    @GetMapping("/config/info")
    public String getConfigInfo(){
        return configInfo;
    }
}

4.定义配置信息
Spring Cloud Alibaba Nacos 简易入门_第5张图片
Spring Cloud Alibaba Nacos 简易入门_第6张图片
上面配置都是默认分组,我们也可以自定义分组()和命名空间(namespace)。

5.配置好之后启动调用接口获取配置信息http://localhost:3377/config/info
Spring Cloud Alibaba Nacos 简易入门_第7张图片

你可能感兴趣的:(Springcloud)