{"id":14975891,"url":"https://github.com/w-beatles/biz-parent","last_synced_at":"2025-03-16T00:08:48.972Z","repository":{"id":37112384,"uuid":"273032371","full_name":"W-Beatles/biz-parent","owner":"W-Beatles","description":"SpringCloud微服务开发脚手架。包括动态数据源模块、日志模块、分布式id生成器模块、短链生成模块、excel异步导出模块等。支持docker快速启动","archived":false,"fork":false,"pushed_at":"2024-09-13T11:35:17.000Z","size":3375,"stargazers_count":56,"open_issues_count":2,"forks_count":24,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-16T00:08:35.407Z","etag":null,"topics":["apollo","archetype","dockercompose","dockerfile","elasticsearch","eureka","feign","jetcache","kibana","logstash","mysql-master-slave","oauth2","skywalking","spring-cloud-admin","spring-cloud-gateway","springcloud","turbine"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/W-Beatles.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-17T17:00:25.000Z","updated_at":"2024-12-27T15:59:14.000Z","dependencies_parsed_at":"2024-09-18T18:03:58.718Z","dependency_job_id":null,"html_url":"https://github.com/W-Beatles/biz-parent","commit_stats":{"total_commits":529,"total_committers":7,"mean_commits":75.57142857142857,"dds":"0.17580340264650285","last_synced_commit":"be43415e1c592d5cf249929d34142312a6ebb9a8"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/W-Beatles%2Fbiz-parent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/W-Beatles%2Fbiz-parent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/W-Beatles%2Fbiz-parent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/W-Beatles%2Fbiz-parent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/W-Beatles","download_url":"https://codeload.github.com/W-Beatles/biz-parent/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243806069,"owners_count":20350775,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apollo","archetype","dockercompose","dockerfile","elasticsearch","eureka","feign","jetcache","kibana","logstash","mysql-master-slave","oauth2","skywalking","spring-cloud-admin","spring-cloud-gateway","springcloud","turbine"],"created_at":"2024-09-24T13:52:49.381Z","updated_at":"2025-03-16T00:08:48.943Z","avatar_url":"https://github.com/W-Beatles.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"biz-parent\n============\n![build](https://github.com/W-Beatles/biz-parent/workflows/build/badge.svg)\n\n### 项目介绍\nSpringCloud微服务开发脚手架\n\n### 模块说明\n\u003e 注: 详细介绍请参考各模块的 **README.md** 文档\n1.  biz-archetype  \n     项目骨架生成模块。支持自定义项目模版骨架\n     [更多](https://github.com/W-Beatles/biz-archetype/blob/main/README.md)  \n2.  biz-boot-starter-dynamic-datasource  \n     动态数据源模块。支持读写分离、多数据源动态切换、健康检查。兼容`seata`分布式事务解决方案\n     [更多](https://github.com/W-Beatles/biz-boot-starter-dynamic-datasource/blob/main/README.md)  \n3.  biz-boot-starter-logger  \n     日志模块。用于日志上传`ELK`、`Sentry`错误告警、`SkyWalking`\n     [更多](https://github.com/W-Beatles/biz-boot-starter-logger/blob/main/README.md)\n4.  biz-boot-starter-sequence  \n     基于`zookeeper`和`snowflake`算法的分布式id生成器\n     [更多](https://github.com/W-Beatles/biz-boot-starter-sequence/blob/main/README.md)\n5.  biz-facade-common  \n     通用`facade`模块。包括异常、枚举等基类，以及请求、返回对象基类等\n     [更多](./biz-facade-common/README.md)\n6.  biz-spring-boot-admin  \n     SpringBoot Admin监控模块\n     [更多](./biz-spring-boot-admin/README.md)\n7.  biz-spring-cloud-api-service-order  \n     微服务测试模块 - 订单模块\n     [更多](./biz-spring-cloud-api-service-order/README.md)\n8.  biz-spring-cloud-api-service-product  \n     微服务测试模块 - 产品模块\n     [更多](./biz-spring-cloud-api-service-product/README.md)\n9. biz-spring-cloud-api-service-utility  \n     公共服务。提供excel异步导出服务、短链生成及重定向、省市区查询、ip地址反查、手机号归属查询等基础服务\n     [更多](./biz-spring-cloud-api-service-utility/README.md)\n10. biz-spring-cloud-api-starter  \n     spring-cloud starter模块。封装MDC过滤器、接口/方法切面、分布式锁等开箱即用的功能\n     [更多](./biz-spring-cloud-api-starter/README.md)\n11. biz-spring-cloud-common  \n      spring-cloud项目通用类库\n     [更多](./biz-spring-cloud-common/README.md)\n12. ~~biz-spring-cloud-dashboard-hystrix(已废弃)~~  \n      推荐使用biz-spring-cloud-dashboard-turbine来进行hystrix断路器监控\n13. biz-spring-cloud-dashboard-turbine  \n      用于监控应用hystrix.stream端点，并进行hystrix断路器信息聚合\n     [更多](./biz-spring-cloud-dashboard-turbine/README.md)\n14. biz-spring-cloud-eureka  \n      Eureka注册中心\n     [更多](./biz-spring-cloud-eureka/README.md)\n15. biz-spring-cloud-gateway  \n      API网关。用于微服务代理及网关鉴权，并提供swagger文档聚合功能\n     [更多](./biz-spring-cloud-gateway/README.md)\n16. biz-spring-cloud-oauth-server  \n      oauth2统一认证授权中心\n     [更多](./biz-spring-cloud-oauth-server/README.md)\n17. biz-spring-cloud-test  \n      测试模块\n     [更多](./biz-spring-cloud-test/README.md)\n\n### TODO LIST\n\u003e 注: ~~ ~~划线部分为已完成功能~~ ~~\n\n1. ~~支持微服务调用全链路日志追踪。添加`request-id`(请求唯一标识，网关生成或来自外部请求头，格式为UUID)、`app-id`(应用唯一标识)、`app-name`(应用名称)、\n   `trace-app-names`(appName调用链路记录，以`,`分割)、`trace-host-names`(hostName调用链路记录，以`,`分割)、\n   `trace-host-addresses`(hostAddress调用链路记录，以`,`分割)~~\n   - ~~支持Feign调用传递请求头信息~~\n   - ~~支持RestTemplate调用传递请求头信息~~\n2. ~~日志模块支持kafka日志上传~~  \n3. 完善动态数据源模块  \n   - ~~支持注解声明式指定数据源~~\n   - 集成`seata`分布式事务解决方案\n5. 添加文件上传模块 `biz-spring-cloud-api-file-upload`，并提供基础SDK  \n   - 支持私有、公有文件上传，接入`云OSS`及`七牛云服务`存储服务，私有文件采用`FastDFS`分布式文件系统存储  \n6. ~~添加统一认证鉴权模块biz-spring-cloud-oauth-server(待完善)~~  \n7. SpringCloud Gateway网关支持多种业务渠道认证和授权。支持多平台，如企业微信、网页、小程序。支持多种登录方式，如密码、验证码、扫码  \n8. ~~SpringCloud Gateway网关支持限流~~  \n9. 添加分布式任务调度系统模块(扩展xxl-job)  \n   - 支持任务前置依赖配置\n   - 支持任务优先级配置\n   - 支持任务手动执行指定服务器IP\n   - 定制RPC通信协议，支持跨语言跨平台调度\n   - 新加任务执行线程池，替换JobThread,减少线程创建销毁带来的开销 `@see https://github.com/XuMinCha/xxl-job`\n   - 新增注解@MultiplexJobHandler和@JobMethod，支持方法级别任务，类似spring的@scheduled `@see https://github.com/XuMinCha/xxl-job`\n10. ~~utility模块添加excel异步下载功能~~  \n11. 添加Sms短信服务模块，并提供基础SDK  \n12. 添加Email发送服务模块，并提供基础SDK  \n13. 添加企业微信通知服务模块，并提供基础SDK  \n14. utility模块添加ip地址反查、手机号归属查询服务  \n15. [perf] gateway使用WebClient优化接口调用，减少NIO请求 \n16. sequence支持多渠道生成，单渠道id唯一\n17. 支持nacos注册中心(见alibaba分支)\n\n### docker快速启动\n为方便快速启动相关服务，提供`docker-compose`容器编排脚本，使用几个简单的命令即可启动相关服务模块\n\n#### docker-compose相关命令\n```\ndocker-compose up -d                   # 初始化容器，如果容器不存在根据镜像自动创建\ndocker-compose down -v                 # 停止容器并删除容器\ndocker-compose start                   # 启动容器\ndocker-compose restart                 # 重启容器\ndocker-compose stop                    # 停止容器\ndocker-compose ps                      # 查看服务启动情况\ndocker-compose logs -f --tail=10       # 查看compose日志\ndocker-compose -h                      # 查看更多相关命令\n```\n\n#### 快速启动相关说明\n1. 进入`./docker`目录, 执行`docker-compose up -d`，或者`docker-compose up -d {服务名1} {服务名2} ...`来启动指定服务  \n    服务模块清单如下: \n    \n    |  服务            |   服务名                 |  端口        |  帐号/密码         |  地址                                     |\n    |------------------|-------------------------|--------------|-------------------|------------------------------------------|\n    |  * 数据库(主)     |   mysql-master          |  3306        |  root/123456      |                                          |\n    |  * 数据库(从)     |   mysql-slave1          |  3307        |  root/123456      |                                          |\n    |  * 数据库(从)     |   mysql-slave2          |  3308        |  root/123456      |                                          |\n    |  * KV缓存        |   redis                 |  6379         |  123456           |                                         |\n    |  * 消息中间件     |   rabbitmq              |  5672        |  waynechu/123456  |  http://localhost:15672                  |\n    |  zookeeper       |   zk、zk2、zk3          |  2181-2183    |                   |                                         |\n    |  搜索引擎         |  elasticsearch          |  9200        |                   |                                          |\n    |  日志分析工具     |  kibana                 |  5601         |                   |  http://localhost:5601                  |\n    |  日志收集工具     |  logstash               |  7002         |                   |                                         |\n    |  配置中心         |  apollo                 |  9070        |  apollo/admin     |  http://localhost:8070                  |\n    |  配置中心db       |  apollo-db              |  3316        |                   |                                         |\n    |  * 注册中心       |  eureka                 |  9001-9009   |                   |  http://localhost:9001                  |\n    |  网关             |  gateway               |  9010        |                   |  http://localhost:9010/swagger-ui.html  |\n    |  监控中心         |  boot-admin             |  9020        |                   |  http://localhost:9020                   |\n    |  skywalking-oap  |  skywalking-oap         |  12800       |                   |                                          |\n    |  skywalking-ui   |  skywalking-ui          |  8090        |                   |  http://localhost:8090                   |\n    |  统一认证服务     |  oauth-server           |  9050-9059   |                   |  http://localhost:9050                   |\n    |  代码生成后端服务  |  archetype-portal       |  9060        |                   |  http://localhost:9060                   |\n    |  订单服务         |  service-order          |  10010-10019 |                   |  http://localhost:10010/swagger-ui.html  |\n    |  订单服务         |  service-product        |  10020-10029 |                   |  http://localhost:10020/swagger-ui.html  |\n    |  公共服务         |  service-utility        |  10030-10039 |                   |  http://localhost:10030/swagger-ui.html  |\n\n2. 服务前加`*`代表必须依赖的基础服务，需优先启动  \n3. 启动所有服务会消耗大量的内存，除基础服务外，其它服务可根据需要选择性启动\n4. 服务之间存在依赖关系，compose脚本配置的`depends_on`属性无法决定依赖的服务是否完全启动，如果依赖的服务尚未启动完毕，后续相关服务会报出大量的错误。  \n   推荐按以下顺序初始化容器：  \n   ```\n   docker-compose up -d mysql-master mysql-slave1 mysql-slave2 redis rabbitmq apollo-db  \n   docker-compose up -d apollo elasticsearch  \n   docker-compose up -d skywalking-oap logstash kibana  \n   docker-compose up -d eureka  \n   docker-compose up -d zk  \n   docker-compose up -d gateway boot-admin skywalking-ui  \n   docker-compose up -d {other services}  \n   ```\n5. 使用`--scale`参数可对服务进行水平扩容。如: `docker-compose up -d --scale service-order=2 service-order`  \n\n#### 启动步骤说明\n1. 打包所有模块并构建`docker`镜像  \n    ```\n    # 进入项目根目录\n    cd ./biz-parent\n    # 拉取子模块\n    git submodule update --init --recursive\n    # 打包所有模块并构建docker镜像\n    mvn clean install -Ddockerfile.skip=false\n    ```\n   注:   \n   1. 如果只更改了单个模块的代码，可手动为该模块单独重新构建镜像\n       ```\n       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\n       ```\n   2. 如果`dockerfile-maven-plugin` 抛出 `HttpHostConnectException: Connect to localhost:2375` 异常，需要检查你本地的docker服务是否开启2375端口的服务\n\n2. 启动基础服务。包括主从库、Redis、rabbitmq、apollo数据库等  \n    ```\n    cd ./docker\n    docker-compose up -d mysql-master mysql-slave1 mysql-slave2 redis rabbitmq apollo-db\n    ```\n    注：可使用 `docker-compose logs -f --tail=10` 查看`compose`日志，然后等待基础服务启动完成\n\n3. ~~配置MySQL主从链路~~  \n    **最新版本已经支持脚本自动配置主从复制链路，已无需手动配置，详见`init-master.sh`、`init-slave.sh`**。如出现未自动同步复制链路的情况，可执行以下命令手动配置  \n    1. 登录主库并配置主从同步链路用户权限\n        ```\n        CREATE USER 'replication'@'172.20.0.%' IDENTIFIED WITH mysql_native_password BY 'EiO8Rx4W.T3';\n        GRANT REPLICATION SLAVE ON *.* to 'replication'@'172.20.0.%';\n        flush privileges; -- 刷新权限\n        show master status; -- 记下File、Position信息，配置从库时需要用到\n        ```\n       ![配置主库](./docs/mysql-master.png \"配置主库\")\n        \n    2. 登录从库并启动复制链路(从库都需要执行)\n        ```\n        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;\n        start slave; -- 开启主从复制链路\n        show slave status; -- Slave_IO_Running 和 Slave_SQL_Running 为 YES 代表配置成功\n        ```\n        ![配置从库](./docs/mysql-slave.png \"配置从库\")\n    3. 检测主从链路是否同步成功。修改主库数据，检查从库是否同步即可  \n\n4. 启动apollo、elasticsearch服务。其中apollo为必须依赖，es可选启动\n    ```\n    docker-compose up -d apollo elasticsearch\n    ```\n5. 启动logstash、kibana、skywalking-oap服务。这三个都是可选服务\n    ```\n    docker-compose up -d logstash kibana skywalking-oap\n    ```\n6. 启动eureka服务\n    ```\n    docker-compose up -d eureka\n    ```\n7. 启动网关、boot-admin监控、skywalking控制台。网关为必须依赖服务，其他两个可选\n    ```\n    docker-compose up -d gateway boot-admin skywalking-ui\n    ```\n8. 启动统一认证服务\n    ```\n    docker-compose up -d oauth-server\n    ```\n9. 启动zk集群(sequence分布式id生成器必须依赖)\n    ```\n    docker-compose up -d zk\n    ```\n9. 启动统一其它服务\n    ```\n    docker-compose up -d service-utility\n    docker-compose up -d archetype-portal\n    docker-compose up -d service-order\n    docker-compose up -d service-product\n    ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fw-beatles%2Fbiz-parent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fw-beatles%2Fbiz-parent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fw-beatles%2Fbiz-parent/lists"}