/biz-parent

SpringCloud微服务开发脚手架。包括动态数据源模块、日志模块、分布式id生成器模块、短链生成模块、excel异步导出模块等。支持docker快速启动

Primary LanguageJava

biz-parent

build

项目介绍

SpringCloud微服务开发脚手架

模块说明

注: 详细介绍请参考各模块的 README.md 文档

  1. biz-archetype
    项目骨架生成模块。支持自定义项目模版骨架 更多
  2. biz-boot-starter-dynamic-datasource
    动态数据源模块。支持读写分离、多数据源动态切换、健康检查。兼容seata分布式事务解决方案 更多
  3. biz-boot-starter-logger
    日志模块。用于日志上传ELKSentry错误告警、SkyWalking 更多
  4. biz-boot-starter-sequence
    基于zookeepersnowflake算法的分布式id生成器 更多
  5. biz-facade-common
    通用facade模块。包括异常、枚举等基类,以及请求、返回对象基类等 更多
  6. biz-spring-boot-admin
    SpringBoot Admin监控模块 更多
  7. biz-spring-cloud-api-service-order
    微服务测试模块 - 订单模块 更多
  8. biz-spring-cloud-api-service-product
    微服务测试模块 - 产品模块 更多
  9. biz-spring-cloud-api-service-utility
    公共服务。提供excel异步导出服务、短链生成及重定向、省市区查询、ip地址反查、手机号归属查询等基础服务 更多
  10. biz-spring-cloud-api-starter
    spring-cloud starter模块。封装MDC过滤器、接口/方法切面、分布式锁等开箱即用的功能 更多
  11. biz-spring-cloud-common
    spring-cloud项目通用类库 更多
  12. biz-spring-cloud-dashboard-hystrix(已废弃)
    推荐使用biz-spring-cloud-dashboard-turbine来进行hystrix断路器监控
  13. biz-spring-cloud-dashboard-turbine
    用于监控应用hystrix.stream端点,并进行hystrix断路器信息聚合 更多
  14. biz-spring-cloud-eureka
    Eureka注册中心 更多
  15. biz-spring-cloud-gateway
    API网关。用于微服务代理及网关鉴权,并提供swagger文档聚合功能 更多
  16. biz-spring-cloud-oauth-server
    oauth2统一认证授权中心 更多
  17. biz-spring-cloud-test
    测试模块 更多

TODO LIST

注: ~~ 划线部分为已完成功能 ~~

  1. 支持微服务调用全链路日志追踪。添加request-id(请求唯一标识,网关生成或来自外部请求头,格式为UUID)、app-id(应用唯一标识)、app-name(应用名称)、 trace-app-names(appName调用链路记录,以,分割)、trace-host-names(hostName调用链路记录,以,分割)、 trace-host-addresses(hostAddress调用链路记录,以,分割)
    • 支持Feign调用传递请求头信息
    • 支持RestTemplate调用传递请求头信息
  2. 日志模块支持kafka日志上传
  3. 完善动态数据源模块
    • 支持注解声明式指定数据源
    • 集成seata分布式事务解决方案
  4. 添加文件上传模块 biz-spring-cloud-api-file-upload,并提供基础SDK
    • 支持私有、公有文件上传,接入云OSS七牛云服务存储服务,私有文件采用FastDFS分布式文件系统存储
  5. 添加统一认证鉴权模块biz-spring-cloud-oauth-server(待完善)
  6. SpringCloud Gateway网关支持多种业务渠道认证和授权。支持多平台,如企业微信、网页、小程序。支持多种登录方式,如密码、验证码、扫码
  7. SpringCloud Gateway网关支持限流
  8. 添加分布式任务调度系统模块(扩展xxl-job)
    • 支持任务前置依赖配置
    • 支持任务优先级配置
    • 支持任务手动执行指定服务器IP
    • 定制RPC通信协议,支持跨语言跨平台调度
    • 新加任务执行线程池,替换JobThread,减少线程创建销毁带来的开销 @see https://github.com/XuMinCha/xxl-job
    • 新增注解@MultiplexJobHandler和@JobMethod,支持方法级别任务,类似spring的@scheduled @see https://github.com/XuMinCha/xxl-job
  9. utility模块添加excel异步下载功能
  10. 添加Sms短信服务模块,并提供基础SDK
  11. 添加Email发送服务模块,并提供基础SDK
  12. 添加企业微信通知服务模块,并提供基础SDK
  13. utility模块添加ip地址反查、手机号归属查询服务
  14. [perf] gateway使用WebClient优化接口调用,减少NIO请求
  15. sequence支持多渠道生成,单渠道id唯一
  16. 支持nacos注册中心(见alibaba分支)

docker快速启动

为方便快速启动相关服务,提供docker-compose容器编排脚本,使用几个简单的命令即可启动相关服务模块

docker-compose相关命令

docker-compose up -d                   # 初始化容器,如果容器不存在根据镜像自动创建
docker-compose down -v                 # 停止容器并删除容器
docker-compose start                   # 启动容器
docker-compose restart                 # 重启容器
docker-compose stop                    # 停止容器
docker-compose ps                      # 查看服务启动情况
docker-compose logs -f --tail=10       # 查看compose日志
docker-compose -h                      # 查看更多相关命令

