springcloudalibaba组件(springcloudalibaba组件seata注解)

科灵网 8 0

SpringCloud Alibaba 实战,来自尚硅谷电商项目理解

电商项目常见解决技术搭配方案:

SpringCloud Alibaba --nacos:注册中心

SpringCloud Alibaba --nacos:配置中心

SpringCloud --Ribbon:负载均衡

SpringCloud Alibaba --Sentinel:服务容错(限流、降级、熔断)

SpringCloud --Gateway:API网关(webflux编程模式)

SpringCloud --Sleuth(调用链监控)

SpringCloud Alibaba --Seata:分布式事务解决方案

作用:因为都会用到springcloud alibaba,所以将 放到公共服务中,统一管理版本

Nacos 文档地址:

Nacos 下载地址:

第一步:在需要注册到nacos的服务pom文件中添加相应的nacos依赖

作用:将我们的服务注册到注册中心中,同时也可以从注册中心中发现其他服务

第二步:将 Nacos 服务器地址配置添加到 /src/main/resources/application.properties 文件中,

给当前服务命名

第三步:使用@EnableDiscoveryClient 注解开启服务注册和发现

启动 Nacos 服务器

下载 Nacos Server下载页面

将下载的文件解压,进入nacos/bin文件夹(),并根据操作系统的实际情况

Linux/Unix/Mac , 执行 sh startup.sh -m standalone

Windows , 执行 cmd startup.cmd

查询服务

用户名和密码默认都是nacos

如:member会员服务需要调用coupon优惠券服务的方法

1.在member服务和coupon服务的pom文件中引入feign依赖

2.开启feign功能,在member服务上开启

@FeignClient("gulimall-coupon"):其中gulimall-coupon为nacos注册的被调用的服务名,@RequestMapping("/coupon/coupon/member/list")路径为gulimall-coupon服务中membercoupons()方法的调用全路径(添加上controller上的请求路径)

对应的在gulimall-coupon服务中有membercoupons()方法的具体实现

第一步:引入 Nacos Config 进行配置管理

第二步:在需要管理配置的服务下,添加bootstrap.properties

第三步:需要给配置中心添加数据集(Data Id)gulimall-coupon.properties

第四步:给 应用名.properties 添加任何配置

第五步:在需要读取配置的类上添加注解@RefreshScope,实时刷新获取配置文件内容

@RefreshScope:动态获取并刷新配置

@Value("${配置项的名}")

细节部分:

1.命名空间:主要用来做配置隔离

默认是public(保留空间);默认新增的所有配置都在public空间

a:开发、测试、生产:利用命名空间来做环境隔离

b:每一个微服务之间互相隔离配置,每一个微服务都创建自己的命名空间,只加载自己命名空间下的所有配置

2.配置集

一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配

置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、日志级

别等配置项。

3.配置集ID

Nacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。Data ID 通常用于组

织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有

意义的名称标识。Data ID 通常采用类 Java 包(如 com.taobao.tc.refund.log.level)的命名

规则保证全局唯一性。此命名规则非强制。

4.配置组

Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如 Buy 或

Trade )对配置集进行分组,从而区分 Data ID 相同的配置集。当您在 Nacos 上创建一个

配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置

分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url 配置好

MQ_topic 配置。

加载多配置文件:

官方文档:

项目地址:

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,

从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

什么是熔断降级

除了流量控制以外,降低调用链路中的不稳定资源也是关键 Sentinel 的使命之一。由于调用关系的复杂性,如果调用链路中的某个资源出现了不稳定,最终会导致请求发生堆积。

Sentinel 和 Hystrix 的原则是一致的: 当检测到调用链路中某个资源出现不稳定的表现,例如

如请求响应时间长或异常比例升高的时候,则对这个资源的调用进行限制,让请求快速失败,

避免影响到其它的资源而导致级联故障。

熔断降级设计理念

在限制的手段上,Sentinel 和 Hystrix 采取了完全不一样的方法。

Hystrix 通过 线程池隔离 的方式,来对依赖(在 Sentinel 的概念中对应 资源)进行了隔

离。这样做的好处是资源和资源之间做到了最彻底的隔离。缺点是除了增加了线程切换的成

