✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:SpringCloud 微服务学习专栏
✨特色专栏:国学周更-心性养成之路
🥭本文内容:SpringCloud 微服务系列——Spring Cloud Alibaba 微服务工具集
文章目录
Spring Cloud Alibaba 是一个基于 Spring Cloud 的微服务工具集,它提供了一系列的组件和工具,帮助开发者快速构建和部署微服务应用。其中包括服务注册与发现、配置中心、消息总线、负载均衡、熔断器、限流器、分布式事务等功能。Spring Cloud Alibaba 还提供了一些特有的组件,如 Nacos、Sentinel、Seata 等,这些组件都是阿里巴巴在实际业务中使用的成熟技术,具有高可用、高性能、易用性等优点。通过使用 Spring Cloud Alibaba,开发者可以更加轻松地构建和管理微服务应用,提高开发效率和系统稳定性。
当前阿里巴巴版本为 2.2.1,Boot版本为 2.2.5。
1.简介
Spring Cloud Alibaba provides a one-stop solution for distributed application development. It contains all the components required to develop distributed applications, making it easy for you to develop your applications using Spring Cloud.
- spring cloud 用来解决微服务系统中(分布式系统)解决方案
- spring cloud alibaba 用来解决微服务系统中解决方案
With Spring Cloud Alibaba, you only need to add some annotations and a small amount of configurations to connect Spring Cloud applications to the distributed solutions of Alibaba, and build a distributed application system with Alibaba middleware.
2.环境搭建
要搭建 Spring Cloud Alibaba 微服务工具集环境,需要按照以下步骤进行:
- 安装 JDK:首先需要安装 JDK,建议使用 JDK 8 或以上版本。
- 安装 Maven:Spring Cloud Alibaba 微服务工具集使用 Maven 进行项目管理,需要安装 Maven。
- 创建 Spring Boot 项目:使用 Spring Initializr 创建一个 Spring Boot 项目,选择需要的依赖,包括 Spring Cloud Alibaba 的相关依赖。
- 配置 Nacos:Nacos 是 Spring Cloud Alibaba 提供的服务注册与发现组件,需要在项目中配置 Nacos 的地址和端口号。
- 配置 Sentinel:Sentinel 是 Spring Cloud Alibaba 提供的流量控制和熔断降级组件,需要在项目中配置 Sentinel 的相关参数。
- 配置 Seata:Seata 是 Spring Cloud Alibaba 提供的分布式事务组件,需要在项目中配置 Seata 的相关参数。
- 编写业务代码:根据项目需求编写业务代码,使用 Spring Cloud Alibaba 提供的组件和工具进行开发。
- 运行项目:使用 Maven 进行项目打包,然后在命令行中运行项目。
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version></parent><properties><spring.cloud.alibaba.version>2.2.1.RELEASE</spring.cloud.alibaba.version><spring.cloud-version>Hoxton.SR6</spring.cloud-version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring.cloud.alibaba.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring.cloud-version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
3.Nacos
什么是Nacos Name Service(服务注册与发现) & Configurations Services(统一配置中心)
- https://nacos.io/zh-cn/index.html
- Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
- https://nacos.io/zh-cn/index.html
- Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
安装Nacos
准备环境
- 1.64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。必须满足
- 2.64 bit JDK 1.8+;下载 & 配置。 必须满足
- 3.Maven 3.2.x+;下载 & 配置。
1.下载nacos
2.解压缩安装包到指定位置
- [root@localhost ~]# tar -zxvf nacos-server-1.3.1.tar.gz
- bin 启动nacos服务的脚本目录
- conf nacos的配置文件目录
- target nacos的启动依赖存放目录
- data nacos启动成功后保存数据的目录
3.启动安装服务
- linux/unix/mac启动 打开终端进入nacos的bin目录执行如下命令 ./startup.sh -m standalone
- windows启动 在 cmd中 执行 startup.cmd -m standalone
4.访问nacos的web服务管理界面
- http://localhost:8848/nacos/
- 用户名 和 密码都是nacos
开发服务注册到nacos
<!--引入nacos client的依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
1.配置注册地址
server.port=8789 #指定当前服务端口
spring.application.name=nacosclient # 指定服务名称
spring.cloud.nacos.server-addr=localhost:8848 #指定nacos服务地址
spring.cloud.nacos.discovery.server-addr=${spring.cloud.nacos.server-addr} #指定注册中心地址
management.endpoints.web.exposure.include=* #暴露所有web端点
-------------------------------------------
server:
port: 8851
spring:
application:
name: ORDERS
cloud:
nacos:
server-addr: localhost:8848
2.加入启动服务注册注解
3.查看nacos的服务列表
点击详情
点击编辑
<img src="springcloud.assets/image-20230222211748920.png"
alt="image-20230222211748920" style="zoom: 50%;"/>
权重生效需要设置负载均衡策略为NacosRule,否则不生效
NACOSCLIENT:# 被调用服务的名称ribbon:NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
4.使用nacos作为配置中心
1.创建项目并引入nacons配置中心依赖
<!--引入nacos client 依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--引入配置中心依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>
2.配置配置中心地址
spring.cloud.nacos.server-addr=localhost:8848 # 远程配置中心的地址
spring.cloud.nacos.config.server-addr=${spring.cloud.nacos.server-addr} # 去指定nacos地址读取配置
spring.cloud.nacos.config.group=DEFAULT_GROUP # 读取配置的分组
spring.cloud.nacos.config.file-extension=properties # 指定读取文件后缀
spring.application.config.name=config # 指定读取文件的前缀
----------------------------------------------
spring:
cloud:
nacos:
server-addr: localhost:8848
config:
group: DEFAULT_GROUP
name: user-dev
file-extension: yml
namespace: public
3.在nacos中创建配置
4.编写控制器测试配置读取情况
@RestController@Slf4jpublicclassHelloController{//注入配置@Value("${user.name}")privateString username;@GetMapping("/hello/config")publicStringconfig(){
log.info("用户名: [{}]",username);return username;}}
5.启动项目测试配置读取
DataId
1.DataId
- 用来读取远程配置中心的中具体配置文件其完整格式如下:
- ${prefix}-${spring.profile.active}.${file-extension}
a. prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
b. spring.profile.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
c. file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
实现自动配置刷新
1.自动刷新
- 默认情况下nacos已经实现了自动配置刷新功能,如果需要刷新配置直接在控制器中加入@RefreshScope注解即可
@RestController@Slf4j@RefreshScopepublicclassHelloController{//注入配置@Value("${user.name}")privateString username;@GetMapping("/hello/config")publicStringconfig(){
log.info("用户名: [{}]",username);return username;}}
日志频繁刷新,可设置日志输出的级别进行调整
# Nacos 注册中心客户端心跳日志禁用 get changedGroupKeys:[] logging:level:com.alibaba.nacos.client.config.impl: WARN
5.sentinel 流量卫兵
什么是sentinel
sentinel使用
- sentinel提供了两个服务组件:
一个是 sentinel 用来实现微服务系统中服务熔断、降级等功能。 这点和hystrix 类似
一个是 sentinel dashboard 用来监控微服务系统中流量调用等情况 流控 熔断 降级 配置。 这点和hystrix dashboard类似
1. sentinel dashboard的安装
# 1.下载
- https://github.com/alibaba/Sentinel/releases
2.启动
- 仪表盘是个jar包可以直接通过java命令启动 如: java -jar 方式运行 默认端口为 8080
- java -Dserver.port=9191 -jar sentinel-dashboard-1.7.2.jar
3.访问web界面
4.登录
- 用户名&密码: sentinel
sentinel 实时监控服务
# 1.创建项目引入依赖
<!--引入nacos client依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--引入sentinel依赖--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>
配置
server.port=8789
spring.application.name=nacosclient
spring.cloud.nacos.server-addr=localhost:8848
spring.cloud.nacos.discovery.server-addr=${spring.cloud.nacos.server-addr}
spring.cloud.sentinel.enabled=true # 开启sentinel 默认开启
spring.cloud.sentinel.transport.dashboard=localhost:9191# 连接dashboard
spring.cloud.sentinel.transport.port=8719
启动服务
访问dashboard界面查看服务监控
- 发现界面什么都没有?
- 默认情况下sentiel为延迟加载,不会在启动之后立即创建服务监控,需要对服务进行调用时才会初始化
开发服务
@RestController@Slf4jpublicclassSentinelController{@GetMapping("/sentinel/test")publicStringtest(){
log.info("sentinel test");return"sentinel test ";}@GetMapping("/sentinel/test1")publicStringtest1(){
log.info("sentinel test1");return"sentinel test1 ";}}
启动进行调用
查看监控界面
码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识,点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。
版权归原作者 Java Fans 所有, 如有侵权,请联系我们删除。