SpringCloud总结(springcloud alibaba)

news2025/2/27 1:41:24

目录

版本说明(很重要)

 springcloud alibaba对应组件版本说明

简述

spring cloud albaba

几大模块

周会讨论 - spring cloud alibaba每周都会有周会讨论,社区活跃

spring cloud alibaba官网

注册配置中心

简单介绍

nacos

步骤

示例代码

依赖

 application.yml配置

添加注解 @EnableDiscoveryClient

配置中心核心文件bootstrap.properties

其他功能

多环境配置

命名空间(namespace )

Group

参考博客

分布式事务

Seata 

官网

流程部署(将seata配置注册到nacos)

1.下载源码和程序文件

2.注册seata到nacos

2.3 script\config-center\nacos文件夹下右键git bash

注意(大坑-感谢下面保姆级教程文章的博主)使用Nacos+Seata,需要将service.default.grouplist这条配置删除,否则会找不到bean,说找不到default服务

3.启动seata

4.配置application.yml文件

5.导入依赖

坑(因mysql版本问题 重新手动编译时 可能找不到以下 手动排除即可 目前没发现问题)

下载

示例代码(官方)

注意:(替换版本可能出现其他问题 一定小心!!!)

参考

降级和限流 

sentinel

1.下载jar包

 2.相关使用

openfeign

官方简单示例

RestTemplate

openFeign

gateway

分布式消息

rocketmq

1.下载

 2.代码

坑(rocketmq4.9.3报错 请参考以下博客)

 参考

lombok小知识

lombok插件

maven仓库

参考文章


版本说明(很重要)

Spring Cloud Alibaba VersionSpring Cloud VersionSpring Boot Version

2.2.10-RC1*

Spring Cloud Hoxton.SR12

2.3.12.RELEASE

2.2.9.RELEASE

Spring Cloud Hoxton.SR12

2.3.12.RELEASE

2.2.8.RELEASE

Spring Cloud Hoxton.SR12

2.3.12.RELEASE

2.2.7.RELEASE

Spring Cloud Hoxton.SR12

2.3.12.RELEASE

2.2.6.RELEASE

Spring Cloud Hoxton.SR9

2.3.2.RELEASE

2.2.1.RELEASE

Spring Cloud Hoxton.SR3

2.2.5.RELEASE

2.2.0.RELEASE

Spring Cloud Hoxton.RELEASE

2.2.X.RELEASE

2.1.4.RELEASE

Spring Cloud Greenwich.SR6

2.1.13.RELEASE

2.1.2.RELEASE

Spring Cloud Greenwich

2.1.X.RELEASE

2.0.4.RELEASE(停止维护,建议升级)

Spring Cloud Finchley

2.0.X.RELEASE

1.5.1.RELEASE(停止维护,建议升级)

Spring Cloud Edgware

1.5.X.RELEASE

 springcloud alibaba对应组件版本说明

Spring Cloud Alibaba VersionSentinel VersionNacos VersionRocketMQ VersionDubbo VersionSeata Version

2022.0.0.0

1.8.6

2.2.1

4.9.4

~

1.7.0

2022.0.0.0-RC2

1.8.6

2.2.1

4.9.4

~

1.7.0-native-rc2

2021.0.5.0

1.8.6

2.2.0

4.9.4

~

1.6.1

2.2.10-RC1

1.8.6

2.2.0

4.9.4

~

1.6.1

2022.0.0.0-RC1

1.8.6

2.2.1-RC

4.9.4

~

1.6.1

2.2.9.RELEASE

1.8.5

2.1.0

4.9.4

~

1.5.2

2021.0.4.0

1.8.5

2.0.4

4.9.4

~

1.5.2

2.2.8.RELEASE

1.8.4

2.1.0

4.9.3

~

1.5.1

2021.0.1.0

1.8.3

1.4.2

4.9.2

~

1.4.2

2.2.7.RELEASE

1.8.1

2.0.3

4.6.1

2.7.13

1.3.0

2.2.6.RELEASE

1.8.1

1.4.2

4.4.0

2.7.8

1.3.0

2021.1 or 2.2.5.RELEASE or 2.1.4.RELEASE or 2.0.4.RELEASE

1.8.0

1.4.1

4.4.0

2.7.8

1.3.0

2.2.3.RELEASE or 2.1.3.RELEASE or 2.0.3.RELEASE