本(过多的线程池导致线程数目过多),还需要预先给各个资源做线程池大小的分配。

Sentinel 对这个问题采取了两种手段

a.通过并发线程数进行限制

b.通过响应时间对资源进行降级

步骤:

1、引入依赖

2、使用 Nacos 注册中心

3、定义 fallback 实现

在服务消费者中,实现 feign 远程接口,接口的实现方法即为调用错误的容错方法

4、定义 fallbackfactory 并放在容器中

5、改造 fallback 类接受异常并实现容错方法

6、远程接口配置 feign 客户端容错

7、开启 sentinel 代理 feign 功能;在 application.properties 中配置

测试熔断效果。当远程服务出现问题,会自动调用回调方法返回默认数据。

springcloudalibaba组件(springcloudalibaba组件seata注解)-第1张图片-科灵网

关于Spring Cloud Alibaba,看这篇文章就够了!(附教程资料)

首先我们需要了解一下Spring Cloud,然后再来了解Spring Cloud Alibaba;

源自官方描述:

Spring Cloud为开发人员提供了一些工具用来快速构建分布式系统中的一些常见模式和解决一些常见问题(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、群集状态)。分布式系统的协调导致了很多样板式的代码(很多固定套路的代码),使用Spring Cloud开发人员可以快速建立实现这些模式的服务和应用程序。它们在任何分布式环境中都能很好地运行,包括开发人员自己的笔记本电脑、裸机数据中心和云计算等托管平台;

Spring Cloud为分布式系统开发的典型应用场景提供良好的开箱即用的功能:

Spring Cloud Alibaba是Spring Cloud下的一个子项目,Spring Cloud Alibaba为分布式应用程序开发提供了一站式解决方案,它包含开发分布式应用程序所需的所有组件,使您可以轻松地使用Spring Cloud开发应用程序,使用Spring Cloud Alibaba,您只需要添加一些注解和少量配置即可将Spring Cloud应用程序连接到Alibaba的分布式解决方案,并使用Alibaba中间件构建分布式应用程序系统;

Spring Cloud Alibaba 是阿里巴巴开源中间件跟 Spring Cloud 体系的融合:

动力节点的Spring Cloud Alibaba学习教程,将带你深入掌握基于Spring Cloud Alibaba技术栈的微服务开发技术,包括nacos、sentinel、seata、gateway、skywalking等,培养独立进行企业微服务项目架构的能力;

Spring Cloud Alibaba视频教程

Spring Cloud Alibaba资料下载

•001.视频导读

•002.Spring家族产品梳理

•003.What is Spring-Cloud-Alibaba?

•004.Nacos运行环境部署

•005.向Nacos注册中心注册服务

•006.从Nacos发现服务并负载均衡调用

•007.从Nacos发现服务并负载均衡调用

•008.Nacos客户端信息缓存

•009.Nacos客户端信息缓存

•010.Nacos Config配置中心启动读取外部配置

•011.Nacos Config配置中心自动刷新

•012.Nacos Config配置中心yaml配置

•013.Nacos Config配置中心多环境配置

•014.问答交流

•015.内容回顾-配置中心数据模型

•016.配置中心三层结构数据配置隔离

•017.配置中心三层结构数据配置隔离

•018.配置版本回滚-服务注册分组

•019.Nacos管控台用户权限管理

•020.Nacos数据持久化

•021.Nacos数据持久化

•022.Nacos集群环境部署

•023.Nacos集群环境测试

•024.Nacos集群统一入口Nginx

•025.快速回顾

•026.RestTemplate无参数Get调用返回String

•027.RestTemplate无参数Get调用返回User

•028.RestTemplate有参数Get调用返回User

•029.RestTemplate有参数Get调用返回User

•030.RestTemplate有参数Post调用返回User

•031.RestTemplate有参数Post调用返回User

•032.RestTemplate传输User对象参数Post调用返回User

•033.RestTemplate传输JSON参数Post调用返回User

•034.RestTemplate有参数Put调用

•035.RestTemplate有参数Delete调用

•036.RestTemplate方法调用梳理总结

•037.RestTemplate结合Ribbon实现负载均衡

