PmHub介绍
::: tip 友情提示
1、快速体验项目:在线访问地址。
2、项目源码:项目源码地址。
3、全套学习教程:《PmHub 学习教程》。
4、项目交流:想要加群交流项目的朋友,可以加入PmHub 项目交流群 。
:::
项目亮点
- 热门技术:项目采用时下企业最新的热门技术框架,如 SpringCloud-Gateway、Nacos、Sentinel等,主打一个硬核,不与真实企业项目脱节。
- 单体与微服务:项目提供单体版本和微服务版本,并能体验从单体架构到微服务架构的改造全过程,深入理解两种架构的优缺点。
- 面试硬核:项目设计贴近校招实际需求,提供把项目写进简历全套模板,提供简历修改及 1V1 咨询服务,帮助学生提升求职竞争力。
- 代码质量:前大厂一线开发现团队 leader 亲自下场,严格遵循代码规范和最佳实践,提高代码质量和维护性。
- 企业工作流:项目提供企业工作流系统,可以快速定制出适合自己公司的企业工作流系统。
项目描述
::: tip 简介
PmHub 是一套基于 SpringCloud Alibaba 分布式微服务 & LLM 的智能项目管理系统,这个项目旨在让同学们快速掌握微服务/分布式项目的架构设计和开发流程,如果想在校招或者社招中拿到一个满意的 offer,PmHub 将是一个非常 nice 的选择。
:::
PmHub 包括用户、流程、项目管理、认证等服务。包含了 Redis 缓存、RocketMQ 消息队列、Docker 容器化、Jenkins 自动化部署、Spring Security 安全框架、Nacos 服务注册和发现、Spring Boot Actuator 服务监控、Skywalking 链路追踪、Sentinel 熔断降级、Seata 分布式事务、Vue 前端框架等互联网开发中需要用到的主流技术栈,可以帮助同学们快速掌握微服务/分布式项目的核心知识点。
如果对开源项目感兴趣,可以关注我们的另外一个实战项目:技术派,一个前后端分离的社区项目。GitHub 上已经星标 1.5k+,不少同学就是靠这个项目在往年的校招中拿到了不错的 offer。
为了方便大家循序渐进式的学习,我们已经推出两个版本:
- SpringBoot 单体架构版本:适合初学者,直接运行 pmhub-boot 模块下的 pmhub-admin 中的 PmhubApplication 类即可。
- 微服务架构版本:适合有一定基础,想进阶学习微服务/分布式的同学,可以分别启动网关、系统、流程、项目管理、认证等多个服务。
可以根据自己的实际情况选择合适的版本进行学习,我们将会倾其所有,在第一时间帮助大家解决所有学习过程遇到的问题,让你的学习曲线变得非常丝滑😁。
关于来个 offer 组织
来个 offer 组织由二哥发起,苍何主理,旨在帮助同学们在校招、社招中拿到满意的 offer。
- 二哥,原创公众号「沉默王二」累计 18 万+ 读者,GitHub 星标 11000+ 开源知识库《二哥的 Java 进阶之路》作者,帮助很多很多同学成功拿到满意的 offer。
- 苍何,原创公众号「苍何」作者,前大厂高级开发,曾就职于蚂蚁金服,科大讯飞,现国企技术总监,技术、管理、面试经验丰富。
加入来个 offer 编程星球后,即可解锁来个 offer 组织下的所有项目的付费文档,以及 1 对 1 的技术面试辅导服务。
项目 | 码云 | GitHub | 简介 |
---|---|---|---|
PmHub | Gitee | GitHub | 一套智能项目管理系统,即将帮助不少同学在接下来的校招/社招中斩获满意 offer。 |
技术派 | Gitee | GitHub | 一个前后端分离的社区项目,帮助过不少同学在秋招中斩获满意 offer。 |
项目详情
技术架构
下面这张系统架构图可以帮助大家快速了解 PmHub 项目的组织架构,从前端到网关、从服务应用到基础服务、从存储技术到运维部署,可以说是一目了然。
下面这张架构选型图可以帮助大家快速了解 PmHub 项目的技术选型,以及在官方手册中会更详细的说明我们为什么选择该技术,毕竟授人以鱼不如授人以渔嘛。
下面这张技术架构图可以帮助大家快速了解 PmHub 项目的技术架构,以及各个模块之间的交互关系。
优质的项目,离不开一张清晰的鸟瞰图(😄)。
项目演示
- 项目仓库(GitHub):https://github.com/laigeoffer/pmhub
- 项目仓库(码云):https://gitee.com/laigeoffer/pmhub (国内访问速度更快)
- 项目演示地址:https://pmhub.laigeoffer.cn(微信搜索「苍何」,关注我们的公众号,回复
pmhub
获取账号和密码,帮我们增加一个粉丝,哈哈哈,开源不易,请满足一下我的虚荣心(😁)。)
代码展示
代码结构
com.laigeoffer.pmhub
├── pmhub-ui // 前端框架 [1024]
├── pmhub-gateway // 网关模块 [6880]
├── pmhub-auth // 认证中心 [6800]
├── pmhub-api // 接口模块
│ └── pmhub-api-system // 系统接口
├── pmhub-base // 通用模块
│ └── pmhub-base-core // 核心模块
│ └── pmhub-base-datasource // 多数据源
│ └── pmhub-base-seata // 分布式事务
│ └── pmhub-base-security // 安全模块
│ └── pmhub-base-swagger // 系统接口
├── pmhub-modules // 业务模块
│ └── pmhub-system // 系统模块 [6801]
│ └── pmhub-gen // 代码生成 [6802]
│ └── pmhub-job // 定时任务 [6803]
│ └── pmhub-project // 项目服务 [6806]
│ └── pmhub-workflow // 流程服务 [6808]
├── pmhub-monitor // 监控中心 [6888]
├──pom.xml // 公共依赖
项目部署
单体版本请参考:单体版本部署手册
环境准备
技术 | 名称 | 版本 | 官网 | |
---|---|---|---|---|
1 | Spring Boot | 基础框架 | 2.7.18 | https://spring.io/projects/spring-boot |
2 | SpringCloud | 微服务框架 | 2021.0.8 | https://spring.io/projects/spring-cloud |
3 | SpringCloud Alibaba | 阿里微服务框架 | 2021.0.5.0 | https://github.com/alibaba/spring-cloud-alibaba |
4 | SpringCloud Gateway | 服务网关 | 3.1.8 | https://spring.io/projects/spring-cloud-gateway |
5 | MyBatis-Plus | 持久层框架 | 3.5.1 | https://baomidou.com |
6 | Redis | 分布式缓存数据库 | Latest | https://redis.io |
7 | RocketMQ | 消息队列 | 2.2.3 | https://rocketmq.apache.org |
8 | HuTool | 小而全的工具集项目 | 5.8.11 | https://hutool.cn |
9 | Maven | 项目构建管理 | 3.9.1 | http://maven.apache.org |
10 | Sentinel | 流控防护框架 | 1.8.6 | https://github.com/alibaba/Sentinel |
11 | Java | 开发版本 | 1.8 | https://www.oracle.com/java/technologies |
后端项目启动
第一步,下载项目源码
①、使用 Git 命令
网络比较通畅的小伙伴可以直接从 GitHub 上拉取,命令如下:
git clone git@github.com:laigeoffer/pmhub.git
国内的小伙伴也可以直接使用码云 Gitee 上的镜像仓库地址拉取:
git clone https://gitee.com/laigeoffer/pmhub.git
②、直接下载压缩包
也可以直接下载 GitHub 上的压缩包,然后解压到本地。
③、直接通过 GitHub 桌面版
我个人一直比较喜欢实用 GitHub 桌面版来管理仓库,图形化界面操作起来也比较舒服。
第二步,使用 Intellij IDEA 导入项目
这一步应该就不需要我多讲了,相信大家都能搞定。
第三步,导入数据库
推荐大家使用 Navicat 这款图形化数据库管理工具。
①、创建数据库 laigeoffer-pmhub
也可以是其他名字,只要在配置文件里修改对应的数据库名即可。
②、导入数据库文件,路径在 pmhub/sql/pmhub_20240305.sql 和 pmhub/sql/pmhub_nacos_20240423.sql
可以直接右键在 terminal 终端中打开,然后通过 pwd 和 ls 命令查看文件的绝对路径。
拿到绝对路径后,就可以在 Navicat 中导入数据库文件了。
导入完成后,刷新一下就可以看到最新的数据库表了。
第四步,基础环境准备
- 1、启动 MySQL
可以选择本机直接安装 MySQL,也可以通过 Docker 的方式,但需要做好磁盘挂载,推荐本机安装!
- 2、启动 Redis
①、如果你是 macOS 用户,可以直接在终端输入redis-server
启动 Redis。
②、如果你是 Windows 用户,可以直接双击 redis-server.exe 启动 Redis。
③、当然也可以直接通过 Docker 启动 Redis。
# 拉取 Redis 镜像:
docker pull redis
# 启动 Redis 容器:
docker run --name my-redis -d redis
- 3、启动 Nacos
官网下载 Nacos,找到 /conf/application.properties 文件,修改数据库连接信息。可以直接复制 pmhub/docker/nacos/conf/application.properties 内容。
修改下数据库配置信息为你自己的数据库,本地启动可以把鉴权关了。
1. 如果数据库名也是 laigeoffer-pmhub,那么只需要修改用户名和密码即可。
2. 如果用户名也是 root,那么只需要修改密码即可。
3. 如果密码也一样,那么就不需要修改了(不可能,绝对不可能这么巧😂)。
①、如果你是 macOS 用户,可以直接在终端输入sh startup.sh -m standalone
启动 Nacos。
②、如果你是 Windows 用户,可以直接双击 startup.cmd 启动 Nacos。
启动成功后访问 http://localhost:8848/nacos 即可看到 Nacos 控制台。默认用户名密码都是 nacos。
第五步,启动各个微服务
注意:如果遇到服务启动失败,可自行查看 nacos 配置是否做了修改,如数据库连接信息等。
①、启动 pmhub-gateway 网关服务
找到 pmhub-gateway 项目,右键 Run PmHubGatewayApplication.main()。
②、启动 pmhub-auth 认证服务
找到 pmhub-auth 项目,右键 Run PmHubAuthApplication.main()。
③、启动 pmhub-system 系统服务
找到 pmhub-system 项目(在pmhub-modules 下),右键 Run PmHubSystemApplication.main()。
pmhub-system 启动前需要修改 nacos 中的 pmhub-system-dev.yml 配置文件,修改数据库连接信息为你自己的数据库。
④、启动 pmhub-project 项目管理服务
找到 pmhub-project 项目(在pmhub-modules 下),右键 Run PmHubProjectApplication.main()。
启动前需要修改 nacos 中的 pmhub-project-dev.yml 配置文件,修改数据库连接信息为你自己的数据库。
⑤、启动 pmhub-workflow 流程管理服务
找到 pmhub-workflow 项目(在pmhub-modules 下),右键 Run PmHubWorkflowApplication.main()。
启动前需要修改 nacos 中的 pmhub-workflow-dev.yml 配置文件,修改数据库连接信息为你自己的数据库。
⑥、启动 pmhub-gen 代码生成服务
找到 pmhub-gen 项目(在pmhub-modules 下),右键 Run PmHubGenApplication.main()。
启动前需要修改 nacos 中的 pmhub-gen-dev.yml 配置文件,修改数据库连接信息为你自己的数据库。
⑦、启动 pmhub-job 定时任务调度服务
找到 pmhub-job 项目(在pmhub-modules 下),右键 Run PmHubJobApplication.main()。
启动前需要修改 nacos 中的 pmhub-job-dev.yml 配置文件,修改数据库连接信息为你自己的数据库。
⑧、启动 pmhub-monitor 监控服务
找到 pmhub-monitor 项目,右键 Run PmHubMonitorApplication.main()。
启动前需要修改 nacos 中的 pmhub-monitor-dev.yml 配置文件,修改监控后台的用户名和密码,以及首页展示标题。
启动成功后可访问:http://localhost:6888/wallboard
可以在线实时查案各个服务的状态以及日志:
前端项目启动
请参考 pmhub-ui 项目的 README.md 文档,前端工程结构说明
Swagger 地址
http://localhost:1024/dev-api/swagger-ui/index.html
服务器部署(Docker 方式)
请参考 项目手册
技术选型
后端技术栈
常见问题答疑
公众号
加微信群交流,关注公众号「苍何」,回复「加群」即可。