1.8.0

1.3.3

4.4.0

2.7.8

1.3.0

2.2.1.RELEASE or 2.1.2.RELEASE or 2.0.2.RELEASE

1.7.1

1.2.1

4.4.0

2.7.6

1.2.0

2.2.0.RELEASE

1.7.1

1.1.4

4.4.0

2.7.4.1

1.0.0

2.1.1.RELEASE or 2.0.1.RELEASE or 1.5.1.RELEASE

1.7.0

1.1.4

4.4.0

2.7.3

0.9.0

2.1.0.RELEASE or 2.0.0.RELEASE or 1.5.0.RELEASE

1.6.3

1.1.1

4.4.0

2.7.3

0.7.1

参考链接

版本说明 · alibaba/spring-cloopenud-alibaba Wiki · GitHub

简述

我看到有人推荐这个版本,那我就用这个版本开始测试了。

spring cloud albaba

我的理解是他提供了一套微服务标准,集成了各种组件.

有个需要注意的点就是spring cloud,springboot,spring cloud alibaba三者以及spring cloud alibaba对应组件都有严格的版本对应关系.

几大模块

  • 注册配置中心
  • 分布式事务
  • 限流降级
  • 分布式消息
  • 异构服务
  • 静态编译

周会讨论 - spring cloud alibaba每周都会有周会讨论,社区活跃

参与社区周会 | https://sca.aliyun.com

spring cloud alibaba官网

版本发布说明 | https://sca.aliyun.com

注册配置中心

简单介绍

这块主要是有注册中心和配置中心两个地方.

那首先注册中心是什么

我的理解是如果没有注册中心,那么每个服务直接都是直接访问各自的域名.

这样有很大的缺陷,首先耦合度高,只有一个出现异常,其他的都异常.

那么我们就需要一个东西去管理我们的服务.

简单来说,就是将我们的服务都注册到一个地方,然后大家都调用该地方,该地方再返回相关信息,把直接调用改成间接调用.也会增加系统的安全性.

那配置中心是什么

每个服务都会配置信息,通常我们都是配置到各自的yml文件或者其他的.

那么每次更改我们都需要找到对应的服务去更新各自的文件,有点麻烦,而且不安全.

那么我们就需要一个地方去集成这些配置.

alibaba集成的是nacos,他既可以做注册中心,也可以做配置中心.

nacos

官网地址:Redirecting to: https://nacos.io/
开源地址:GitHub - alibaba/nacos: an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.

从bin目录下启动后,找到cmd的网址,输入账号密码(nacos),就可以登录可视化平台

步骤

  1. 下载nacos,启动nacos
  2. 引入依赖
  3. 配置信息
  4. 编写代码(添加注解等)

示例代码

依赖
<!-- Nacos Config -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- Nacos Discovery -->
<dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
 application.yml配置
spring:
  cloud:
    nacos:
      serverAddr: 127.0.0.1:8848
  config:
    enabled: true
server:
  port: 18084
management:
  endpoints:
    web:
      exposure:
        include: "*"
添加注解 @EnableDiscoveryClient
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }

    @RestController
    class EchoController {
        @GetMapping(value = "/echo/{string}")
        public String echo(@PathVariable String string) {
            return string;
        }
    }
}
配置中心核心文件bootstrap.properties
# 这里的应用名对应 Nacos Config 中的 Data ID,实际应用名称以配置中心的配置为准
spring.application.name=demo-server-config
# 指定查找名为 nacos-provider-config.yaml 的配置文件
spring.cloud.nacos.config.file-extension=yaml
# Nacos Server 的地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#注意: Spring Boot 配置文件的加载顺序,
# 依次为 bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml ,
# 其中 bootstrap.properties 配置为最高优先级

其他功能

多环境配置

此外nacos还支持多环境配置

spring-cloud-starter-alibaba-nacos-config 在加载服务配置时:

不仅仅加载了以 dataId 为 ${spring.application.name}.${file-extension:properties } 为前缀的基础配置,

还加载了 dataId 为 ${spring.application.name}-${profile}.${file-extension:properties } 的基础配置。

在日常开发中如果遇到多套环境下的不同配置,可以通过 Spring 提供的 ${spring.profiles.active} 这个配置项选择不同情况下的配置。

yml添加
spring.profiles.active=develop