快速启动相关说明

  1. 进入./docker目录, 执行docker-compose up -d,或者docker-compose up -d {服务名1} {服务名2} ...来启动指定服务
    服务模块清单如下:

    服务 服务名 端口 帐号/密码 地址
    * 数据库(主) mysql-master 3306 root/123456
    * 数据库(从) mysql-slave1 3307 root/123456
    * 数据库(从) mysql-slave2 3308 root/123456
    * KV缓存 redis 6379 123456
    * 消息中间件 rabbitmq 5672 waynechu/123456 http://localhost:15672
    zookeeper zk、zk2、zk3 2181-2183
    搜索引擎 elasticsearch 9200
    日志分析工具 kibana 5601 http://localhost:5601
    日志收集工具 logstash 7002
    配置中心 apollo 9070 apollo/admin http://localhost:8070
    配置中心db apollo-db 3316
    * 注册中心 eureka 9001-9009 http://localhost:9001
    网关 gateway 9010 http://localhost:9010/swagger-ui.html
    监控中心 boot-admin 9020 http://localhost:9020
    skywalking-oap skywalking-oap 12800
    skywalking-ui skywalking-ui 8090 http://localhost:8090
    统一认证服务 oauth-server 9050-9059 http://localhost:9050
    代码生成后端服务 archetype-portal 9060 http://localhost:9060
    订单服务 service-order 10010-10019 http://localhost:10010/swagger-ui.html
    订单服务 service-product 10020-10029 http://localhost:10020/swagger-ui.html
    公共服务 service-utility 10030-10039 http://localhost:10030/swagger-ui.html
  2. 服务前加*代表必须依赖的基础服务,需优先启动

  3. 启动所有服务会消耗大量的内存,除基础服务外,其它服务可根据需要选择性启动

  4. 服务之间存在依赖关系,compose脚本配置的depends_on属性无法决定依赖的服务是否完全启动,如果依赖的服务尚未启动完毕,后续相关服务会报出大量的错误。
    推荐按以下顺序初始化容器:

    docker-compose up -d mysql-master mysql-slave1 mysql-slave2 redis rabbitmq apollo-db  
    docker-compose up -d apollo elasticsearch  
    docker-compose up -d skywalking-oap logstash kibana  
    docker-compose up -d eureka  
    docker-compose up -d zk  
    docker-compose up -d gateway boot-admin skywalking-ui  
    docker-compose up -d {other services}  
    
  5. 使用--scale参数可对服务进行水平扩容。如: docker-compose up -d --scale service-order=2 service-order

启动步骤说明

  1. 打包所有模块并构建docker镜像

    # 进入项目根目录
    cd ./biz-parent
    # 拉取子模块
    git submodule update --init --recursive
    # 打包所有模块并构建docker镜像
    mvn clean install -Ddockerfile.skip=false
    

    注:

    1. 如果只更改了单个模块的代码,可手动为该模块单独重新构建镜像
      docker build -t waynechu/biz-archetype-portal:1.0.0-SNAPSHOT . --build-arg JAR_FILE=./target/biz-archetype-portal-api-1.0.0-SNAPSHOT.jar
      
    2. 如果dockerfile-maven-plugin 抛出 HttpHostConnectException: Connect to localhost:2375 异常,需要检查你本地的docker服务是否开启2375端口的服务
  2. 启动基础服务。包括主从库、Redis、rabbitmq、apollo数据库等

    cd ./docker
    docker-compose up -d mysql-master mysql-slave1 mysql-slave2 redis rabbitmq apollo-db
    

    注:可使用 docker-compose logs -f --tail=10 查看compose日志,然后等待基础服务启动完成

  3. 配置MySQL主从链路
    最新版本已经支持脚本自动配置主从复制链路,已无需手动配置,详见init-master.shinit-slave.sh。如出现未自动同步复制链路的情况,可执行以下命令手动配置

    1. 登录主库并配置主从同步链路用户权限

      CREATE USER 'replication'@'172.20.0.%' IDENTIFIED WITH mysql_native_password BY 'EiO8Rx4W.T3';
      GRANT REPLICATION SLAVE ON *.* to 'replication'@'172.20.0.%';
      flush privileges; -- 刷新权限
      show master status; -- 记下File、Position信息,配置从库时需要用到
      

      配置主库

    2. 登录从库并启动复制链路(从库都需要执行)

      change master to master_host='mysql-master',master_user='replication',master_password='EiO8Rx4W.T3',master_log_file='mysql-bin.000003',master_log_pos=837,master_port=3306;
      start slave; -- 开启主从复制链路
      show slave status; -- Slave_IO_Running 和 Slave_SQL_Running 为 YES 代表配置成功
      

      配置从库

    3. 检测主从链路是否同步成功。修改主库数据,检查从库是否同步即可

  4. 启动apollo、elasticsearch服务。其中apollo为必须依赖,es可选启动

    docker-compose up -d apollo elasticsearch
    
  5. 启动logstash、kibana、skywalking-oap服务。这三个都是可选服务

    docker-compose up -d logstash kibana skywalking-oap
    
  6. 启动eureka服务

    docker-compose up -d eureka
    
  7. 启动网关、boot-admin监控、skywalking控制台。网关为必须依赖服务,其他两个可选

    docker-compose up -d gateway boot-admin skywalking-ui
    
  8. 启动统一认证服务

    docker-compose up -d oauth-server
    
  9. 启动zk集群(sequence分布式id生成器必须依赖)

    docker-compose up -d zk
    
  10. 启动统一其它服务

    docker-compose up -d service-utility
    docker-compose up -d archetype-portal
    docker-compose up -d service-order
    docker-compose up -d service-product