栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

nacos的学习

Java 更新时间:发布时间: 百科书网 趣学号

文章目录
  • 一、nacos配置中心
      • 1.docker启动nacos
      • 2.访问http://localhost:8848/nacos,用户名/密码:nacos/nacos
      • 3.搭建springboot项目
      • 4.springboot整合nacos配置中心
      • 5.controller上加注解`@RefreshScope`,否则不会自动刷新
      • 6.在http://localhost:8848/nacos上新建配置
      • 7.启动项目
      • 8.命名空间的使用
  • 二、nacos注册中心
      • 1.搭建一个消费者项目
      • 2.启动
      • 3.负载均衡问题

一、nacos配置中心 1.docker启动nacos
docker run --env MODE=standalone --restart=always --name ybchen-nacos1 -d -p 8848:8848 nacos/nacos-server
2.访问http://localhost:8848/nacos,用户名/密码:nacos/nacos


至此nacos启动成功

3.搭建springboot项目

先搭建springboot环境
pom.xml导入依赖



	com.alibaba.cloud
	spring-cloud-starter-alibaba-nacos-config
	2021.1

application.yml

server:
  port: 8080

spring:
  application:
    name: springboot-nacos
  profiles:
    active: dev

application-dev.yml

spring:
  datasource:
    username: root
    password: 123456

ConfigController.java

@RestController
@RequestMapping("config")
public class ConfigController {

    @Value("${spring.datasource.username}")
    private String username;

    @Value("${spring.datasource.password}")
    private String password;

    @GetMapping("/datasource")
    public String getMessage() {
        return "
username:" + username + "
password:" + password; } }

启动访问http://localhost:8080/config/datasource

4.springboot整合nacos配置中心

pom.xml加依赖


	org.springframework.cloud
	spring-cloud-starter-bootstrap
	3.0.4

巨坑:这个依赖一定要加!!!springboot不会默认加载bootstrap 文件,需要这个依赖才能加载bootstrap文件,

新建bootstrap.yml

spring:
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        # 库存模块
        group: stock
        prefix: test
        file-extension: yml
5.controller上加注解@RefreshScope,否则不会自动刷新 6.在http://localhost:8848/nacos上新建配置



在 Nacos Spring Cloud 中,dataId 的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension}
  • prefix 默认为 spring.application.name 的值,也可以通过配置项spring.cloud.nacos.config.prefix来配置。
  • spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符-也将不存在,dataId 的拼接格式变成
    p r e f i x . {prefix}. prefix.{file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持properties 和 yaml
    类型。

group是在bootstrap.yml配置的

项目会根据Data ID+Group找配置

7.启动项目

访问http://localhost:8080/config/datasource,修改配置后,再次访问

8.命名空间的使用


bootstrap.yml

spring:
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        # 库存模块
        group: stock
        prefix: test
        file-extension: yml
        namespace: a2c0357f-4e2b-4eb9-852b-b1ca2e8fb22c

选择命名空间后,创建配置文件,这个配置文件就归属到这个命名空间下了

项目根据命名空间名+Data ID+Group找配置

namespcae分环境(开发环境、测试环境)
group分模块(库存模块、订单模块)

想通过test.yml线上改切换dev和pro,但没效果

二、nacos注册中心 1.搭建一个消费者项目

pom.xml



	com.alibaba.cloud
	spring-cloud-starter-alibaba-nacos-discovery
	2021.1


	org.springframework.cloud
	spring-cloud-starter-bootstrap
	3.0.4

SpringbootNacosConsumerApplication.java

@SpringBootApplication
@EnableDiscoveryClient
public class SpringbootNacosConsumerApplication {

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

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

NacosConsumerController.java

@RestController
public class NacosConsumerController {
    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
    public String echo(@PathVariable String str) {
        return restTemplate.getForObject("http://127.0.0.1:8080//echo/" + str, String.class);
    }

}

bootstrap.yml

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        # 库存模块
        group: order
        namespace: a2c0357f-4e2b-4eb9-852b-b1ca2e8fb22c

application.yml

server:
  port: 8081

spring:
  application:
    name: springboot-nacos-consumer
2.启动

3.负载均衡问题

但是加上了@LoadBalanced 就报错,折腾了好久没找到原因

@LoadBalanced
@Bean
public RestTemplate restTemplate() {
    return new RestTemplate();
}
@RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
public String echo(@PathVariable String str) {
    return restTemplate.getForObject("http://springboot-nacos//echo/" + str, String.class);
}

	org.springframework.cloud
	spring-cloud-starter-netflix-ribbon
	2.2.4.RELEASE


有解决兄弟的留言,谢谢

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/1077900.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号