•038.RestTemplate结合Ribbon实现负载均衡

•039.Ribbon负载均衡实现策略

•040.自定义Ribbon负载均衡实现策略

•041.更改Ribbon负载均衡实现策略

•042.Ribbon的核心接口组成

•043.Ribbon负载均衡策略个性化配置

•044.Ribbon结合Nacos实现权重负载均衡策略

•045.Ribbon结合Nacos负载均衡策优先调用同名集群

•046.Ribbon结合Nacos基于版本负载均衡策略

•047.Ribbon结合Nacos基于命名空间负载均衡策略

•048.What is Feign?

•049.Spring Cloud Alibaba基于Feign的远程调用

•050.Spring Cloud Alibaba基于Feign+Ribbon负载均衡远程调用

•051.Spring Cloud Alibaba基于Feign的相关配置

•052.脱离Ribbon的Feign的远程调用

•054.微服务的级联故障服务雪崩

•055.Spring Cloud Alibaba集成Sentinel

•056.Spring Cloud Alibaba基于Sentinel管理后台数据测试

•057.Spring Cloud Alibaba基于Sentinel实现限流

•058.Spring Cloud Alibaba基于Sentinel实现限流自定义返回结果

•059.Spring Cloud Alibaba基于Sentinel实现限流自定义跳转页面

•060.Spring Cloud Alibaba基于Sentinel线程数限流

•061.Spring Cloud Alibaba基于Sentinel资源关联限流

•062.Spring Cloud Alibaba基于Sentinel流控规则和流控效果

•063.问答交流

•064.快速回顾和演示环境预备

•065.Spring Cloud Alibaba Sentinel 服务降级RT

•066.Spring Cloud Alibaba Sentinel 服务降级异常比例和异常数

•067.Spring Cloud Alibaba Sentinel 热点参数规则

•068.Spring Cloud Alibaba Sentinel 热点参数规则小细节

•069.Spring Cloud Alibaba Sentinel 系统保护规则

•070.Spring Cloud Alibaba Sentinel 授权规则

•071.Spring Cloud Alibaba Sentinel Dashboard控制台通信原理

•072.Spring Cloud Alibaba Sentinel 对Controller请求url埋点

•073.Spring Cloud Alibaba Sentinel 手写代码实现埋点

•074.Spring Cloud Alibaba Sentinel 采用注解实现埋点

•075.Spring Cloud Alibaba Sentinel 对RestTemplate流控和熔断

•076.Spring Cloud Alibaba Sentinel 对Feign流控和熔断

•077.问答交流

•078.Sentinel规则持久化-拉模式持久化到本地文件

•079.Sentinel规则持久化-拉模式持久化到本地文件

•080.Sentinel规则持久化-推模式持久化到Nacos

•081.Sentinel规则持久化-推模式持久化到Nacos

•082.Spring Cloud Gateway 网关功能特性

•083.Spring Cloud Gateway 网关搭建

•084.Spring Cloud Gateway 网关服务调用

•085.Spring Cloud Gateway 网关谓词

•086.Spring Cloud Gateway 网关谓词

•087.Spring Cloud Gateway 网关谓词

•088.Spring Cloud Gateway 网关过滤器

•089.Spring Cloud Gateway 问答交流

•090.Spring Cloud Gateway自定义谓词

•091.Spring Cloud Gateway自定义谓词

•092.Spring Cloud Gateway自定义谓词不匹配404页面

•093.Spring Cloud Gateway自定义过滤器

•094.Spring Cloud Gateway全局过滤器

•095.Spring Cloud Gateway自定义全局过滤器

•096.Spring Cloud Gateway集成Ribbon实现负载均衡

•097.Spring Cloud Gateway集成Sentinel限流

•098.Spring Cloud Gateway集成Sentinel限流自定义错误页

•099.Spring Cloud Gateway集成Sentinel规则持久化到文件

•100.Spring Cloud Gateway集成Sentinel规则持久化到Nacos

•101.Spring Cloud Gateway内部执行流程源码分析

•102.Spring Cloud Gateway小结

•103.快速回顾

•104.Spring Cloud Gateway跨域CORS请求

