我爱普洱茶 发表于 2024-8-5 02:08:29

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

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

<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等各种组件的版本匹配图:

https://i-blog.csdnimg.cn/direct/f78c33a562ac444f8483adbc14b0a0f1.png
https://i-blog.csdnimg.cn/direct/6ca85f4e13684d1daad0a3da8d77618a.png
三·SpringBoot 3.x.x版本项目中,必须在pom中引入一个插件,否则接口方法参数无法剖析

<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%E7%AC%AC3%E5%AD%A32024.html
2.官方全套示例文档,比力简短,不适合新手,适合熟手复习

https://spring-cloud-alibaba-group.github.io/github-pages/2022/zh-cn/
五·Nacos:服务注册发现、配置管理中央

服务注册发现、配置管理中央;自己就是一个单独的微服务;同时也是所有分布式微服务组件的底子应用
<!--    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库集成
<!--      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组件
<!--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服务就可以把请求转发到其他详细微服务上面;
<!--      网关是响应式编程,必须删除掉 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服务监控到
<!--        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%E7%AC%AC3%E5%AD%A32024.html
十·Seata:分布式事务组件

分布式事务组件;自己就是一个单独的微服务;需要依赖服务注册与发现
<!--      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:微服务接口调用链路追踪组件

<!--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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 索引:SpringCloudAlibaba分布式组件全部框架条记