PmHub 是一套基于 SpringCloud & SpringCloud Alibaba & LLM 的分布式微服务的智能项目管理系统,这个项目旨在让同学们快速掌握微服务/分布式项目的架构设计和开发流程,如果想在校招或者社招中拿到一个满意的 offer,PmHub 将是一个非常 nice 的选择。
- 热门技术:采用时下企业最新的热门技术框架,如 SpringCloud-Gateway、Nacos、Sentinel等,主打一个硬核,不与真实企业项目脱节;
- 单体与微服务:提供单体和微服务,并能体验从单体到微服务架构的改造全过程,深入理解两种架构的优缺点;
- 面试硬核:设计贴近校招实际需求,提供把项目写进简历全套模板,提供简历修改及 1V1 咨询服务;
- 代码质量:前大厂一线开发现团队 leader 亲自下场,严格遵循代码规范和最佳实践,提高代码质量和维护性;
- 持续集成:提供持续集成和持续部署的完整配置,带你从 0-1 用 docker 上线项目;
- 产品设计:提供产品设计文档,包括产品需求、产品架构、产品原型等,在线查看产品原型;
- 企业工作流:项目提供企业工作流系统,可以快速定制出适合自己公司的企业工作流系统。
PmHub 包括认证、流程、项目管理、系统、网关等服务。包含了 Redis 缓存、RocketMQ 消息队列、Docker 容器化、Jenkins 自动化部署、Spring Security 安全框架、Nacos 服务注册和发现、sentinel 分布式事务、Spring Boot Actuator 服务监控、SkyWalking 链路追踪、OAuth2 统一认证、OpenFeign 服务调用,Vue3 前端框架等互联网开发中需要用到的主流技术栈,可以帮助同学们快速掌握微服务/分布式项目的核心知识点。
并且同时 PmHub 也是一套企业工作流的开发框架,您可以根据自身需求,快速定制出适合自己公司的企业工作流系统。
如果对开源项目感兴趣,可以关注来个 offer 的另外一个实战项目:技术派,一个前后端分离的社区项目。GitHub 上已经星标 1.5k+,不少同学就是靠这个项目在往年的校招中拿到了不错的 offer。
为了方便大家循序渐进式的学习,我们已经推出两个版本:
- 单体架构版本:适合初学者,直接运行 pmhub-boot 模块下的 pmhub-admin 中的 PmhubApplication 类即可。
- 微服务架构版本:适合有一定基础,想进阶学习微服务/分布式的同学,可以分别启动网关、认证、流程、项目管理、代码生成等多个服务。
可以根据自己的实际情况选择合适的版本进行学习,我们将会倾其所有,在第一时间帮助大家解决所有学习过程遇到的问题,让你的学习曲线变得非常丝滑😁。
- 项目文档教程:https://laigeoffer.cn/
- 在线体验地址:https://pmhub.laigeoffer.cn/
此为 PmHub 微服务版本说明文档!单体版本说明文档请移步:单体版本说明
来个 offer 组织由二哥发起,苍何主理,旨在帮助同学们在校招、社招中拿到满意的 offer。
- 二哥,原创公众号“沉默王二”累计 18 万+ 读者,GitHub 星标 11000+ 开源知识库《二哥的 Java 进阶之路》作者,帮助很多很多同学成功拿到满意的 offer。
- 苍何,原创公众号“苍何”作者,CSDN 博客专家,阿里云专家博主,GitHub 开发者计划成员,前大厂技术专家,技术、管理、面试经验丰富。
加入PmHub官方编程星球后,即可解锁来个 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 [email protected]:laigeoffer/pmhub.git
国内的小伙伴也可以直接使用码云 Gitee 上的镜像仓库地址拉取:
git clone https://gitee.com/laigeoffer/pmhub.git
②、直接下载压缩包
也可以直接下载 GitHub 上的压缩包,然后解压到本地。
③、直接通过 GitHub 桌面版
我个人一直比较喜欢实用 GitHub 桌面版来管理仓库,图形化界面操作起来也比较舒服。
这一步应该就不需要我多讲了,相信大家都能搞定。
推荐大家使用 Navicat 这款图形化数据库管理工具。
①、创建数据库 laigeoffer-pmhub
也可以是其他名字,只要在配置文件里修改对应的数据库名即可。
②、导入数据库文件,路径在 pmhub/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 文档,前端工程结构说明
http://localhost:1024/dev-api/swagger-ui/index.html
请参考 项目手册
后端技术栈
PmHub 教程共 100+ 篇,从中整理出 15 篇,供大家免费学习。
- (🌟 新人必看)PmHub 系统架构&功能模块一览
- (🌟 新人必看)小白如何学习 PmHub
- (🌟 新人必看)如何将 PmHub 写入简历
- (🌟 新人必看)PmHub 架构方案设计
- (🌟 新人必看)PmHub 技术方案设计
- (🌟 新人必看)PmHub 项目管理流程
- (🌟 新人必看)PmHub 分层架构
- (🌟 新人必看)PmHub 项目工程搭建手册
- (👍 强烈推荐)PmHub 实现接口流量耗时统计
- (👍 强烈推荐)PmHub Mysql/Redis缓存一致性
- (👍 强烈推荐)PmHub 消息队列 Rocketmq
- (👍 强烈推荐)PmHub 实现接入 flowable 流程管理
- (👍 强烈推荐)PmHub 分布式事务实现
- (👍 强烈推荐)PmHub 定时任务实现
- (👍 扬帆起航)送给坚持到最后的自己,一起杨帆起航
工具 | 说明 | 官网 |
---|---|---|
IDEA | java开发工具 | https://www.jetbrains.com |
visualstudio | web开发工具 | https://code.visualstudio.com/ |
Chrome | 浏览器 | https://www.google.com/intl/zh-CN/chrome |
ScreenToGif | gif录屏 | https://www.screentogif.com |
SniPaste | 截图 | https://www.snipaste.com |
PicPick | 图片处理工具 | https://picpick.app |
MarkText | markdown编辑器 | https://github.com/marktext/marktext |
curl | http终端请求 | https://curl.se |
Postman | API接口调试 | https://www.postman.com |
draw.io | 流程图、架构图绘制 | https://www.diagrams.net/ |
Axure | 原型图设计工具 | https://www.axure.com |
navicat | 数据库连接工具 | https://www.navicat.com |
DBeaver | 免费开源的数据库连接工具 | https://dbeaver.io |
iTerm2 | mac终端 | https://iterm2.com |
windows terminal | win终端 | https://learn.microsoft.com/en-us/windows/terminal/install |
SwitchHosts | host管理 | https://github.com/oldj/SwitchHosts/releases |
工具 | 版本 | 下载 |
---|---|---|
jdk | 1.8+ | https://www.oracle.com/java/technologies/downloads/#java8 |
maven | 3.4+ | https://maven.apache.org/ |
mysql | 5.7+/8.0+ | https://www.mysql.com/downloads/ |
redis | 5.0+ | https://redis.io/download/ |
elasticsearch | 8.0.0+ | https://www.elastic.co/cn/downloads/elasticsearch |
nginx | 1.10+ | https://nginx.org/en/download.html |
rocketmq | 5.0.4+ | https://www.rabbitmq.com/news.html |
ali-oss | 3.15.1 | https://help.aliyun.com/document_detail/31946.html |
git | 2.34.1 | http://github.com/ |
docker | 4.10.0+ | https://docs.docker.com/desktop/ |
freessl | https证书 | https://freessl.cn/ |
内置功能我们使用了若依的框架,为什么要用若依,一来我们觉得基础的后台功能没有必要再重复造轮子,我们需要节省时间花力气在项目核心业务上,二来我们希望站在巨人的肩膀上,若依是后台系统中很优秀的框架,我们基于其做的二次开发,相信也能再创辉煌!
- 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
- 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
- 岗位管理:配置系统用户所属担任职务。
- 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
- 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
- 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
- 参数管理:对系统动态配置常用参数。
- 通知公告:系统通知公告信息发布维护。
- 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
- 登录日志:系统登录日志记录查询包含登录异常。
- 在线用户:当前系统中活跃用户状态监控。
- 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
- 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
- 系统接口:根据业务代码自动生成相关的api接口文档。
- 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
- 缓存监控:对系统的缓存信息查询,命令统计等。
- 在线构建器:拖动表单元素生成相应的HTML代码。
- 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
- paicoding :⭐️一款好用又强大的开源社区,基于 Spring Boot、MyBatis-Plus、MySQL、Redis、ElasticSearch、MongoDB、Docker、RabbitMQ 等主流技术栈
- toBeBetterjavaer :🚀一份通俗易懂、风趣幽默的Java学习指南,内容涵盖Java基础、Java并发编程、Java虚拟机、Java企业级开发、Java面试等核心知识点。学Java,就认准二哥的Java进阶之路😄
- CodeCanvas :📚本代码仓库是作者苍何多年从事一线互联网Java开发的学习历程技术汇总,旨在为大家提供一个清晰详细的学习教程,侧重点更倾向编写Java核心内容。💪🏻
感谢所有参与开源贡献的小伙伴,PmHub 因你们而更强大!
微信搜 苍何 或扫描下方二维码关注苍何的原创公众号,回复 666 即可免费领取 2000G 编程学习资源。
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
Copyright (c) 2023-2024 PmHub(苍何、沉默王二)