索引:SpringCloudAlibaba分布式组件全部框架笔记

索引:SpringCloudAlibaba分布式组件全部框架笔记

一·推荐一套分布式微服务的版本管理父工程pom模板:Springcloud、SpringCloudAlibaba、Springboot

xml 复制代码
<properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <hutool.version>5.8.22</hutool.version>
        <lombok.version>1.18.26</lombok.version>
        <druid.version>1.1.20</druid.version>
        <mybatis.springboot.version>3.0.2</mybatis.springboot.version>
        <mybatisPlus.springboot.version>3.5.7</mybatisPlus.springboot.version>
        <mysql.version>8.0.11</mysql.version>
        <swagger3.version>2.2.0</swagger3.version>
        <mapper.version>4.2.3</mapper.version>
        <fastjson2.version>2.0.40</fastjson2.version>
        <persistence-api.version>1.0.2</persistence-api.version>
        <spring.boot.test.version>3.1.5</spring.boot.test.version>
        <spring.boot.version>3.3.0</spring.boot.version>
        <spring.cloud.version>2023.0.2</spring.cloud.version>
        <spring.cloud.alibaba.version>2023.0.1.0</spring.cloud.alibaba.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!--springboot 版本控制依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--springcloud 版本控制依赖-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring.cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--springcloud alibaba 版本控制依赖-->
            <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>
