开发者学堂课程干货总结——Spring Cloud微服务架构设计与开发实战(二十六)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: Spring Cloud微服务架构设计与开发实战课时3.5—Nacos作为Spring Cloud配置中心。Java Spring Cloud是全球范围内最成熟、最完善、最流行的微服务架构方案体系。被众多的互联网大公司采用,包括阿里巴巴、腾讯、支付宝、网易、IBM、谷歌、京东、百度、滴滴等。电子书+视频为同学带来最佳学习效果,文字、课程链接、图谱地址统统为大家放送了哦!

哈喽各位同学们大家好呀,今天是开发者学院中课程“Spring Cloud微服务架构设计与开发实战”的章节三的Nacos作为Spring Cloud配置中心”干货总结~是一起学习新课程吧!

课程链接以及图谱地址小编已经为大家指路了,搭配学习效果更佳👇

课程名称:Nacos作为Spring Cloud配置中心

课程地址:https://developer.aliyun.com/learning/course/60/detail/1098

图谱名称:Alibaba Java 技术图谱

图谱地址:https://developer.aliyun.com/graph/java


Nacos作为Spring Cloud配置中心


()Nacos作为Spring Cloud配置中心  

1Nacos配置中心 

阿里开源Nacos的另外一个功能,统一配置中心,是对于方式集群大规模集群非常重要的一个功能点阿里开Nacos,实际是中心和配置中心为一身,是一个非常全能的工具 

Nacos启动阶段配置文件稍微特殊一点,有一个bootstrap文件 ,是加载普通配置之前执行的一个动作,优先启动的一个文件系统,会优先读取文件中的一些配置数据。 

  1. Spring Cloud Alibaba Nacos Config  
  2. Nacos提供用于存储配置和其他元数据的 key/value 存储,  
  3. 为分布式系统中的外部化配置提供服务器端和客户端支持。  
  4. 使用Spring Cloud Alibaba Nacos Config  
  5. 可以在Nacos Server 集中管理Spring Cloud 的外部属性配置。 
  6. Alibaba Nacos Config Config Server Client 的替代方案,  
  7. 客户端和服务器上的概念与 Spring Environment PropertySource 着一致的抽象, 
  8. bootstrap 启动阶段,配置被加载到 Spring 环境中。  
  9. 当应用程序通过部署管道从开发到测试再到生产时,  
  10. 可以管理不同环境dev\test\pro的配置,  
  11. 并确保应用程序具有迁移时需要运行的所有内容。 

 

2Nacos配置服务  

  1. Nacos也支持配置服务  
  2. 统一微服务集群的配置信息 
  3. 支持配置的动态更新 
  4. 可支持profile粒度的配置 
  5. 支持自定义 namespace 的配置做资源管理配置数据可到开发测试生产环境有了命空间,里面找对应的一个配置数据,进行推送下发主要便于实现配置的更新和推送管理 
  6. 支持自定义 Group 的配置主要是分组去管理服务的 
  7. 支持自定义扩展的 Data Id 配置 
  8. 配置的优先级 
  9. 可以通过Spring${spring.profiles.active} 配置多套环境 
  10. 微服务项目需要spring-cloud-starter-alibaba-nacos-config 
  11. 支持两种配置文件格式:  

bootstrap.properties  

bootstrap.yml 

 

(二)微服务集成Nacos配置中心  

1Nacos配置中心实战  

•启动Nacos服务  

Nacos添加配置参数  

•修改客户端,连接Nacos配置中心  

•注意: 

版本2.1.x.RELEASE对应的是Spring Boot 2.1.x 版本。 

2.0.x.RELEASE对应的是Spring Boot 2.0.x 版本, 

1.5.x.RELEASE对应的是Spring Boot 1.5.x 版本。 

2客户端配置  

<dependency>  

<groupId>com.alibaba.cloud</groupId>  

<artifactId>spring-cloud-starter-alibaba-nacosconfig</artifactId>  

</dependency> 

 

3、微服务集成Nacos配置中心 

bootstrap.propertie配置Nacos Server 地址  

