Coder Social home page Coder Social logo

mbmcma / biz-parent Goto Github PK

View Code? Open in Web Editor NEW

This project forked from w-beatles/biz-parent

1.0 0.0 0.0 2.45 MB

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

Java 94.76% RobotFramework 0.01% Batchfile 0.02% Dockerfile 0.16% Vue 2.10% CSS 0.81% Shell 0.05% JavaScript 2.07% HTML 0.03%

biz-parent's Introduction

biz-parent

项目介绍

SpringCloud微服务开发脚手架

模块说明

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

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

docker快速启动

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

docker-compose相关命令

docker-compose up -d                   # 初始化容器,如果容器不存在根据镜像自动创建
docker-compose down -v                 # 停止容器并删除容器
docker-compose start                   # 启动容器
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 waynechu/123456
    * 数据库(从) mysql-slave1 3307 waynechu/123456
    * 数据库(从) mysql-slave2 3308 waynechu/123456
    * KV缓存 redis 6379 123456
    * 消息中间件 rabbitmq 5672 waynechu/123456 http://localhost:15672
    搜索引擎 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
    网关 inner-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 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
    动态数据源测试服务 dynamic-datasource-test 10040-10049 http://localhost:10040/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 inner-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
    # 打包所有模块并构建docker镜像
    mvn clean install -Ddockerfile.skip=false
    
  2. 启动基础服务
    扩展: 配置MySQL主从链路

    首次启动主从集群后,需要手动建立主从同步链路

    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=445,master_port=3306;
      start slave;
      show slave status; -- Slave_IO_Running 和 Slave_SQL_Running 为 YES 代表配置成功
      

biz-parent's People

Contributors

z-beatles avatar gezimm avatar zhangxianwen2 avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.