nacos上添加
Data ID: nacos-config-develop.yaml
Group: DEFAULT_GROUP
配置格式: YAML
配置内容: current.env: develop-env
命名空间(namespace )

不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。

Namespace 的常用场景之一是不同环境的配置的区分隔离, 例如开发测试环境和生产环境的资源(如配置、服务)隔离等。 在没有明确指定 ${spring.cloud.nacos.config.namespace} 配置的情况下, 默认使用的是 Nacos 中 public 命名空间即默认的命名空间。如果需要使用自定义的命名空间,可以通过以下配置来实现:

spring.cloud.nacos.config.namespace=YOUR_NAMESPACE_ID

注意:该配置必须放在 bootstrap.properties 文件中。

此外 spring.cloud.nacos.config.namespace 的值是 namespace 对应的 id,id 值可以在 Nacos 的控制台获取。

Group

在没有明确指定 ${spring.cloud.nacos.config.group} 配置的情况下, 默认使用的是组 DEFAULT_GROUP 。如果需要自定义 Group,可以通过以下配置来实现:

spring.cloud.nacos.config.group=YOUR_GROUP_NAME

该配置必须放在 bootstrap.properties 文件中。并且在添加配置时 Group 的值一定要和 spring.cloud.nacos.config.group 的配置值一致。

spring.application.name=opensource-service-provider
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# config external configuration
# 1、Data Id 在默认的组 DEFAULT_GROUP,不支持配置的动态刷新
spring.cloud.nacos.config.extension-configs[0].data-id=ext-config-common01.properties
# 2、Data Id 不在默认的组,不支持动态刷新
spring.cloud.nacos.config.extension-configs[1].data-id=ext-config-common02.properties
spring.cloud.nacos.config.extension-configs[1].group=GLOBALE_GROUP
# 3、Data Id 既不在默认的组,也支持动态刷新
spring.cloud.nacos.config.extension-configs[2].data-id=ext-config-common03.properties
spring.cloud.nacos.config.extension-configs[2].group=REFRESH_GROUP
spring.cloud.nacos.config.extension-configs[2].refresh=true

其中 n 的值越大,优先级越高。
data-id 的值必须带文件扩展名
文件扩展名既可支持 properties,又可以支持 yaml/yml。

# 配置支持共享的 Data Id
spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml
# 配置 Data Id 所在分组,缺省默认 DEFAULT_GROUP
spring.cloud.nacos.config.shared-configs[0].group=GROUP_APP1
# 配置Data Id 在配置变更时,是否动态刷新,缺省默认 false
spring.cloud.nacos.config.shared-configs[0].refresh=true

Nacos Config 目前提供了三种配置能力从 Nacos 拉取相关的配置:
A: 通过 spring.cloud.nacos.config.shared-dataids 支持多个共享 Data Id 的配置
B: 通过 spring.cloud.nacos.config.ext-config[n].data-id 的方式支持多个扩展 Data Id 的配置
C: 通过内部相关规则(应用名、应用名+ Profile )自动生成相关的 Data Id 配置

优先级关系是: A < B < C

参考博客

【Spring Cloud Alibaba】3.创建服务提供者_spring-cloud alibaba 服务提供者-CSDN博客

四种方案解决报错:Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasour-CSDN博客

分布式事务

简单的说,在分布式系统中一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务节点上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。

Seata 

官网

Releases · apache/incubator-seata · GitHub

Seata AT 模式需要使用到 undo_log 表。

-- 注意此处0.3.0+ 增加唯一索引 ux_undo_log
CREATE TABLE `undo_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `branch_id` bigint(20) NOT NULL,
  `xid` varchar(100) NOT NULL,
  `context` varchar(128) NOT NULL,
  `rollback_info` longblob NOT NULL,
  `log_status` int(11) NOT NULL,
  `log_created` datetime NOT NULL,
  `log_modified` datetime NOT NULL,
  `ext` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

seata-server db 模式所需要的数据库表(示例中采用 nacos 作为配置,注册中心 存储模式为:db 采用 mysql。)

-- -------------------------------- The script used when storeMode is 'db' --------------------------------
-- the table to store GlobalSession data
CREATE TABLE IF NOT EXISTS `global_table`
(
    `xid`                       VARCHAR(128) NOT NULL,
    `transaction_id`            BIGINT,
    `status`                    TINYINT      NOT NULL,
    `application_id`            VARCHAR(32),
    `transaction_service_group` VARCHAR(32),
    `transaction_name`          VARCHAR(128),
    `timeout`                   INT,
    `begin_time`                BIGINT,
    `application_data`          VARCHAR(2000),
    `gmt_create`                DATETIME,
    `gmt_modified`              DATETIME,
    PRIMARY KEY (`xid`),
    KEY `idx_status_gmt_modified` (`status` , `gmt_modified`),
    KEY `idx_transaction_id` (`transaction_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- the table to store BranchSession data