spring.application.name=nacos-config  

spring.cloud.nacos.config.server-addr=127.0.0.1:8848 

 

4Nacos支持动态刷新配置  

•通过配置 spring.cloud.nacos.config.refresh.enabled=false 来关闭动态刷新 

动态更新,启动的更新本质上是自动会刷新配置,一边改完以后,另一边会迅速读到通过线程读取线程去远端去进行拉取操作。 

原始的APP协议,本身并不是双工通信,单向的 

 

  1. 更新配置实战效果 

image.png 

 

6Spring Cloud配置参数变 

image.png 

 

7Spring Cloud配置参数变化 

image.png 

 

  1. Spring Cloud配置参数变化 

image.png 

 

  1. Nacos配置中心其他功能  

实战案例 

配置服务可以是普通的微服务项目,普通微服务项目改造config依赖,因为要实现配置,如简单的配置推送拉取这是config独有的。 

image.png 

配置文件定义就按照下图规则来做 

image.png 

关键的配置选的活动状态是devdev模式就是开发环境,要保证和配置中心要统一这里端口稍微改了,8787通过这样一个配置,读取Nacos配置中心最新的配置数据,然后在本地做一个展示。 

image.png 

展示通过拟定了一个简单动态的变量来测试,主要是定义了一个用户名,一个密码两个变量,通过围绕注解,让它自动去加载最新的变量值 

image.png 

启用注解,refresh主要作用自动去背后线程去拉取注册中心最新的值。 

image.png 

默认值,一个是Java一个是1234qwer 

image.png 

通过接口来调用,返回最新的用户密码,所以这里面如果之前用户密码是Java1234qwer的话,正常配置中心推送完新的配置后,重新查询,应该返回新的值 

正常加载bootstreap再加载 Applcation 

image.png 

  1. 支持profile粒度的配置 

spring-cloud-starter-alibaba-nacos-config 在加载配置的时 候,不仅仅加载了以dataid ${spring.application.name}.${file-extension:properties} 为前 缀的基础配置。 

•还加载了dataid ${spring.application.name}${profile}.${file-extension:properties} 的基础配置。  

•在日常开发中如果遇到多套环境下的不同配置,可以通过Spring 提供的 ${spring.profiles.active} 这个配置项来配置。  

spring.profiles.active=dev  

spring.profiles.active=test  

spring.profiles.active=pro 

 

  1. 支持自定义 namespace 的配置 

 用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group Data ID 的配置。Namespace 的常用场景之一是不同环境的配 置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离 等。  

•在没有明确指定 ${spring.cloud.nacos.config.namespace} 配置的情况下, 默认使用的是 Nacos  Public 这个namespae。如果需要使用自定义的命 名空间,可以通过以下配置来实现:  

spring.cloud.nacos.config.namespace=b3404bc0-d7dc-4855-b519570ed34b62d7  

•该配置必须放在 bootstrap.properties 文件中。此外 spring.cloud.nacos.config.namespace 的值是 namespace 对应的 id id 值可以在 Nacos 的控制台获取。并且在添加配置时注意不要选择其他的 namespae,否则将会导致读取不到正确的配置 

 

  1. 支持自定义 Group 的配置  

•在没有明确指定 ${spring.cloud.nacos.config.group} 配置的情 况下, 默认使用的是 DEFAULT_GROUP   

•如果需要自定义自己的 Group,可以通过以下配置来实现:  

spring.cloud.nacos.config.group=DEVELOP_GROUP  

•该配置必须放在 bootstrap.properties 文件中。并且在添加配 置时 Group 的值一定要和 spring.cloud.nacos.config.group 的配置值一致。 

 

  1. 支持自定义扩展的 Data Id 配置 

Spring Cloud Alibaba Nacos Config 0.2.1 版本后,可支持自定义 Data Id 的配置。关于这部分详 细的设计可参考 这里。 一个完整的配置案例如下所示: 

spring.application.name=opensource-service-provider  

 spring.cloud.nacos.config.server-addr=127.0.0.1:8848 

# config external configuration  