•105.Spring Cloud Gateway跨域CORS请求

•106.What is SkyWalking?

•107.Skywalking运行环境部署

•108.SkyWalking Agent对微服务的链路追踪

•109.SkyWalking Agent对微服务链路追踪

•110.SkyWalking Agent加入IDEA中对微服务链路追踪

•111.SkyWalking 监控告警通知

•112.SkyWalking 监控告警通知

•113.SkyWalking 微服务链路追踪数据持久化MySQL

•114.SkyWalking 问答交流

•115.Skywalking持久化跟踪数据elasticsearch

•116.Skywalking持久化跟踪数据elasticsearch

•117.Skywalking对多个跨服务的链路跟踪

•118.Skywalking对多个跨服务的链路跟踪

•119.Skywalking自定义链路跟踪

•120.Skywalking集成logback输出traceId日志

•121.Skywalking UI界面-仪表盘

•122.Skywalking UI界面-拓扑图-追踪-性能剖析-告警

•123.Skywalking 基于nacos集群

•124.Skywalking 基于nacos集群

•125.Skywalking 基于nacos集群

•126.Skywalking 问答交流

•127.What is Seata?

•128.Seata分布式事务生命周期

•129.Seata TC Server运行环境部署

•130.Seata基于AT事务模式单体应用多数据源分布式事务

•131.Seata基于AT事务模式单体应用多数据源分布式事务

•132.Seata基于AT事务模式单体应用多数据源分布式事务

•133.Seata基于AT事务模式多个微服务分布式事务

•134.Seata基于AT事务模式多个微服务分布式事务

•135.Seata基于AT事务模式多个微服务分布式事务

•136.Seata基于AT事务模式执行机制

•137.Seata AT事务模式

•138.Seata AT事务模式写数据隔离

•139.Seata AT事务模式写数据隔离

•140.Seata AT事务模式读数据隔离

•141.Seata AT事务模式读数据隔离

•142.Seata TC Server集群环境部署

•143.Seata TC Server集群环境部署

•144.Seata TC Server集群环境集成测试

•145.Seata TC Server集群环境集成测试

•146.Seata TCC事务模式的运行机制

•147.Seata TCC事务模式SpringBoot单体应用案例

•148.Seata TCC事务模式SpringBoot单体应用案例

•149.Seata TCC事务模式SpringCloudAlibab微服务应用案例

•150.Seata TCC事务模式SpringCloudAlibab微服务应用案例

•151.What is Spring Cloud Stream

•152.Spring Cloud Stream的核心概念

•153.Spring Cloud Stream集成RocketMQ配置

•154.Spring Cloud Stream集成RocketMQ发送消息

•155.Spring Cloud Stream集成RocketMQ接收消息

•156.Spring Cloud Stream集成RocketMQ监听接收消息

•157.Spring Cloud Stream集成RocketMQ多种发送消息方式

•158.Spring Cloud Stream Starter代码分析

•159.Spring Cloud Stream集成RocketMQ发送事务消息

•160.Spring Cloud Stream集成RocketMQ对象标签消息

•161.Spring Cloud Stream问答交流

Spring Cloud Alibaba(二):版本对应关系

这里主要是Spring Cloud Alibaba与Spring Boot、Spring Cloud以及组件对应的版本关系。

Spring Cloud Alibaba BOM 包含了它所使用的所有依赖的版本。

如果需要使用 Spring Cloud 2020 版本,请在 dependencyManagement 中添加如下内容

如果需要使用 Spring Cloud Hoxton 版本,请在 dependencyManagement 中添加如下内容

如果需要使用 Spring Cloud Greenwich 版本,请在 dependencyManagement 中添加如下内容

如果需要使用 Spring Cloud Finchley 版本,请在 dependencyManagement 中添加如下内容

如果需要使用 Spring Cloud Edgware 版本,请在 dependencyManagement 中添加如下内容

SpringCloudAlibaba(一):概述与重要组件

前一篇提到了我们为什么要替换PHP语言采用Java语言。而Java语言的框架选型上来说有太多的选择,常见的有Dubbo,SpringCloud等。我们选择了SpringCloudAlibaba。替换PHP语言到SpringCloudAlibaba是个大工程,主要是业务迁移部分。讨论之初我也确认过是否迁移原有的业务,得到的明确答复是 迁移 。 那么这么来说也就简单了,复杂的就是工期问题了。

