应用于分布式系统-微服务读取配置 | 学习笔记

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 快速学习应用于分布式系统-微服务读取配置。

开发者学堂课程【Spring Cloud Alibaba Nacos 详解(上)应用于分布式系统-微服务读取配置】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/724/detail/12926


应用于分布式系统-微服务读取配置


内容介绍

一、如何读取配置


一、如何读取配置

应用程序的获取方式有很多种,我们可以采用直接在启动类上面加一个 restcontroller 下面写几个方法就可以了,这里我们只需要写一个具体的方法,然后方法上面加一个 ultra,双击通过 get 访问,我们用 Getmapping ,在这里注意我们要读取配置的信息,我们可以知道 Spring 有一个 Value 注解,可以读取 Value 值,所以学过的都知道,我们要做的就是用一个符号括住里面写上 Common,那符号里面的配置项就是 Common:name 值就是 Service1,所以这里面就可以写 Common.name. 这里面就是 Key,所以这就读取了 Key 的值。

通过注解读取信息,就是通过 Value 注解读取配置信息。所以就可以直接返回 name就完成了,然后保持一致,前后都是 Configs,然后来看运行,我们访问 Config,看能否把 key的 值返回去,可以看端口是5600,复制在谷歌里面,返回的结果就是service1 ConfigService1 就是我们看见的 value 值,这个就是我们采用 value 读取的配置,读取完如果想改动一下配置,在配置里面我们的配置信息改了,然后刷新并没有改变,可能服务端没有通知程序更改,我们原来看到的配置管理的流程,也就是配置中心里面有一个客服端。图片.png

我们加入的这个依赖,就是我们所说的 Nacos config 客服端. Nacos 客服端就会去读取这个配置因为和 Spring 整合了,通过 Value 注解的方式就可以配置信息,现在的问题是我们在 Nacos 上面更改了了配置内容之后现在发现最新的信息不能读取,并不是因为服务端没有通知我们的客服端,来更新配置,Value 注解是比较特殊的, Nacos 服务端是通知了 Nacos 客服端的,只是 Valve 注解没有把最新的配置信息配置进来,所以说如果我们想来实现动态的更新,是需要使用另外的方法,这种方法就是需要使用配置的上下文,然后从环境当中读取配置信息,我们就可以实时来更新,我们将它注进来,这是我们配置的上下文环境,还是 Spring 在这里原来的方法,现在要改成通过上下文环境来获取我们说的配置信息,这样一改就可以实现实时动态。

重启来看一下 刷新可以看到回到当时的流程,然后发布,就可以动态的看见使用 Alibaba 给我们提供的 Nacos 的客服端的方式,来整合 Nacos 服务来获取,刚才演示完就是 Service1 具体的,Service2 的过程跟 Service1是一样的,参考 Service1,自己在 Service2 微服务当中也写一个方法,来读取我们在 Nacos2 当中建的文件当中,看是否能够读取到,这里就完成了整个微服务的流程,发布配置到微服务获取配置的过程。

相关文章
|
9天前
|
运维 持续交付 开发工具
深入浅出:GitOps在微服务架构中的应用
【10月更文挑战第26天】本文深入探讨了GitOps在微服务架构中的应用,介绍了其核心理念、自动化部署流程和增强的可观测性。通过实例展示了GitOps如何简化服务部署、配置管理和故障恢复,并推荐了一些实用工具和开发技巧。
|
1天前
|
Go 数据处理 API
Go语言在微服务架构中的应用与优势
本文摘要采用问答形式,以期提供更直接的信息获取方式。 Q1: 为什么选择Go语言进行微服务开发? A1: Go语言的并发模型、简洁的语法和高效的编译速度使其成为微服务架构的理想选择。 Q2: Go语言在微服务架构中有哪些优势? A2: 主要优势包括高性能、高并发处理能力、简洁的代码和强大的标准库。 Q3: 文章将如何展示Go语言在微服务中的应用? A3: 通过对比其他语言和展示Go语言在实际项目中的应用案例,来说明其在微服务架构中的优势。
|
7天前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
39 1
|
18天前
|
存储 Kubernetes 监控
深度解析Kubernetes在微服务架构中的应用与优化
【10月更文挑战第18天】深度解析Kubernetes在微服务架构中的应用与优化
75 0
|
18天前
|
运维 Kubernetes 负载均衡
深入探索Kubernetes在微服务架构中的应用
【10月更文挑战第18天】深入探索Kubernetes在微服务架构中的应用
48 0
|
25天前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
3月前
|
NoSQL Redis
基于Redis的高可用分布式锁——RedLock
这篇文章介绍了基于Redis的高可用分布式锁RedLock的概念、工作流程、获取和释放锁的方法,以及RedLock相比单机锁在高可用性上的优势,同时指出了其在某些特殊场景下的不足,并提到了ZooKeeper作为另一种实现分布式锁的方案。
105 2
基于Redis的高可用分布式锁——RedLock
|
3月前
|
缓存 NoSQL Java
SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解分布式情况下如何添加分布式锁 【续篇】
这篇文章是关于如何在SpringBoot应用中整合Redis并处理分布式场景下的缓存问题,包括缓存穿透、缓存雪崩和缓存击穿。文章详细讨论了在分布式情况下如何添加分布式锁来解决缓存击穿问题,提供了加锁和解锁的实现过程,并展示了使用JMeter进行压力测试来验证锁机制有效性的方法。
SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解分布式情况下如何添加分布式锁 【续篇】
|
1天前
|
NoSQL Redis
Redis分布式锁如何实现 ?
Redis分布式锁通过SETNX指令实现,确保仅在键不存在时设置值。此机制用于控制多个线程对共享资源的访问,避免并发冲突。然而,实际应用中需解决死锁、锁超时、归一化、可重入及阻塞等问题,以确保系统的稳定性和可靠性。解决方案包括设置锁超时、引入Watch Dog机制、使用ThreadLocal绑定加解锁操作、实现计数器支持可重入锁以及采用自旋锁思想处理阻塞请求。
30 16
|
1月前
|
缓存 NoSQL Java
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
55 3
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
下一篇
无影云桌面