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

news2024/11/16 11:33:34

在这里插入图片描述

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:SpringCloud 微服务学习专栏
✨特色专栏:国学周更-心性养成之路
🥭本文内容:SpringCloud 微服务系列——Spring Cloud Alibaba 微服务工具集

文章目录

    • 1.简介
    • 2.环境搭建
    • 3.Nacos
      • 什么是Nacos Name Service(服务注册与发现) & Configurations Services(统一配置中心)
      • 安装Nacos
        • 准备环境
        • 1.下载nacos
        • 2.解压缩安装包到指定位置
        • 3.启动安装服务
        • 4.访问nacos的web服务管理界面
      • 开发服务注册到nacos
        • 1.配置注册地址
        • 2.加入启动服务注册注解
        • 3.查看nacos的服务列表
    • 4.使用nacos作为配置中心
        • DataId
        • 实现自动配置刷新
    • 5.sentinel 流量卫兵
      • 什么是sentinel
      • sentinel使用
      • sentinel 实时监控服务
      • 配置
      • 启动服务
      • 访问dashboard界面查看服务监控
      • 开发服务
      • 启动进行调用
      • 查看监控界面

在这里插入图片描述
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知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/503923.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FreeRTOS内核:详解Task各状态(GPT4帮写)

FreeRTOS内核&#xff1a;详解Task各状态&#xff08;GPT4帮写&#xff09; 1. 背景2. Task顶层状态区分3. 运行状态&#xff08;Running&#xff09;4. 非运行状态4.1 阻塞态&#xff08;Blocked&#xff09;&#xff1a;4.2 挂起态&#xff08;Suspended&#xff09;4.3 就绪…

K8s基础8——svc基础使用、应用暴露、iptables代理、ipvs代理

文章目录 一、Service基本了解二、Service定义与创建2.1 相关命令2.2 yaml文件参数大全2.3 创建svc2.3.1 两种创建方式类比2.3.2 验证集群内A应用访问B应用2.3.3 将集群外服务定义为K8s的svc2.3.4 分配多个端口 2.4 常用三种类型2.4.1 ClusterIP&#xff08;集群内部访问&#…

如何解决Redis的双写一致性

目录 1.更新策略2.问题场景3.解决方案 1.更新策略 Redis和MySQL的默认的更新策略是旁路缓存策略&#xff0c;旁路缓存策略又有写策略和读策略 写策略&#xff1a;更新时&#xff0c;先更新数据库&#xff0c;再更新缓存 读策略&#xff1a;读取数据时&#xff0c;如果命中缓…

自动驾驶——Smooth Local Planning

7.1参数曲线 在本模块中&#xff0c;我们将讨论分层运动规划器的最低级别&#xff0c;即局部规划器。作为提醒&#xff0c;局部规划器是分层规划器的一部分&#xff0c;它以无碰撞、高效和舒适的方式执行行为规划器所要求的机动。这导致轨迹&#xff0c;即在给定时间空间中的一…

【C++入门】auto关键字(C++11) + 指针空值nullptr(C++11)

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…

【谷粒商城之ThreadLocal用户身份鉴别】

本笔记内容为尚硅谷谷粒商城购物车ThreadLocal用户身份鉴别部分 目录 ThreadLocal 1.导入依赖 2.编写配置 3.配置Session 4.cookie中的user-key说明 5.编写To与常量 6.编写拦截器 7.添加拦截器的WebConfig配置类 8.Debug测试UserInfoTo中是否有数据 ThreadLocal T…

一篇文章搞定time_wait状态的诸多问题

今天聊聊 TIME_WAIT。 如果看过本文之后&#xff0c;你能够对如下“夺命连环问”做到胸中自有沟壑&#xff0c;则我心甚慰&#xff1a; 你觉得一台机器上看到多少 TIME_WAIT 属于不正常状态&#xff1f; 你觉得出现 TIME_WAIT 相关异常后&#xff0c;会对应用程序造成什么样的…

虚拟化技术简介

文章目录 前言一、什么是虚拟化&#xff1f;二、虚拟化的实现条件三、常见的虚拟化软件产品四、如何查看自己电脑是否支持虚拟化 前言 对于虚拟化技术的简单介绍。 一、什么是虚拟化&#xff1f; 将一台物理计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个虚拟机&am…

Oracle DataGuard奇怪的ORA-16494错误

