# tnb 微服务实践, 本项目实现了一个类似 bilibili 的 VOD 系统后端 > 客户端包括 Web 应用和 Android 应用 > > 分别由 [tnbapp](https://git.reghao.cn/reghao/tnbapp) 项目和 [tnbdroid](https://git.reghao.cn/reghao/tnbdroid) 项目提供 ## 版本 ### jdk 和框架 - os:Linux > 推荐使用 Debian11 > > Windows 系统理论上可以运行, 但未实践 - jdk:17 - maven:3.9.11 - spring:6.1.2 > https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-6.1-Release-Notes - springboot:3.2.1 > https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.2-Release-Notes - springcloud:2023.0.1 > https://github.com/spring-cloud/spring-cloud-release/wiki/Spring-Cloud-2023.0-Release-Notes ### 第三方依赖 - mysql:5.7 - redis:6.0.16 - rabbitmq:3.8.9 - zookeeper:3.8.4 - mongodb:4.4 - nacos-server:v2.4.1 - elasticsearch:7.17.18 > 仅 search-service 依赖, 选用 lucene 则不再需要 elasticsearch ## 模块 tnb 项目模块: - eureka:6060 > 不依赖第三方 - gateway:6000 > 依赖 redis, rabbitmq - account:6001 > 依赖 mysql, redis, zookeeper, rabbitmq - message:6002 > 依赖 mysql, redis, zookeeper, rabbitmq - file:6003 > 依赖 mysql, redis, zookeeper - user:6004 > 依赖 mysql, redis, zookeeper - content:6005 > 依赖 mysql, redis, zookeeper, rabbitmq, mongodb - data:6006 > 依赖 mysql, redis, rabbitmq, mongodb - search:6007 > 依赖 mysql, redis, zookeeper, rabbitmq, mongodb, elasticsearch, nacos > > 选用 lucene 则不再需要 elasticsearch - oss-store:4010 > 依赖 mysql ## 构建部署 ### pull 项目源码 ``` cd ~/Downloads git clone https://git.reghao.cn/reghao/tnb.git ``` ### 初始化 MySQL ``` cd ~/Downloads/tnb/zzz bash db_init.sh ``` > 执行 db_init.sh 会自动创建 tnb 项目需要的数据库并初始化数据库表 > > 需要自行指定 db_init.sh 脚本中的 host, username, password 等变量值 ### 构建并运行 ``` cd ~/Downloads/tnb/zzz bash build_jar.sh ``` > 执行 db_init.sh 会自动构建并运行 tnb 项目各应用 jar 包 > > build_jar.sh 脚本中的 proj_dir 变量默认是 ~/Downloads/tnb > > mvn 构建默认使用 dev 环境, 所以需要修改每个应用 resources/application-dev.yml 配置文件中的第三方服务配置 > > 默认运行的是 jar 包, 也可构建并运行 docker 镜像, 详见 build_jar.sh 脚本的 build_image 和 exec_image 函数 ### 停止应用 ``` cd ~/Downloads/tnb/zzz bash shutdown.sh ``` > 执行 shutdown.sh 会结束 tnb 项目中的各个应用 ## 其他 本项目模块太多, 构建部署都太过繁琐, 推荐使用 [bnt](https://git.reghao.cn/reghao/bnt) 项目提供的 devops 系统来自动构建部署应用.