栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Spring Cloud Alibaba】开篇

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Spring Cloud Alibaba】开篇

Spring Cloud Alibaba
  • 一、简介
    • 1.1 官方描述
    • 1.2 架构图
    • 1.3 模块
  • 二、项目搭建
    • 2.1 maven
    • 2.2 创建基础模块及基础功能
      • 2.2.1 创建子模块
      • 2.2.2 基础项目代码准备

一、简介 1.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.
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.

1.2 架构图

图片来源:processon

1.3 模块

二、项目搭建 2.1 maven

创建maven项目,配置pom



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.4.2
    
    cn.flowboot.e.commerce
    E-commerce-cloud
    1.0-SNAPSHOT
    pom

    
        
        1.0-SNAPSHOT
        
        Hoxton.SR12
        
        2.2.7.RELEASE
        
        1.16.18
        
        3.11
        
        4.4
        
        5.6.0
        
        0.11.2
        
        1.2.78
        
        3.4.2
        
        1.2.6
        
        1.21
        
        3.0.0
        
        2.3.2
        
        2.1.4
        
        1.3.1
        
        5.8.0
        
        5.8.0
        
        2.11.0
        
        1.4
        
        3.2.2
        
        4.1.2
        
        1.7

    


    
    
        
            
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            

            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                ${spring-cloud-alibaba.version}
                pom
                import
            

            
            
                org.projectlombok
                lombok
                ${lombok.version}
            
            
                org.apache.commons
                commons-lang3
                ${commons-lang3.version}
            
            
                org.apache.commons
                commons-collections4
                ${commons-collections4.version}
            
            
            
                commons-collections
                commons-collections
                ${commons.collections.version}
            
            
                cn.hutool
                hutool-all
                ${hutool-all.version}
            
            
            
                io.jsonwebtoken
                jjwt-api
                ${jwt.version}
            
            
                io.jsonwebtoken
                jjwt-impl
                ${jwt.version}
            
            
                io.jsonwebtoken
                jjwt-jackson
                ${jwt.version}
            
            
                com.alibaba
                fastjson
                ${fastjson.version}
            
            
            
            
                com.baomidou
                mybatis-plus-boot-starter
                ${mybatis-plus.version}
            

            
                com.alibaba
                druid-spring-boot-starter
                ${druid.version}
            
            
            
                eu.bitwalker
                UserAgentUtils
                ${bitwalker.version}
            

            
            
                com.github.pagehelper
                pagehelper-spring-boot-starter
                ${pagehelper.boot.version}
            

            
            
                com.github.oshi
                oshi-core
                ${oshi.version}
            

            
                net.java.dev.jna
                jna
                ${jna.version}
            

            
                net.java.dev.jna
                jna-platform
                ${jna.version}
            

            
            
                io.springfox
                springfox-boot-starter
                ${swagger.version}
                
                    
                        io.swagger
                        swagger-models
                    
                
            

            
            
                commons-fileupload
                commons-fileupload
                ${commons.fileupload.version}
            

            
            
                org.apache.poi
                poi-ooxml
                ${poi.version}
            

            
            
                com.github.penggle
                kaptcha
                ${kaptcha.version}
            

        
    

    
    
        
            spring-milestones
            Spring Milestones
            https://repo.spring.io/milestone
            
                false
            
        
    



2.2 创建基础模块及基础功能 2.2.1 创建子模块

创建子模块e-commerce-common和e-commerce-mvc-config

e-commerce-common/pom.xml



    
        E-commerce-cloud
        cn.flowboot.e.commerce
        1.0-SNAPSHOT
    
    4.0.0

    e-commerce-common
    jar
    
        8
        8
    

    
        
            org.projectlombok
            lombok
        
    



e-commerce-mvc-config/pom.xml



    
        E-commerce-cloud
        cn.flowboot.e.commerce
        1.0-SNAPSHOT
    
    4.0.0

    e-commerce-mvc-config

    
        8
        8
    

    
        
            cn.flowboot.e.commerce
            e-commerce-common
        
        
            org.springframework.boot
            spring-boot-starter-web
        
    


在主pom.xml添加模块管理

 
 
	 
	     
	     
	         cn.flowboot.e.commerce
	         e-commerce-common
	         ${E-commerce-cloud}
	     
	     
	         cn.flowboot.e.commerce
	         e-commerce-mvc-config
	         ${E-commerce-cloud}
	     

		...
		
     

2.2.2 基础项目代码准备

e-commerce-common/…/CommonResponse

package cn.flowboot.e.commerce.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;


@Data
@AllArgsConstructor
@NoArgsConstructor
public class CommonResponse implements Serializable {

    private final static int SUCCESS_CODE = 0;
    private final static String SUCCESS_MSG = "success";
    private final static int FAIL_CODE = -1;
    private final static String FAIL_MSG = "fail";
    
    private Integer code;
    
    private String message;
    
    private T data;


    
    public static  CommonResponse build(Integer code, String message, T data){
        return new CommonResponse(code,message,data);
    }

    
    public static  CommonResponse build(Integer code, String message){
        return new CommonResponse(code,message,null);
    }

    
    public static  CommonResponse success(){
        return new CommonResponse(FAIL_CODE,FAIL_MSG,null);
    }

    
    public static  CommonResponse success( String message){
        return new CommonResponse(FAIL_CODE,message,null);
    }

    
    public static  CommonResponse success(String message,T data){
        return new CommonResponse(FAIL_CODE,message,data);
    }

    
    public static  CommonResponse fail(){
        return new CommonResponse(FAIL_CODE,FAIL_MSG,null);
    }

    

    
    public static  CommonResponse fail( String message){
        return new CommonResponse(FAIL_CODE,message,null);
    }

    
    public static  CommonResponse fail(String message,T data){
        return new CommonResponse(FAIL_CODE,message,data);
    }

}

