2024年Java最全配置中心 Nacos 简介、入门 拉取远程配置和动态刷新配置功能介绍,深入浅出Java性能调优

总目录展示

该笔记共八个节点(由浅入深),分为三大模块。

高性能。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。该笔记将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这4个方面重点介绍。

一致性。 秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。

高可用。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。


篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)

由于内容太多,这里只截取部分的内容。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

spring-boot-maven-plugin

2.3.7.RELEASE

com.laker.config.ConfigApplication

repackage

repackage

启动Nacos Server

参考解决Nacos Server国内下载速度缓慢的问题下载启动

用户名密码默认都是:nacos

Nacos Server添加配置

  • Nacos Server配置

  • bootstrap.yml配置

  • 代码配置

整体如下图:

在这里插入图片描述

常用功能介绍


仅描述如何使用,原理参考后面文章。

使用 Nacos Config 作为 Spring Cloud 分布式配置

启动类

@SpringBootApplication

public class NacosConfigSampleApplication {

public static void main(String[] args) {

SpringApplication.run(NacosConfigSampleApplication.class, args

);

}

}

配置类

@RestController

@RequestMapping(“/config”)

public class ConfigController {

@Value(“${laker.name}”)

private String lakerName;

@RequestMapping(“/get”)

public String get() {

return lakerName;

}

}

验证

浏览器访问:http://ip:port/config/get.

使用 Nacos Config 实现 Bean 动态刷新

​ Nacos Confg 支持标准 Spring Cloud @ RefreshScope特性,即应用订阅某个Nacos 配置后,当配置内容变化时,Refresh Scope Beans 中的绑定配置的属性将有条件的更新。所谓的条件是指 Bean 必须:

  • 必须条件:Bean 的声明类必须标注 @RefreshScope

  • 二选一条件

  • 属性(非 static 字段)标注 @Value

  • @ConfigurationProperties Bean

​ 除此之外,Nacos Confg 也引入了 Nacos Client 底层数据变化监听接口,

即 com.alibaba.nacos.api.config.listener.Listener。下面的内容将分别讨论这三种不同

的使用场景。

Nacos Client:Nacos 客户端 API,也是 Nacos Config 底层依赖

Bean @Value 属性动态刷新

@RestController

@RequestMapping(“/config”)

@RefreshScope

public class ConfigController {

@Value(“${laker.name}”)

private String lakerName;

@RequestMapping(“/get”)

public String get() {

return lakerName;

}

@PostConstruct

public void init() {

System.out.printf("—[init]— laker name : %s ", lakerName);

}

}

@ConfigurationProperties Bean属性动态刷新
  • 激活 @ConfigurationProperties Bean @EnableConfigurationProperties(

User.class)。

  • 通过 @Autowired 依赖注入 User Bean。

@RefreshScope

@ConfigurationProperties(prefix = “laker”)

public class User {

private String name;

private int age;

}

启动类

@EnableConfigurationProperties(User.class)

@SpringBootApplication

public class NacosConfigSampleApplication {

public static void main(String[] args) {

SpringApplication.run(NacosConfigSampleApplication.class, args

);

}

}

使用 Nacos g Config 监听实现 Bean 属性动态刷新

​ 前文曾提及 com.alibaba.nacos.api.config.listener.Listener 是 Nacos ClientAPI 标准的配置监听器接口,由于仅监听配置内容,并不能直接与 Spring 体系打通,因此,需要借助于 Spring Cloud Alibaba Nacos Config API NacosConfigManager

@SpringBootApplication

public class NacosConfigSampleApplication {

@Autowired

private NacosConfigManager nacosConfigManager;

public static void main(String[] args) {

SpringApplication.run(NacosConfigSampleApplication.class, args

);

}

@Bean

public ApplicationRunner runner() {

return args -> {

String dataId = “laker-dev.yaml”;

String group = “DEFAULT_GROUP”;

nacosConfigManager.getConfigService().addListener(dataId, group, new

AbstractListener() {

@Override

public void receiveConfigInfo(String configInfo) {

System.out.println("[Listener] " + configInfo);

}

});

};

}

}

[Listener] laker:

name: laker1222222

参考:

更多:Java进阶核心知识集

包含:JVM,JAVA集合,网络,JAVA多线程并发,JAVA基础,Spring原理,微服务,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存等等

image

高效学习视频

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

参考:

更多:Java进阶核心知识集

包含:JVM,JAVA集合,网络,JAVA多线程并发,JAVA基础,Spring原理,微服务,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存等等

[外链图片转存中…(img-cyi4fsZg-1714898399765)]

高效学习视频

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对您的问题,您可以参考以下的Java代码来实现动态刷新nacos配置: 1. 首先,需要导入nacos-client的依赖,具体可以在项目中的pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>1.1.3</version> </dependency> ``` 2. 接着,可以参考以下Java代码实现动态刷新nacos配置: ```java import com.alibaba.nacos.api.NacosFactory; import com.alibaba.nacos.api.config.ConfigService; import com.alibaba.nacos.api.config.listener.Listener; import com.alibaba.nacos.api.exception.NacosException; import java.util.Properties; public class NacosConfigListener { public static void main(String[] args) throws NacosException { String serverAddr = "localhost:8848"; // nacos server地址 String dataId = "demo"; // 配置的dataId String group = "DEFAULT_GROUP"; // 配置的group Properties properties = new Properties(); properties.put("serverAddr", serverAddr); ConfigService configService = NacosFactory.createConfigService(properties); String content = configService.getConfig(dataId, group, 5000L); System.out.println("当前配置:" + content); // 监听配置变化 configService.addListener(dataId, group, new Listener() { @Override public void receiveConfigInfo(String configInfo) { System.out.println("配置发生变化:" + configInfo); } @Override public Executor getExecutor() { return null; } }); } } ``` 以上代码实现了监听nacos配置的变化,当配置发生变化时,会触发Listener的receiveConfigInfo方法,您可以在该方法里面实现自己的业务逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值