SpringCloud Alibaba是Alibaba结合自身的微服务实践开源的一套微服务全家桶 ,在SpringCloud项目中进行孵化并且毕业。既然是SpringCloud的项目那么阿里云其实包含其商业化的产品。 例如Nacos在阿里云就有其商业化的版本 MSE 。 同时SpringCloud Alibaba的相关组件是经历过双十一大促考验的产品。稳定性较高。

SpringCloud Alibaba是SpringCloud的子项目,其实很多相关的文章都提到了SpringCloud Alibaba与SpringCloud的关系,其中有很多的论点都比较有意思。大家可以去搜索一下。

SpringCloud Alibaba是依赖SpringCloud相关的标准实现的一套微服务的架构。结合阿里巴巴的相关实践与阿里云的相关服务实现的一些组件得以更快的实现相关产品业务。

Nacos实现了服务的配置中心与服务注册发现的功能,Nacos可以通过可视化的配置降低相关的学习与维护成本,实现动态的配置管理与分环境的配置中心控制。 同时Nacos提供了基于http/RCP的服务注册与发现功能。

Sentinel是面向分布式微服务架构的轻量级高可用的流控组件,以流量作为切入点,从流量控制,熔断降级,系统负载保护等维度帮助用户保证服务的稳定性。常用与实现限流、熔断降级等策略。

RocketMQ基于Java的高性能、高吞吐量的消息队列,在SpringCloud Alibaba生态用于实现消息驱动的业务开发,常见的消息队列有Kafka、RocketMQ、RabbitMQ等,相关的比较文档可以自行去翻阅。

既然是微服务的产品,那么肯定会用到分布式事物。Seata就是阿里巴巴开源的一个高性能分布式事物的解决方案。

Dubbo已经在圈内很火了,SpringCloud Alibaba基于上面提到的Nacos服务注册中心也同样整合了Dubbo。

SpringCloud Alibaba还有一些其他的组件选择,例如schedulerX、SMS、OSS等。但是由于其主要是阿里云的商业化产品就不再过多的进行介绍。集成其商业化产品时才能用到。

SpringCloud Alibaba是基于SpringCloud标准由阿里巴巴实现的微服务全家桶,可插拔的方式实现组件的替换,在某些场景中我们需要的组件可以自由进行选择。例如需要分布式链路跟踪我们可以增加sleuth组件用于实现分布式链路跟踪业务等。

很多人提到SpringCloudAlibaba的商业问题,记得当年SpringCloudAlibaba推出第一版的时候我也评论了...卖产品全家桶。不可否认是有那么一些,但是其实它本身的很多组件又不一定非要选择商业版本。这个可以自由进行选择。

Spring Cloud Alibaba Dubbo 集成

本次主要介绍Spring Cloud Alibaba Dubbo 的集成,主要用到配置管理、服务注册与发现组件是Nacos,

集成的各个组件的版本如下

1、Spring Cloud : Hoxton.SR8

2、Spring boot :2.3.2.RELEASE

3、Alibaba Cloud :2.2.3.RELEAS

一、 创建maven父依赖

创建maven项目test-parent, POM文件如下

二、 创建微服务test-user-provider (服务提供者)

1、创建服务POM文件如下

2、UserProviderApplication 上加注解 @EnableDubbo

3、创建test-user-provider配置文件 bootstrap.yml

4、Nacos中test_user_provider_commons.yml 内容如下:

三、创建服务消费端test-user-consume

1、创建服务POM文件如下

2、创建test-user-consume配置文件 bootstrap.yml

3、Nacos中test_user_consume_commons.yml内部如下:

上述文章就是科灵网介绍的springcloudalibaba组件和springcloudalibaba组件seata注解的详细回答,希望能够帮助到大家;如果你还想了解更多财经资讯知识,记得收藏关注我们。

标签: springcloudalibaba组件

抱歉,评论功能暂时关闭!

微信号已复制,请打开微信添加咨询详情!