✅PmHub 技术选型与设计(👍强烈推荐)
你好,这一节我们来聊一聊 PmHub 的技术选型。
背景
PmHub 并不是一个 从 0 开始造轮子的项目,用户权限基础服务我们没有重新开发,我们认为一个优秀的系统一定是站在巨人的肩膀上的,在若依基础后台管理功能的基础上做的二开,比如,我们加了 **mybatis-plus,路由设计、自定义权限注解等基础能力的升级。
不瞒大家说,目前国内大部分中小型公司、科研机构、学校组织的后台管理系统的底层都是基于若依开发的,所以 PmHub 也不想重复造轮子,我们希望给大家展示的是更多的可以体现在简历中的技术亮点,而非基础重复的功能,否则浪费了双方的时间就得不偿失了。
整体介绍
系统架构
基于项目管理系统的分层特点,将整个系统的架构分为:前端展示层、网关控制层、服务应用层、基础服务层、存储技术层、支撑服务层、运行资源层及 CI/CD。

前端展示层
前端展示固然是用户能看到的可视化界面,一般来说可接入设备有 web 浏览器,大屏、移动终端和第三方应用。大家最常见的当然还是在浏览器中访问,因其是基于角色权限的后台管理系统,我们并没单独做 bankend 后台管理服务,而是直接基于角色控制菜单按钮。
- 前端基于 Vue,也是主流前端框架,相对来说大家上手成本较低。
- 还加入了element-ui 组件库,优雅而灵活的 UI 组件库。

网关控制层
网关是前端展示层嗯哼应用服务层之间的枢纽,前端来的所有请求都会经过网关,网关控制层主要含以下三部分;
- WAF:防火墙
- Nginx:前置网关,负责传输层的负载均衡
- API 网关:SpringCloudGateway 负责应用层负载均衡(七层模型中的 LB 应用层)
其中 SpringCloudGateway 网关主要借助其路由、断言、过滤器三方面的能力实现了接口统一鉴权、用户参数传递、接口访问耗时统计等方面的能力。关于这部分的面试题可以参考:

服务应用层
应用层就是我们所说的业务层了,PmHub 最开始是单体应用,核心在于项目管理及流程服务,其他服务如用户服务这些其实都是若依的原有功能,我们在此基础上做了大量的改造和兼容,故而有了上面的各种服务。
在微服务拆分设计上,原先系统的耦合性,我们把用户服务、角色服务、菜单服务这些统统都放在了 pmhub-system 里面,其中涉及太多历史负债了,如果都用来拆分,天知道,是个多大的天坑,而且我们也觉得没必要,在实际应用中,可能用户服务会单独拆开,但其他服务可以保持在一个服务内。

总之就一个核心思想:
微服务不是越多越好,需要针对低耦合高内聚的原则进行合理拆分,防止过度设计,增加整个项目的理解维护成本。
基础服务层/基础组件
基础服务层是我们将一些通用的,工具性的服务抽离出来单独做成的基础服务或者组件,通常拆分的原则是需要独立于业务之外,可作为通用的组件存在,比如通用消息组件、redis 服务、seata 服务、web 通用组件等。更多组件大家可以直接在 pmhub-base 模块下查看。

通常这部分并不是微服务,而是作为 jar 包引入到需要用到的微服务下面,但需要保证版本的对应性关系。
存储技术层
村塾技术层其实和存储相关,在目前计算机世界中的存储,主要有如下几种类型:
- 关系型数据库,如 MySQL
- 时序数据库
- Nosql,如 redis
- 分布式存储
非物联网应用,PmHub 暂时还没用到时序库,所以目前主要用到的还是 MySQL 和 Redis。
其中 Redis 我们这部分大家也可以结合以下两篇高质量面试教程来更好的理解:
✅PmHub实现Redis加Lua脚本基于计数器算法的限流(👍必看)
✅PmHub集成Redis分布式锁保障流程状态更新(👍必看)
支撑服务层
支撑服务其实就是运维相关了,应用服务无论是泡在单机还是集群下面,都需要相对应的资源来支撑,比如 CDN、安全防护、以及中间件服务器等。
运行资源层
这部分其实就是服务器资源了,通常在公司,内部系统会部署在内网服务器,外部系统会部署在云服...
企业级Agent工作流编排项目PaiFlow
Vibe Coding版本的PaiAgent
派聪明RAG AI知识库Java版本+Go版本
微服务 PmHub、技术派、MYDB
求职派JobClaw(OpenClaw/Hermes架构
PaiCLI(类似Claude Code的Agent
派简历(代码已完成)
等实战项目。
1. 微信扫右侧的优惠券加入知识星球
2. 解锁星球的实战项目教程和源码: 项目源码+教程获取
真诚点赞 诚不我欺
回复