# 1Data Id 在默认的组 DEFAULT_GROUP,不支持配置的动态刷新  

 spring.cloud.nacos.config.extension-configs[0].data-id=ext-config-common01.properties 

# 2Data Id 不在默认的组,不支持动态刷新  

 spring.cloud.nacos.config.extension-configs[1].data-id=ext-config-common02.properties  

 spring.cloud.nacos.config.extension-configs[1].group=GLOBALE_GROUP 

# 3Data Id 既不在默认的组,也支持动态刷新  

 spring.cloud.nacos.config.extension-configs[2].data-id=ext-config-common03.properties  

 spring.cloud.nacos.config.extension-configs[2].group=REFRESH_GROUP  

 spring.cloud.nacos.config.extension-configs[2].refresh=true 

 

  1. 配置的优先级  

Spring Cloud Alibaba Nacos Config 目前提供了三种配置能力  Nacos 拉取相关的配置。  

A: 通过 spring.cloud.nacos.config.shared-configs[n].data-id 支持多个共享 Data Id 的配置  

B: 通过 spring.cloud.nacos.config.extensionconfigs[n].data-id 的方式支持多个扩展 Data Id 的配置  

C: 通过内部相关规则(应用名、应用名+ Profile )自动生成相关的 Data Id 配置  

•当三种方式共同使用时,他们的一个优先级关系是:A < B < C 

