0


SpringCloud 微服务系列——Spring Cloud Alibaba 微服务工具集

在这里插入图片描述

✅作者简介: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服务管理界面

在这里插入图片描述

开发服务注册到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知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

在这里插入图片描述


本文转载自: https://blog.csdn.net/hh867308122/article/details/130568582
版权归原作者 Java Fans 所有, 如有侵权,请联系我们删除。

“SpringCloud 微服务系列——Spring Cloud Alibaba 微服务工具集”的评论:

还没有评论