CREATE TABLE IF NOT EXISTS `branch_table`
(
    `branch_id`         BIGINT       NOT NULL,
    `xid`               VARCHAR(128) NOT NULL,
    `transaction_id`    BIGINT,
    `resource_group_id` VARCHAR(32),
    `resource_id`       VARCHAR(256),
    `branch_type`       VARCHAR(8),
    `status`            TINYINT,
    `client_id`         VARCHAR(64),
    `application_data`  VARCHAR(2000),
    `gmt_create`        DATETIME(6),
    `gmt_modified`      DATETIME(6),
    PRIMARY KEY (`branch_id`),
    KEY `idx_xid` (`xid`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

-- the table to store lock data
CREATE TABLE IF NOT EXISTS `lock_table`
(
    `row_key`        VARCHAR(128) NOT NULL,
    `xid`            VARCHAR(128),
    `transaction_id` BIGINT,
    `branch_id`      BIGINT       NOT NULL,
    `resource_id`    VARCHAR(256),
    `table_name`     VARCHAR(32),
    `pk`             VARCHAR(36),
    `status`         TINYINT      NOT NULL DEFAULT '0' COMMENT '0:locked ,1:rollbacking',
    `gmt_create`     DATETIME,
    `gmt_modified`   DATETIME,
    PRIMARY KEY (`row_key`),
    KEY `idx_status` (`status`),
    KEY `idx_branch_id` (`branch_id`),
    KEY `idx_xid_and_branch_id` (`xid` , `branch_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

CREATE TABLE IF NOT EXISTS `distributed_lock`
(
    `lock_key`       CHAR(20) NOT NULL,
    `lock_value`     VARCHAR(20) NOT NULL,
    `expire`         BIGINT,
    primary key (`lock_key`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4;

INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('AsyncCommitting', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryCommitting', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('RetryRollbacking', ' ', 0);
INSERT INTO `distributed_lock` (lock_key, lock_value, expire) VALUES ('TxTimeoutCheck', ' ', 0);

Seata 1.5.1 支持 Seata 控制台本地访问控制台地址:http://127.0.0.1:7091

流程部署(将seata配置注册到nacos)

1.下载源码和程序文件
  • Source code(zip) - 源码是用来将配置注册到nacos
  • seata-server-x.x.x.zip - 启动seata
2.注册seata到nacos

2.1 script\server\db文件夹下,选择对应的脚本执行脚本(我是mysql用的mysql.sql)。

2.2 然后在script下有个config-center下的config.txt

#重要修改文件
store.mode=db
store.db.datasource=druid
store.db.dbType=mysql
store.db.driverClassName=com.mysql.jdbc.Driver
store.db.url=jdbc:mysql://172.19.190.45:3306/seater_demo?useUnicode=true
store.db.user=root
store.db.password=root
store.db.minConn=5
store.db.maxConn=30
store.db.globalTable=global_table
store.db.branchTable=branch_table
store.db.queryLimit=100
store.db.lockTable=lock_table
store.db.maxWait=5000
#新增 根据服务增加
service.vgroupMapping.order-service-tx-group=default
service.vgroupMapping.account-service-tx-group=default
service.vgroupMapping.business-service-tx-group=default
service.vgroupMapping.storage-service-tx-group=default
2.3 script\config-center\nacos文件夹下右键git bash
# 导入,t:命名空间,g:分组
sh nacos-config.sh -h 127.0.0.1 -p 8848 -t f260b67e-971f-4e04-84f0-5f77ea4e821b -g SEATA_GROUP

等待完成即可添加到nacos,去nacos可视化界面就可以看到了

注意(大坑-感谢下面保姆级教程文章的博主)
使用Nacos+Seata,需要将service.default.grouplist这条配置删除,否则会找不到bean,说找不到default服务
3.启动seata

去启动包下找到config,打开下面的file.conf


## transaction log store, only used in seata-server
store {
  ## store mode: file、db
  mode = "db"

  ## file store property
  file {
    ## store location dir
    dir = "sessionStore"
    # branch session size , if exceeded first try compress lockkey, still exceeded throws exceptions
    maxBranchSessionSize = 16384
    # globe session size , if exceeded throws exceptions
    maxGlobalSessionSize = 512
    # file buffer size , if exceeded allocate new buffer
    fileWriteBufferCacheSize = 16384
    # when recover batch read size
    sessionReloadReadSize = 100
    # async, sync
    flushDiskMode = async
  }

  ## database store property
  db {
    ## the implement of javax.sql.DataSource, such as DruidDataSource(druid)/BasicDataSource(dbcp) etc.
    datasource = "druid"
    ## mysql/oracle/postgresql/h2/oceanbase etc.
    dbType = "mysql"
    driverClassName = "com.mysql.jdbc.Driver"
    url = "jdbc:mysql://172.19.190.45:3306/seater_demo"
    user = "root"
    password = "root"
    minConn = 5
    maxConn = 30
    globalTable = "global_table"
    branchTable = "branch_table"
    lockTable = "lock_table"
    queryLimit = 100
    maxWait = 5000
  }
}

然后修改registry.conf

registry {
  # file 、nacos 、eureka、redis、zk、consul、etcd3、sofa
  type = "nacos"
  nacos {
    application = "seata-server"
    serverAddr = "172.19.190.45:8848"
    namespace = "b4eb82a7-c45f-4c78-8e2c-706c25ee0122"
    cluster = "default"
    username = "nacos"
    password = "nacos"
  }
}

config {
  # file、nacos 、apollo、zk、consul、etcd3
  type = "nacos"

  nacos {
    serverAddr = "172.19.190.45:8848"
    namespace = "b4eb82a7-c45f-4c78-8e2c-706c25ee0122"
    group = "SEATA_GROUP"
    username = "nacos"
    password = "nacos"
  }
}

然后双击bin下的启动文件即可。

4.配置application.yml文件
server:
  port: 18081

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 172.19.190.45:8848
        username: 'nacos'
        password: 'nacos'
    loadbalancer:
      ribbon:
        enabled:true
  application:
    name: business-service

seata:
  enabled: true
  application-id: ${spring.application.name}

  tx-service-group: ${spring.application.name}-tx-group
  config:
    type: nacos
    nacos:
      serverAddr: 172.19.190.45:8848
      group: SEATA_GROUP  # 配置文件的分组
      namespace: b4eb82a7-c45f-4c78-8e2c-706c25ee0122
  registry:
    type: nacos
    nacos:
      server-addr: 172.19.190.45:8848
      application: seata-server
      namespace: b4eb82a7-c45f-4c78-8e2c-706c25ee0122
      cluster: default
feign:
  client:
    config:
      default:
        connectTimeout: 10000
        readTimeout: 10000
logging:
  level:
    io:
      seata: debug
5.导入依赖
    <dependencies>
        <dependency>
            <groupId>io.seata</groupId>
            <artifactId>seata-spring-boot-starter</artifactId>
            <version>1.2.0</version>
        </dependency>
        <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-seata</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>

坑(因mysql版本问题 重新手动编译时 可能找不到以下 手动排除即可 目前没发现问题)

<exclusions>
    <exclusion>
        <groupId>com.sun</groupId>
        <artifactId>jconsole</artifactId>
    </exclusion>
    <exclusion>
        <groupId>com.sun</groupId>
        <artifactId>tools</artifactId>
    </exclusion>
</exclusions>

seata1.5.1安装(nacos作为注册以及配置中心,mysql8作为存储中心)_seata1.5 mysql8.0-CSDN博客

https://juejin.cn/post/7119397167894102024​​​​​​

下载

Releases · apache/incubator-seata · GitHub

示例代码(官方)

https://github.com/alibaba/spring-cloud-alibaba/blob/2022.x/spring-cloud-alibaba-examples/seata-example/account-service/pom.xml

注意:(替换版本可能出现其他问题 一定小心!!!)

1.4之前不支持表双主键!!!

参考

【Seata】SpringCloud集成Seatav1.6之XA模式_seata 基于xa 模式 spring boot 示例-CSDN博客

https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.27

本地windows运行seata服务并注册到nacos中心_seata启动时候会不会注册到注册中心-CSDN博客

快速开始 | https://sca.aliyun.com

保姆级配置 Seata1.2 + Nacos_vgroup-mapping nacos-CSDN博客

降级和限流 

sentinel

1.下载jar包

Releases · alibaba/Sentinel · GitHub

运行以下命令,就可以看sentinel监控了

java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

【Spring Cloud Alibaba】7.Sentinel熔断器仪表盘监控_springcloud alibaba 仪表盘-CSDN博客

添加相应配置

spring:
  cloud:
    sentinel:
      transport:
        port: 8719
        dashboard: localhost:8080

 2.相关使用

Spring Cloud Alibaba 提供的 Sentinel 有关 Starter 提供了对 Spring Cloud 生态中如 OpenFeign、RestTemplate 等主流的客户端组件的适配支持。

SpringCloud Alibaba微服务-- Sentinel的使用(保姆级)_alibaba sentinel-CSDN博客

SpringCloud Alibaba - Sentinel 限流规则(案例 + JMeter 测试分析)-CSDN博客

SpringCloud Alibaba - Sentinel 限流规则(案例 + JMeter 测试分析)_sentinel限流配置-CSDN博客

openfeign

先加上application.yml配置feign.sentinel.enabled=true

官方简单示例
@FeignClient(name = "service-provider", fallback = EchoServiceFallback.class, configuration = FeignConfiguration.class)
public interface EchoService {
    @GetMapping(value = "/echo/{str}")
    String echo(@PathVariable("str") String str);
}

class FeignConfiguration {
    @Bean
    public EchoServiceFallback echoServiceFallback() {
        return new EchoServiceFallback();
    }
}

class EchoServiceFallback implements EchoService {
    @Override
    public String echo(@PathVariable("str") String str) {
        return "echo fallback";
    }
}
RestTemplate
@Bean
@SentinelRestTemplate(blockHandler = "handleException", blockHandlerClass = ExceptionUtil.class)
public RestTemplate restTemplate() {
    return new RestTemplate();
}

@SentinelRestTemplate 注解的属性支持限流(blockHandler, blockHandlerClass)和降级(fallback, fallbackClass)的处理。

其中 blockHandler 或 fallback 属性对应的方法必须是对应 blockHandlerClass 或 fallbackClass 属性中的静态方法。

该方法的参数跟返回值跟 org.springframework.http.client.ClientHttpRequestInterceptor#interceptor 方法一致,其中参数多出了一个 BlockException 参数用于获取 Sentinel 捕获的异常。

比如上述 @SentinelRestTemplate 注解中 ExceptionUtil 的 handleException 属性对应的方法声明如下:

public class ExceptionUtil {
    public static ClientHttpResponse handleException(HttpRequest request, byte[] body, ClientHttpRequestExecution execution, BlockException exception) {
        ...
    }
}

SentinelProperties 内部提供了 TreeMap 类型的 datasource 属性用于配置数据源信息。

rule-type 配置表示该数据源中的规则属于哪种类型的规则(flow,degrade,authority, system, param-flow, gw-flow, gw-api-group)。

进阶指南 | https://sca.aliyun.com

【Spring Cloud Alibaba】6.添加熔断机制(Sentinel)_feign.sentinel.enabled 关闭日志-CSDN博客

openFeign

版本问题-需要与springboot一致

1.加载依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

如果需要配合sentinel就加上yml配置

feign:
  sentinel:
    enabled: true

2.代码

@FeignClient(name = "service-provider")
public interface EchoService {

	/**
	 * 调用服务提供方的输出接口.
	 * @param str 用户输入
	 * @return echo result
	 */
	@GetMapping("/echo/{str}")
	String echo(@PathVariable("str") String str);

}
@RestController
public class TestController {

	@Autowired
	private EchoService echoService;

	@GetMapping("/echo-feign/{str}")
	public String feign(@PathVariable String str) {
		return echoService.echo(str);
	}

}
@EnableFeignClients
@SpringCloudApplication
public class ConsumerApplication {

	public static void main(String[] args) {
		SpringApplication.run(ConsumerApplication.class, args);
	}

}

https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign

【Spring Cloud Alibaba】5.创建服务消费者(Feign)_springcloud alibaba 消费者-CSDN博客

gateway

【Spring Cloud Alibaba】8.路由网关(Gateway)_springboot 路由网关-CSDN博客

分布式消息

rocketmq

1.下载

下载 | RocketMQ

RocketMQ的下载与安装(全网最细保姆级别教学)_rocketmq下载安装-CSDN博客

先下载,再配置环境变量,最后cmd运行以下命令 

start mqnamesrv.cmd
start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable = true

 2.代码

坑(rocketmq4.9.3报错 请参考以下博客)

windows RocketMQ 错误: 找不到或无法加载主类 Files\Java\jdk1.8.0_191\lib\dt.jar;C:\Program解决_dt.jar 报错-CSDN博客

 参考

https://www.cnblogs.com/xfeiyun/p/16229303.html

Windows环境下RocketMQ的安装及配置(图文详解)_rocketmq windows-CSDN博客

快速开始 | Spring Cloud Alibaba

lombok小知识

1.下载插件安装到idea

2.添加依赖

3.加注解

lombok插件

Releases · mplushnikov/lombok-intellij-plugin · GitHub

maven仓库

https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-gateway

参考文章

【Spring Cloud Alibaba】Spring Cloud Alibaba 搭建教程_springcloudalibaba搭建教程-CSDN博客

概述 | https://sca.aliyun.com

Spring Boot 单体应用升级 Spring Cloud 微服务最佳实践 | https://sca.aliyun.com

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

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

相关文章

C# WinForm —— 35 StatusStrip 介绍

1. 简介 状态栏 StatusStrip&#xff0c;默认在软件的最下方&#xff0c;用于显示系统时间、版本、进度条、账号、角色信息、操作位置信息等 可以在状态栏中添加的控件类型有&#xff1a;StatusLabel、ProgressBar、DropDownButton、SplitButton 2. 属性 属性解释(Name)控…

端午后的第一单cisa

需要的老板快来联系

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第41课-动态添加3D对象

【WEB前端2024】3D智体编程&#xff1a;乔布斯3D纪念馆-第41课-动态添加3D对象 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎…

实现流程自动化的警务反诈RPA:通过智能化技术提升警方反诈骗能力

电信诈骗一直以来都是公安机关重点打击的犯罪行为&#xff0c;随着信息技术的更新迭代&#xff0c;新型诈骗手段也层出不穷&#xff0c;传统的反诈手段已无法满足办案所需。在这一背景下&#xff0c;公安机关利用科技革命带来的契机&#xff0c;坚持以科技为反诈工作赋能&#…

鹧鸪云光伏业务管理系统,助力企业数智化发展

在当今数字化浪潮席卷全球的背景下&#xff0c;光伏行业作为绿色能源的重要组成部分&#xff0c;其业务管理的数智化转型显得尤为重要。鹧鸪云光伏业务管理系统&#xff0c;以其强大的功能和卓越的性能&#xff0c;正成为企业实现数智化转型的重要助力。 作为光伏行业的领军软…

LeetCode 119.杨辉三角 II

1.题目要求如图所示: 示例 1:输入: rowIndex 3 输出: [1,3,3,1]示例 2:输入: rowIndex 0 输出: [1]示例 3:输入: rowIndex 1 输出: [1,1]先用malloc函数创造一个二维数组&#xff0c;变成杨辉三角&#xff0c;然后再用一维数组找到所指的那一行: /*** Note: The returned…

循环订单激励:打造企业增长新引擎

循环订单激励&#xff1a;打造企业增长新引擎 在当今竞争激烈的商业环境中&#xff0c;许多企业都在寻求独特而高效的营销策略以吸引并留住客户。今天&#xff0c;我要为您介绍的是一种名为“循环订单激励”的新颖模式&#xff0c;它不仅能提升客户参与度&#xff0c;还能为企…

Python实现逻辑回归与判别分析--西瓜数据集

数据 数据data内容如下&#xff1a; 读取数据&#xff1a; import numpy as np import pandas as pd data pd.read_excel(D:/files/data.xlsx) 将汉字转化为01变量&#xff1a; label [] for i in data[好瓜]:l np.where(i 是,1,0)label.append(int(l)) data[label] lab…

南师大GIS专业2024排名NO.1!!!

南师大GIS 666 学科专业实力666&#xff0c;研究方向多多多&#xff01; 有学术方向有开发应用方向&#xff0c; 有GIS&#xff08;建模、数字地形、基础理论和三维GIS等&#xff09;、 有Cartography &#xff08;叙事地图、动态地图、地图风格迁移等&#…

线性规划问题——单纯形算法

第一步&#xff1a;化“约束标准型” 在每个等式约束中至少有一个变量的系数为正&#xff0c;且这个变量只在该约束中出现。在每个约束方程中选择一个这样的变量称为基本变量。 剩下变量称为非基本变量。 一个简单的栗子 上图是一个约束标准型线性规划的例子。 等式1&#x…

【总线】AMBA总线架构的发展历程

目录 引言 发展历程 第一代AMBA&#xff08;AMBA 1&#xff09; 第二代AMBA&#xff08;AMBA 2&#xff09; 第三代AMBA&#xff08;AMBA 3&#xff09; 第四代AMBA&#xff08;AMBA 4&#xff09; 第五代AMBA&#xff08;AMBA 5&#xff09; AMBA协议简介 ASB&#x…

Capto2024软件怎么下载安装? 【详细安装图文教程】

Capto 2024是一款专为Mac用户设计的屏幕录制编辑软件。无论是想要制作教育视频、工作演示、游戏录制&#xff0c;还是进行简单的屏幕捕捉&#xff0c;Capto 2024都能满足您的需求。接下来&#xff0c;我将详细介绍其主要功能、特点以及使用场景&#xff0c;并为您评价这款软件。…

linux执行ifconfig命令ens33没有显示ip地址解决方法

1.右键启动VMware DHCP和NAT这两个服务 2.执行reboot命令&#xff0c;重启linux。然后再执行ifconfig命令,可以看到inet了&#xff0c;就是ip。xshell也可以连接到主机了。

为什么说这个方向,是网工人最大的机会

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 下午好&#xff0c;我的网工朋友 都说各行各业早就没有了什么黄金时机&#xff0c;IT行业被称为含金量最高的行业之一&#xff0c;也难逃降薪裁员…

C++ static关键字详解

背景 前段时间初步整理了C中static的相关知识点&#xff0c;以此做个记录。 在C中&#xff0c;static关键字是常见的修饰符。从大方向上static分为两类&#xff1a; 1.类或结构体外的static 2.类或结构体内的static 因此&#xff0c;本文内容的划分如下&#xff1a; 接下来会…

supOS工业操作系统的由来

作为“世界制造工厂”&#xff0c;我国拥有最庞大、最完整的工业企业集群与产业链&#xff0c;其中既有众多全球性制造巨头&#xff0c;又有数以百万计的中小型工厂。但这些企业的制造工厂在推进数字化、网络化、智能化进程时普遍受阻&#xff1a;1&#xff09;系统软件定制程度…

mybatis之特殊SQL的执行

1.1模糊查询 尝试&#xff1a; //模糊查询用户 List<User> getUserByLike(Param("mohu") String mohu);<select id"getUserByLike" resultType"user">select * from user where username like %#{mohu}% </select>Test publ…

本地密码记录工具-KeePass

文章目录 软件界面软件下载KeePass配置KeePass修改中文创建数据库配置数据库锁定配置账户密码为不同应用配置账号密码插件安装及使用 数据库同步 在此之前&#xff0c;没有使用过类似的账户密码记录工具&#xff0c;甚至完全没有接触过&#xff0c;由于Edge浏览器自带保存密码并…

视频监控汇聚平台:系统日志介绍及在运维中的实际应用

目录 一、系统日志的重要性 &#xff08;一&#xff09;安全保障 &#xff08;二&#xff09;故障排查 &#xff08;三&#xff09;运营管理 &#xff08;四&#xff09;事件回溯与分析 二、产品说明 &#xff08;一&#xff09;产品介绍 &#xff08;二&#xff09;接…

把纸质文件扫描成word电子版的3种方法!

在数字化日益盛行的今天&#xff0c;纸质文件转化为电子版的需求愈发强烈。不论是出于环保的考虑&#xff0c;还是为了提高工作效率&#xff0c;将纸质文件扫描成Word电子版都是一项必备技能。那么&#xff0c;如何将纸质文件轻松转化为Word电子版呢&#xff1f;本文将为您揭秘…