<!--            &lt;!&ndash;SpringBoot集成mybatis&ndash;&gt;-->
<!--            <dependency>-->
<!--                <groupId>org.mybatis.spring.boot</groupId>-->
<!--                <artifactId>mybatis-spring-boot-starter</artifactId>-->
<!--                <version>${mybatis.springboot.version}</version>-->
<!--            </dependency>-->
            <!--SpringBoot集成mybatis-plus-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
                <version>${mybatisPlus.springboot.version}</version>
            </dependency>
            <!--Mysql数据库驱动8 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <!--SpringBoot集成druid连接池-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>${druid.version}</version>
            </dependency>
            <!--通用Mapper4之tk.mybatis-->
            <dependency>
                <groupId>tk.mybatis</groupId>
                <artifactId>mapper</artifactId>
                <version>${mapper.version}</version>
            </dependency>
            <!--persistence-->
            <dependency>
                <groupId>javax.persistence</groupId>
                <artifactId>persistence-api</artifactId>
                <version>${persistence-api.version}</version>
            </dependency>
            <!-- fastjson2 -->
            <dependency>
                <groupId>com.alibaba.fastjson2</groupId>
                <artifactId>fastjson2</artifactId>
                <version>${fastjson2.version}</version>
            </dependency>
            <!-- swagger3 调用方式 http://你的主机IP地址:5555/swagger-ui/index.html -->
            <dependency>
                <groupId>org.springdoc</groupId>
                <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
                <version>${swagger3.version}</version>
            </dependency>
            <!--hutool-->
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>${hutool.version}</version>
            </dependency>
            <!--lombok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
                <optional>true</optional>
            </dependency>
            <!-- spring-boot-starter-test -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <version>${spring.boot.test.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>com.lmf.cloud</groupId>
                <artifactId>common</artifactId>
                <version>1.0.0</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    <build>
        <plugins>
            <!--            Springboot3升级之后必须添加的maven编译插件,这样才能解析接口方法参数,默认是不能自动解析接口参数-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.13.0</version>
                <configuration>
                    <parameters>true</parameters>
                    <source>17</source>
                    <target>17</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

二·SpringBoot、SpringCloud、SpringCloudAlibaba等各种组件的版本匹配图:


三·SpringBoot 3.x.x版本项目中,必须在pom中引入一个插件,否则接口方法参数无法解析

xml 复制代码
<build>
        <plugins>
            <!--            Springboot3升级之后必须添加的maven编译插件,这样才能解析接口方法参数,默认是不能自动解析接口参数-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.13.0</version>
                <configuration>
                    <parameters>true</parameters>
                    <source>17</source>
                    <target>17</target>
                </configuration>
            </plugin>
        </plugins>
</build>

四·Spring Cloud Alibaba 参考文档:

1.尚硅谷学习笔记脑图下载:2024版

https://gitee.com/lmf-2021/SpringCloud2024/blob/master/SpringCloud第3季2024.html

2.官方全套示例文档,比较简短,不适合新手,适合熟手复习

https://spring-cloud-alibaba-group.github.io/github-pages/2022/zh-cn/

五·Nacos:服务注册发现、配置管理中心

服务注册发现、配置管理中心;本身就是一个单独的微服务;同时也是所有分布式微服务组件的基础应用

xml 复制代码
<!--    Springcloud-nacos-服务注册中心整合依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--	springcloud-nacos-config-配置中心整合依赖-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--Springcloud-bootstrap容器整合依赖,可以使用bootstrap.yml配置文件-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

1.Nacos分阶段引入示例:

https://www.cnblogs.com/crazymakercircle/p/14231815.html

2.Nacos配置yml完整示例与解释:

https://developer.aliyun.com/article/1157617

补充1:Nacos服务跨分组调用

https://blog.csdn.net/m0_56287495/article/details/129240577

六·LoadBalancer:远程服务调用框架、客户端负载均衡工具

远程服务调用框架、客户端负载均衡工具(Nginx是服务端负载均衡工具);需要依赖服务注册与发现;支持与多种http库集成

xml 复制代码
<!--        Springcloud-loadbalancer-远程服务调用、负载均衡整合依赖,可以单独使用-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

https://www.cnblogs.com/itxiaoshen/p/16247702.html

七·Openfeign(推荐):远程服务调用框架、客户端负载均衡工具

远程服务调用框架、客户端负载均衡工具(Nginx是服务端负载均衡工具);需要依赖服务注册与发现,内部整合了LoadBalancer负载均衡,可以完全替代LoadBalancer组件

xml 复制代码
<!--Springcloud-openfeign-远程服务调用、负载均衡整合依赖,底层整合loadbalancer,因此需要该依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!--        Springcloud-loadbalancer-远程服务调用、负载均衡整合依赖,可以单独使用-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

<!-- 根据需要是否添加下面依赖,用于替换Openfeign底层的http请求为请求连接池-->
<!-- httpclient5-->
<dependency>
    <groupId>org.apache.httpcomponents.client5</groupId>
    <artifactId>httpclient5</artifactId>
</dependency>
<!-- feign-hc5-整合依赖-->
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-hc5</artifactId>
</dependency>

https://blog.csdn.net/weixin_44606481/article/details/132499972

补充1:Openfeign各种属性配置官方文档

https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html/appendix.html

八·Gateway:微服务端网关路由

微服务端网关路由;本身就是一个单独的微服务;需要依赖服务注册与发现;Gateway服务配置路由之后,再访问Gateway服务,Gateway服务就可以把请求转发到其他具体微服务上面;

xml 复制代码
<!--        网关是响应式编程,必须删除掉 spring-boot-starter-web 场景dependency-->
<!--        Springcloud-gateway-网关路由整合依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

<!--        根据需要添加:解决netty框架与mac系统m1芯片集成dns问题-->
<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-resolver-dns-native-macos</artifactId>
<!--            <version>4.1.75.Final</version> &lt;!&ndash;版本号自己切&ndash;&gt;-->
    <classifier>osx-aarch_64</classifier>
</dependency>

1.入门概括介绍:

https://developer.aliyun.com/article/1294775#slide-4

2.详细介绍:

https://www.cnblogs.com/crazymakercircle/p/11704077.html#autoid-h2-0-0-0

3.官方中文文档-最新版:

https://springdoc.cn/spring-cloud-gateway/#setrequestheader

补充1:Nginx网关与Gateway网关区分:

一般情况:将Nginx设置为流量网关,Gateway设置为业务网关,两者作用都是负载均衡作用,Gateway网关细腻度更低
https://developer.aliyun.com/article/1392682
https://developer.aliyun.com/article/1002990#slide-3

九·Sentinel:服务流量治理组件

服务流量治理组件;本身就是一个单独的微服务;A微服务配置注册到Sentinel服务之后,访问A微服务接口,请求的流量就会被Sentinel服务监控到

xml 复制代码
<!--	SpringCloud alibaba sentinel 服务流量治理组件-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

1.官方文档:

https://sentinelguard.io/zh-cn/docs/basic-implementation.html

2.详细笔记:

https://www.cnblogs.com/crazymakercircle/p/14285001.html#autoid-h2-0-0-0

3.整合实战笔记:

https://www.cnblogs.com/crazytrip/p/15212602.html

4.尚硅谷的Springcloud第3季脑图:下载本地查看

https://gitee.com/lmf-2021/SpringCloud2024/blob/master/SpringCloud第3季2024.html

十·Seata:分布式事务组件

分布式事务组件;本身就是一个单独的微服务;需要依赖服务注册与发现

xml 复制代码
<!--        Springcloud-seata-分布式事务整合依赖-->
<dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>

1.官方文档:

https://seata.apache.org/zh-cn/docs/overview/what-is-seata

2.Seata各大模式原理分析:

https://blog.csdn.net/qq_48721706/article/details/122656490

3.Seata2.0 安装部署,与Nacos、SpringCloud项目集成笔记:

(推荐)https://blog.csdn.net/weixin_43840661/article/details/135432796

https://blog.csdn.net/weixin_36027342/article/details/135897943

https://blog.csdn.net/qq_42767920/article/details/135743126

十一·Micrometer:微服务接口调用链路追踪组件

xml 复制代码
<!--micrometer-tracing-bom导入链路追踪版本中心  1-->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing-bom</artifactId>
    <version>${micrometer-tracing.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
<!--micrometer-tracing指标追踪  2-->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing</artifactId>
    <version>${micrometer-tracing.version}</version>
</dependency>
<!--micrometer-tracing-bridge-brave适配zipkin的桥接包 3-->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing-bridge-brave</artifactId>
    <version>${micrometer-tracing.version}</version>
</dependency>
<!--micrometer-observation 4-->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-observation</artifactId>
    <version>${micrometer-observation.version}</version>
</dependency>
<!--feign-micrometer 5-->
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-micrometer</artifactId>
    <version>${feign-micrometer.version}</version>
</dependency>
<!--zipkin-reporter-brave 6-->
<dependency>
    <groupId>io.zipkin.reporter2</groupId>
    <artifactId>zipkin-reporter-brave</artifactId>
    <version>${zipkin-reporter-brave.version}</version>
</dependency>

1.Micrometer安装使用详解:

https://www.cnblogs.com/cjsblog/p/11556029.html

2.SpringBoot 使用 Micrometer 集成 Prometheus 监控 Java 应用性能

https://blog.csdn.net/aixiaoyang168/article/details/100866159
https://juejin.cn/post/7051109463180181535

相关推荐
维李设论1 小时前
Node.js的Web服务在Nacos中的实践
前端·spring cloud·微服务·eureka·nacos·node.js·express
壹佰大多2 小时前
【spring-cloud-gateway总结】
java·spring·gateway
龙哥·三年风水4 小时前
workman服务端开发模式-应用开发-后端api推送修改二
分布式·gateway·php
向阳12186 小时前
sentinel来源访问控制(黑白名单)
java·sentinel
bohu836 小时前
sentinel学习笔记1-为什么需要服务降级
笔记·学习·sentinel·滑动窗口
一个儒雅随和的男子6 小时前
微服务详细教程之nacos和sentinel实战
微服务·架构·sentinel
bohu838 小时前
sentinel学习笔记5-资源指标数据统计
笔记·sentinel·statisticslot
龙哥·三年风水9 小时前
workman服务端开发模式-应用开发-后端api推送修改一
分布式·gateway·php
Hello Dam9 小时前
面向微服务的Spring Cloud Gateway的集成解决方案:用户登录认证与访问控制
spring cloud·微服务·云原生·架构·gateway·登录验证·单点登录
小笨猪-18 小时前
统⼀服务⼊⼝-Gateway
java·spring cloud·微服务·gateway