相关文章
|
5天前
|
NoSQL Java 关系型数据库
微服务——SpringBoot使用归纳——Spring Boot 中集成Redis——Redis 介绍
本文介绍在 Spring Boot 中集成 Redis 的方法。Redis 是一种支持多种数据结构的非关系型数据库(NoSQL),具备高并发、高性能和灵活扩展的特点,适用于缓存、实时数据分析等场景。其数据以键值对形式存储,支持字符串、哈希、列表、集合等类型。通过将 Redis 与 Mysql 集群结合使用,可实现数据同步,提升系统稳定性。例如,在网站架构中优先从 Redis 获取数据,故障时回退至 Mysql,确保服务不中断。
34 0
微服务——SpringBoot使用归纳——Spring Boot 中集成Redis——Redis 介绍
|
5天前
|
安全 Java Apache
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 身份和权限认证
本文介绍了 Apache Shiro 的身份认证与权限认证机制。在身份认证部分,分析了 Shiro 的认证流程,包括应用程序调用 `Subject.login(token)` 方法、SecurityManager 接管认证以及通过 Realm 进行具体的安全验证。权限认证部分阐述了权限(permission)、角色(role)和用户(user)三者的关系,其中用户可拥有多个角色,角色则对应不同的权限组合,例如普通用户仅能查看或添加信息,而管理员可执行所有操作。
32 0
|
5天前
|
安全 Java 数据安全/隐私保护
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 三大核心组件
本课程介绍如何在Spring Boot中集成Shiro框架,主要讲解Shiro的认证与授权功能。Shiro是一个简单易用的Java安全框架,用于认证、授权、加密和会话管理等。其核心组件包括Subject(认证主体)、SecurityManager(安全管理员)和Realm(域)。Subject负责身份认证,包含Principals(身份)和Credentials(凭证);SecurityManager是架构核心,协调内部组件运作;Realm则是连接Shiro与应用数据的桥梁,用于访问用户账户及权限信息。通过学习,您将掌握Shiro的基本原理及其在项目中的应用。
30 0
|
5天前
|
Java 数据安全/隐私保护 微服务
微服务——SpringBoot使用归纳——Spring Boot中使用监听器——Spring Boot中自定义事件监听
本文介绍了在Spring Boot中实现自定义事件监听的完整流程。首先通过继承`ApplicationEvent`创建自定义事件,例如包含用户数据的`MyEvent`。接着,实现`ApplicationListener`接口构建监听器,用于捕获并处理事件。最后,在服务层通过`ApplicationContext`发布事件,触发监听器执行相应逻辑。文章结合微服务场景,展示了如何在微服务A处理完逻辑后通知微服务B,具有很强的实战意义。
21 0
|
5天前
|
缓存 Java 数据库
微服务——SpringBoot使用归纳——Spring Boot中使用监听器——监听器介绍和使用
本文介绍了在Spring Boot中使用监听器的方法。首先讲解了Web监听器的概念,即通过监听特定事件(如ServletContext、HttpSession和ServletRequest的创建与销毁)实现监控和处理逻辑。接着详细说明了三种实际应用场景:1) 监听Servlet上下文对象以初始化缓存数据;2) 监听HTTP会话Session对象统计在线用户数;3) 监听客户端请求的Servlet Request对象获取访问信息。每种场景均配有代码示例,帮助开发者理解并应用监听器功能。
22 0
|
5天前
|
Java 关系型数据库 数据库
微服务——SpringBoot使用归纳——Spring Boot事务配置管理——常见问题总结
本文总结了Spring Boot中使用事务的常见问题,虽然通过`@Transactional`注解可以轻松实现事务管理,但在实际项目中仍有许多潜在坑点。文章详细分析了三个典型问题:1) 异常未被捕获导致事务未回滚,需明确指定`rollbackFor`属性;2) 异常被try-catch“吃掉”,应避免在事务方法中直接处理异常;3) 事务范围与锁范围不一致引发并发问题,建议调整锁策略以覆盖事务范围。这些问题看似简单,但一旦发生,排查难度较大,因此开发时需格外留意。最后,文章提供了课程源代码下载地址,供读者实践参考。
22 0
|
5天前
|
Java 关系型数据库 数据库
微服务——SpringBoot使用归纳——Spring Boot事务配置管理——Spring Boot 事务配置
本文介绍了 Spring Boot 中的事务配置与使用方法。首先需要导入 MySQL 依赖,Spring Boot 会自动注入 `DataSourceTransactionManager`,无需额外配置即可通过 `@Transactional` 注解实现事务管理。接着通过创建一个用户插入功能的示例,展示了如何在 Service 层手动抛出异常以测试事务回滚机制。测试结果表明,数据库中未新增记录,证明事务已成功回滚。此过程简单高效,适合日常开发需求。
26 0
|
5天前
|
Java 数据库 微服务
微服务——SpringBoot使用归纳——Spring Boot事务配置管理——事务相关
本文介绍Spring Boot事务配置管理,阐述事务在企业应用开发中的重要性。事务确保数据操作可靠,任一异常均可回滚至初始状态,如转账、购票等场景需全流程执行成功才算完成。同时,事务管理在Spring Boot的service层广泛应用,但根据实际需求也可能存在无需事务的情况,例如独立数据插入操作。
17 0
|
5天前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于 xml 的整合
本教程介绍了基于XML的MyBatis整合方式。首先在`application.yml`中配置XML路径,如`classpath:mapper/*.xml`,然后创建`UserMapper.xml`文件定义SQL映射,包括`resultMap`和查询语句。通过设置`namespace`关联Mapper接口,实现如`getUserByName`的方法。Controller层调用Service完成测试,访问`/getUserByName/{name}`即可返回用户信息。为简化Mapper扫描,推荐在Spring Boot启动类用`@MapperScan`注解指定包路径避免逐个添加`@Mapper`
24 0
|
5天前
|
消息中间件 存储 Java
微服务——SpringBoot使用归纳——Spring Boot中集成ActiveMQ——ActiveMQ安装
本教程介绍ActiveMQ的安装与基本使用。首先从官网下载apache-activemq-5.15.3版本,解压后即可完成安装,非常便捷。启动时进入解压目录下的bin文件夹,根据系统选择win32或win64,运行activemq.bat启动服务。通过浏览器访问`http://127.0.0.1:8161/admin/`可进入管理界面,默认用户名密码为admin/admin。ActiveMQ支持两种消息模式:点对点(Queue)和发布/订阅(Topic)。前者确保每条消息仅被一个消费者消费,后者允许多个消费者同时接收相同消息。
32 0
微服务——SpringBoot使用归纳——Spring Boot中集成ActiveMQ——ActiveMQ安装