e-commerce-mvc-config/…/annotation/IgnoreResponseAdvice

package cn.flowboot.e.commerce.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;


@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface IgnoreResponseAdvice {
}

e-commerce-mvc-config/…/advice/CommonResponseDataAdvice

package cn.flowboot.e.commerce.advice;

import cn.flowboot.e.commerce.annotation.IgnoreResponseAdvice;
import cn.flowboot.e.commerce.vo.CommonResponse;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;

import java.util.Objects;


@RestControllerAdvice(value = "cn.flowboot.e.commerce")
public class CommonResponseDataAdvice implements ResponseBodyAdvice {

    
    @Override
    public boolean supports(MethodParameter methodParameter, Class aClass) {
        if (methodParameter.getDeclaringClass().isAnnotationPresent(IgnoreResponseAdvice.class)
                || Objects.requireNonNull(methodParameter.getMethod()).isAnnotationPresent(IgnoreResponseAdvice.class)){
            return false;
        }
        return true;
    }

    
    @Override
    public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType,
                                  Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {

        CommonResponse response = CommonResponse.success();
        if (null == o){
            return CommonResponse.success();
        } else if (o instanceof  CommonResponse){
            return  o;
        } else if (o instanceof String) {
            response.setData(o);
            return JSONObject.toJSONString(response);
        } else {
            response.setData(o);
            return response;
        }
    }
}

e-commerce-mvc-config/…/advice/GlobalExceptionAdvice

package cn.flowboot.e.commerce.advice;

import cn.flowboot.e.commerce.vo.CommonResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import javax.servlet.http.HttpServletRequest;


@Slf4j
@RestControllerAdvice
public class GlobalExceptionAdvice {

    @ExceptionHandler(value = Exception.class)
    public CommonResponse handlerCommerceException(HttpServletRequest req,Exception ex){
        log.error("commerce service has error  [{}]: {}",req.getRequestURI(),ex.getMessage(),ex);
        return CommonResponse.fail("business error",ex.getMessage());
    }
}

笔记系列简要目录

一、简介
1.1 官方描述
1.2 架构图
1.3 模块
二、项目搭建
2.1 maven
2.2 创建基础模块及基础功能
2.2.1 创建子模块
2.2.2 基础项目代码准备
三、Nacos 服务注册与配置中心
3.1 简介
3.2 安装使用
3.3 配置MySQL持久化
3.4 客户端编写
3.4.1 服务发现
3.4.2 服务配置
3.4.3 动态配置
3.4.4 配置共享
四、SpringBoot Admin 监控服务器
4.1 创建模块
4.2 启用Admin Server
4.3 配置yaml
4.4 安全配置
4.4.1 添加Security
4.4.2 配置账号
4.4.3 安全认证处理
4.5 监控警告
4.5.1 邮件通知
4.5.2 自定义监控
五、Gateway
5.1 架构图
5.2 Predicate 断言
5.3 路由
5.3.1 静态路由
5.3.2 动态路由
5.3.3 Nacos 配置
5.4 过滤器
5.4.1 全局过滤器
5.4.1 局部过滤器
六、链路监控 Sleuth+Zipkin
6.1 Zipkin
6.2 项目集成
6.3 持久化
6.4 Kafka数据传输
6.4.1 环境搭建
6.4.2 Zipkin 配置
6.5 采样策略
6.5.1 采样率策略
6.5.2 抽样策略
七、微服务通信
7.1 REST (RestTemlate)
7.2 OpenFeign
7.2.1 简单用例
7.2.2 优化
八、Hystrix 服务熔断
8.1 Hystrix 三种模式
8.2 熔断使用
8.2.1 注解的方式
8.2.2 编程的方式
8.3 Hystrix 请求缓存
8.3.1 编程的方式
8.3.2 注解的方式
8.4 请求合并
8.4.1 简介
8.4.2编程的方式
8.4.3 注解的方式
8.5 OpenFeign集成Hystrix 开启后备模式
8.6 监控面板
8.6.1 创建监控项目
8.6.2 打开监控面板
九、分布式事务Seata
9.1 @Transactional注解
9.2 分布式事务解决方案
9.3 Seata AT
9.3.1 Seata AT 概述
9.3.2 部署
9.3.3 系统集成
9.3.4 业务测试
十、消息驱动
10.1 Kafka
10.1.1 Spring Boot 集成
10.2 RocketMQ
10.2.1 搭建
10.2.2 Spring Boot 集成
10.3 RabbitMQ
10.3.1 环境搭建
10.3.2 Spring Boot 集成
10.4 Stream
10.4.1 简介
10.4.2 Stream Kafka
10.4.3 Stream RocketMQ
十一、Sentinel 流量控制
11.1 搭建SpringCloud Alibaba Sentinel控制台
11.2 项目集成
11.3 降级
11.3.1 接口降级
11.3.1.2 硬编码限流
11.3.1.2 控制面板限流
11.3.2 RestTemplate 降级
11.3.3 Feign 降级
11.4 Sentinel 存储
11.4.1 SpringCloud Alibaba Sentinel 结合 Nacos
11.5 Gateway 结合 Sentinel
11.5.1 添加依赖
11.5.2 硬编码配置
11.5.3 JSON文件配置方式
11.5.3 Nacos存储配置方式

Spring Cloud Alibaba 学习笔记项目:Github,学习笔记,仅为组件学习,并没有完整案例项目

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/964390.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号