SpringCloudAlibaba-Nacos

概述和版本说明

xml 复制代码
<spring.boot.version>3.2.0</spring.boot.version>
<spring.cloud.version>2023.0.0</spring.cloud.version>
<spring.cloud.alibaba.version>2022.0.0.0</spring.cloud.alibaba.version>

注册中心,配置中心及动态刷新广播通知

Spring Cloud Alibaba 参考文档 (spring-cloud-alibaba-group.github.io)

下载安装使用

Release 2.2.3 (May 25th, 2023) · alibaba/nacos (github.com)

shell 复制代码
D:\tool\nacos-server-2.2.3\nacos\bin>startup.cmd -m standalone

服务注册中心

provider

xml 复制代码
<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
yaml 复制代码
server:
  port: 9001
spring:
  application:
    name: nacos-pay-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos地址
java 复制代码
@SpringBootApplication
@EnableDiscoveryClient
public class Main9001 {

    public static void main(String[] args) {
        SpringApplication.run(Main9001.class, args);
    }
}
java 复制代码
@RestController
public class PayAlibabaController {

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

    @GetMapping("/pay/nacos/{id}")
    public String getPayInfo(@PathVariable("id") Integer id) {
        return "nacos registry serverPost: " + serverPort + ", id: " + id;
    }
}

consumer

需要额外添加 load-balance 依赖

yaml 复制代码
server:
  port: 9000
spring:
  application:
    name: nacos-order-consume
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos地址

service-url:
  nacos-user-service: http://nacos-pay-provider

配置 RestTemplate

java 复制代码
@RestController
public class OrderController {

    @Resource
    private RestTemplate restTemplate;

    @Value("${service-url.nacos-user-service}")
    private String serverURL;

    @GetMapping("/order/pay/nacos/{id}")
    public String paymentInfo(@PathVariable("id") Integer id) {
        return restTemplate.getForObject(serverURL + "/pay/nacos/" + id, String.class);
    }

}

-DServer.port=9002

GET http://localhost:9000/order/pay/nacos/112 测试负载均衡 端口 9001 9002 交替出现

服务配置中心和动态刷新

xml 复制代码
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-bootstrap</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>

也是需要 bootstrap

yaml 复制代码
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        server-addr: localhost:8848
        file-extension: yaml
java 复制代码
@RestController
@RefreshScope // 支持动态刷新功能
public class NacosConfigClientController {

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

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

nacos 中配置匹配规则

nacos-config-client-dev.yaml

测试接口和动态刷新

ps: nacos 历史配置回滚功能

Nacos数据模型 Namespace-Group-DataId三元组

解决多项目多环境配置问题

DataId 方案

使用默认 Namespace 默认 Group

不同 DataId,使用服务名+环境名来区分

Group 方案

通过Group实现环境区分,默认 Namespace

新建 group PROD_GROUP 的配置

Namespace 环境区分

新建命名空间 Prod_Namespace,不填写id,会自动生成

相关推荐
Miraitowa_cheems18 分钟前
LeetCode算法日记 - Day 81: 最大子数组和
java·数据结构·算法·leetcode·决策树·职场和发展·深度优先
CodeCraft Studio24 分钟前
国产化Word处理控件Spire.Doc教程:用Java实现TXT文本与Word互转的完整教程
java·c#·word·spire.doc·word文档转换·txt转word·word转txt
徐子童30 分钟前
数据结构---优先级队列(堆)
java·数据结构·面试题·优先级队列··topk问题
滑水滑成滑头35 分钟前
**标题:发散创新:智能交通系统的深度探究与实现**摘要:本文将详细
java·人工智能·python
siriuuus1 小时前
Maven 核心概念及生命周期
java·maven
闭着眼睛学算法1 小时前
【双机位A卷】华为OD笔试之【哈希表】双机位A-跳房子I【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
java·c语言·c++·python·算法·华为od·散列表
孔明兴汉1 小时前
Cursor MCP 第一章-第一节-MCP协议简介.md
java·ai
信仰_2739932431 小时前
枚举类Enum反编译后效果
java·开发语言
TDengine (老段)1 小时前
TDengine 数学函数 LOG 用户手册
java·大数据·数据库·时序数据库·iot·tdengine·涛思数据
青皮桔1 小时前
Java+OpenCV实现图片切割
java·后端·opencv·计算机视觉