Oracle数据库DataGuard数据无法同步&#xff0c;主库查询v$archive_dest出现ORA-16494错误。 数据库版本Oracle 12.1.0.2.0&#xff1a; SQL> select * from v$version;BANNER --------------------------------------------------------------------------------CON_ID --…

【深度学习】基于华为MindSpore和pytorch的卷积神经网络LeNet5实现MNIST手写识别

1 实验内容简介 1.1 实验目的 &#xff08;1&#xff09;熟练掌握卷积、池化概念&#xff1b; &#xff08;2&#xff09;熟练掌握卷积神经网络的基本原理&#xff1b; &#xff08;3&#xff09;熟练掌握各种卷积神经网络框架单元&#xff1b; &#xff08;4&#xff09;…

【Java笔试强训 32】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;淘宝网店…

初识Vue-事件 样式

目录 事件 事件修饰符 自定义事件 双向绑定 样式style class style Scoped(防止样式污染) 事件 <button click"add($event, 2)">add</button> add(event, num) {event.stopPropagation()// 防止冒泡this.count num; // this在方法里指向当前Vu…

YOLOv5改进系列(1)——添加SE注意力机制

前言 从这篇开始我们进入YOLOv5改进系列。那就先从最简单的添加注意力机制开始吧&#xff01;&#xff08;&#xffe3;︶&#xffe3;&#xff09;↗ 【YOLOv5改进系列】前期回顾&#xff1a; YOLOv5改进系列&#xff08;0&#xff09;——重要性能指标与训练结果评价及分…

Tomcat线程池扩展总结

Tomcat 线程池 前言 最近在压测接口&#xff0c;调线程池参数大小&#xff0c;感觉和预计的不一样。 看了看 tomcat 线程池源码 对比 JDK 线程池源码 源码 构造代码 这里是提交任务 可以看到 这里重写了 TaskQueue 类 可以看到 重写了offer方法 增加了这一行判断&#x…

ePWM模块-时基模块(2)

ePWM模块(2) 时基模块的使用 TBPRD:周期寄存器 (设置的时钟周期存入此,可通过阴影寄存器缓冲后写入,也可通过活动寄存器立即写入) TBCTR:时基计数变值寄存器 (时基当前所计数的值存入,用于和所设定周期值比较) TBPHS:时基相位寄存器 TBSTS:时基状态寄存器 …

Transformer 论文精读——Attention Is All You Need

https://www.bilibili.com/video/BV1pu411o7BE 摘要 序列转录模型是从一个序列生成另一个序列。Transformer 仅利用注意力机制&#xff08;attention&#xff09;&#xff0c;并且在机器翻译领域取得很好的成功。 结论 Transformer 重要贡献之一提出&#xff1a;multi-head…

C++实现二分查找(力扣题目704)

题目要求&#xff1a;给定一个n个元素的&#xff08;升序&#xff09;整型数组nums和一个目标值target&#xff0c;写一个函数搜索nums中的target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回-1 示例 输入: nums [-1,0,3,5,9,12] target 9 输出: 4 解释: 9 出现在…

Coursera—Andrew Ng机器学习—课程笔记 Lecture 3_Linear Algebra Review

3.1 矩阵和向量   参考视频: 3 - 1 - Matrices and Vectors (9 min).mkv 3.2 加法和标量乘法 参考视频: 3 - 2 - Addition and Scalar Multiplication (7 min).mkv 3.3 矩阵向量乘法 参考视频: 3 - 3 - Matrix Vector Multiplication (14 min).mkv 3.4 矩阵乘法 参考视频:…

[Pandas] 读取Excel文件

练习数据准备 demo.xlsx demo.xlsx中的工作表Sheet1显示上述的数据&#xff0c;Sheet2没有数据 我们可以使用Pandas中的read_excel()方法读取Excel格式的数据文件&#xff0c;生成DataFrame数据框进行数据分析处理 基本语法格式 import pandas as pd pd.read_excel(io, sheet…

JVM内存模型介绍

JVM(Java Virtual Machine)又被分为三大子系统&#xff0c;类加载子系统&#xff0c;运行时数据区&#xff0c;执行引擎。在这里我们主要讲解一下JVM的运行时数据区&#xff0c;也就是我们常说的JVM存储数据的内存模型。在这里提一点&#xff0c;平常我们常说内存模型&#xff…