您现在的位置是:首页 >其他 >SpringCloud 微服务系列——Spring Cloud Alibaba 微服务工具集网站首页其他

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

Java Fans 2024-06-14 17:17:16
简介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

  • https://github.com/alibaba/nacos/releases

在这里插入图片描述

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
@Slf4j
public class HelloController {
    //注入配置
    @Value("${user.name}")
    private String username;
    @GetMapping("/hello/config")
    public String config(){
        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
@RefreshScope
public class HelloController {
    //注入配置
    @Value("${user.name}")
    private String username;
    @GetMapping("/hello/config")
    public String config(){
        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界面

  • http://localhost:8080/#/login

    在这里插入图片描述

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
@Slf4j
public class SentinelController {
    @GetMapping("/sentinel/test")
    public String test(){
        log.info("sentinel test");
        return "sentinel test ";
    }

    @GetMapping("/sentinel/test1")
    public String test1(){
        log.info("sentinel test1");
        return "sentinel test1 ";
    }
}

启动进行调用

  • http://localhost:8080/sentinel/test

在这里插入图片描述

查看监控界面

在这里插入图片描述


  码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

在这里插入图片描述

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。