展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

构建cloud项目总结

单体架构

Swagger在线接口文档
CodeGenerator 代码生成器
统一返回
通用的分页对象
常用工具类
全局异常拦截
错误枚举
自定义异常
多环境配置文件
Maven多环境配置
日志配置
JenkinsFile(centos安装JenkinsFile,构建部署spring boot项目)[参考](https://segon.cn/jenkins-deploy-springboot.html)
flyway

# 参考:https://blog.csdn.net/weixin_38405253/article/details/109040099

cloudalibaba

  • 后端项目模板可集成的框架
# 方案1
maven  # 构建项目
shiro  # 安全框架
springboot
cloudalibaba
mybtis-plus  # 代码生成器
nacos  # 服务注册中心、服务配置中心
sentinel  # 服务熔断限流、降级
gateway  # 隐藏真是ip地址,多个服务时用于负载均衡,前端访问不同端口的模块时,可用断言进行转发
openFeign  # 服务调用
redis  # 非关系型数据库
mysql  # 关系型数据库
swagger  # 测试框架
rabbitmq  # 消息队列
sleuth  # 集成了zipkin,用于链路跟踪
seata  # 分布式事务

# 方案2
gradle、security、springboot、cloudalibaba、mybtis-plus、nacos、sentinel、gateway、openFeign、redis、mysql、swagger、rabbitmq、sleuth、seata

  • 后端项目构建存在的问题
# IDEA自带的gradle与当前系统中配置的gradle版本不一致,会导致某些依赖无法导入

# 使用maven3.6.1及其一下版本,如3.8.2在拉取mybatis plus依赖时会报错

# 每个子模块的pom.xml中配置如下,方便之后每个微服务都能打成jar包部署
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.1.0</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.1</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>
    </build>

# 依赖冲突,可[参考](https://gitee.com/chnq/chnx/tree/master/cloud/seata/seata01)构建一个简单的分布式微服务项目,之后在该项目基础上不断集成框架

# cloud跨域问题

  • 可参考项目结构
└── cloud-alibaba-demo
    ├── system    # 集成1个安全框架,管理用户数据等
    ├── common    # 公共模块,存放实体类、工具类等
    ├── file    # 文件上传下载模块
    ├── gateway    # 网关模块
    ├── provider    # 例如一个服务提供者模块
    ├── consumer    # 例如一个服务消费者模块
    ├── business    # 例如这是一个业务模块
    |      ├── java
    |      |      ├── config    # 配置类
    |      |      ├── mapper    # 持久层
    |      |      ├── controller    # 控制层
    |      |      ├── service    # 业务层
    |      |      |      └── impl    # 实现类
    |      |      ├── model    # 实体类
    |      |      ├── vo    # 视图对象,如req、resp
    |      |      ├── utils    # 工具包
    |      |      └── Application    # 启动类
    |      |  
    |      └── resouces    
    |      |      ├── mapper.xml    # xml文件
    |      |      └── application.yml    # yml文件
    |      |      
    │      ├── README.md 
    │      └── pom.xml    # 子模块依赖管理
    ├── README.md 
    └── pom.xml    # 父工程依赖管理

  • 系统健康监控
# 将某些后台监控页面显示在后台管理页面
1. sleuth
2. sentinel
3. nacos
4. Prometheus + Grafana:https://cloud.tencent.com/developer/article/1769920
5. swagger
6. rabbitmq

参考

  • 每个微服务resource路径下配置多个yml外部配置文件
  • 指标监控可视化

ddd + cloud + mybatis plus

  • pom
<build>
   <plugins>
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.1</version>
          <configuration>
              <source>11</source>
              <target>11</target>
              <encoding>UTF-8</encoding>
          </configuration>
      </plugin>
      <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <version>2.3.7.RELEASE</version>
          <configuration>
              <mainClass>com.example.demo.DemoApplication</mainClass>
          </configuration>
          <executions>
              <execution>
                  <id>repackage</id>
                  <goals>
                      <goal>repackage</goal>
                  </goals>
              </execution>
          </executions>
      </plugin>
  </plugins>
</build>
  • yml
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath:com/chnq/provide/domain/repository/mapper/xml/*.xml
  • 启动类
@SpringBootApplication
@EnableDiscoveryClient
@ComponentScan("com.chnq")
@MapperScan("com.chnq.provide.domain.repository.mapper")
public class Provide8081Application {
    public static void main(String[] args) {
        SpringApplication.run(Provide8081Application.class, args);
    }
}
posted @ 2021-12-05 09:30  DogLeftover  阅读(23)  评论(0编辑  收藏  举报