服务介绍
服务分层介绍
为了尽可能的对项目进行解耦,mdp为一个服务拆分为6个jar,6个jar组合起来就组成一个服务。6个jar分别命名为启动层、请求处理层、业务层、持久层、实体层、接口适配层。
启动层(server层)
存放启动类,全局配置、配置文件。
请求处理层(web层)
主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。
业务层(service层)
相对具体的业务逻辑服务层。
持久层(dao层)
数据访问层,通过mybatis+mybatis-flex能力,与底层数据库进行数据交互。
实体层(pojo层)
存放实体类、dto、vo、query、枚举类等。
接口适配层(facade层)
存放跨服务调用的接口,适配层包含为3个子模块:xxx-api、xxx-boot-impl、xxx-cloud-impl。
console-api
- API层,用于封装跨服务的接口
核心作用是封装跨服务交互接口,作为架构适配的统一入口。为实现 “一套代码兼容单体 / 微服务双架构”的设计目标,将所有跨服务调用逻辑收敛于此,通过不同实现类适配不同架构,降低架构迁移成本。
- API层,用于封装跨服务的接口
console-boot-impl
单体架构下的 API 实现载体,采用 “本地直连” 方式:直接调用 console-service 层接口完成业务逻辑,避免远程调用开销,适配单体架构的性能需求。单体架构下,典型调用链:A服务Controller或者Service → B服务-api → B服务-boot-impl → B服务-service
console-cloud-impl
微服务架构下的 API 实现载体,采用 “远程调用” 方式:封装 OpenClient 或 RPC 接口,通过调用远程服务的 console-web 层接口完成跨服务交互,适配微服务的分布式部署场景。微服务架构下,典型调用链:A服务Controller或者Service → B服务-api → B服务-cloud-impl → 远程调用 → B服务-web → B服务-service
依赖关系
单个服务的依赖关系如下:
从图中可以看出,单体版的 boot-server 就相当于微服务版的 workbench-server+console-server + open-server。


跨服务调用时,依赖关系如下:
对于api层的同一个接口,需要为单体版和微服务版提供2个不同的实现类,并将不同的实现类依赖加入单体版或微服务版的启动层。


关于worker-server和api-server
为什么单体版的worker-server等价于微服务版的api-server?
工作台、控制台、开发者中心3个服务用于处理Web端和移动端的业务逻辑,而定时任务和对外提供的数据的接口抽出来独立为1-2个服务即可解耦,亦可分担业务服务的压力。
在单体架构中
- 需要web端和移动端的功能,只需要启动boot-server服务
- 需要对外提供接口,只需要启动sop-gateway-server和worker-server(在开发环境可使用zookeeper,生产环境使用nacos)。
- 需要定时任务,只需要启动PowerJob和worker-server。
在微服务架构中
- 需要web端和移动端的功能,只需要启动工作台、控制台、开发者中心、inner-gateway-server。(使用nacos)
- 需要对外提供接口,只需要启动sop-gateway-server和 api-server(使用nacos)。
- 需要定时任务,只需要启动PowerJob和 api-server。
服务介绍

工作台服务
项目名:md-workbench。主要提供以下功能接口:
- 登录、退出、注册
- SSO、Oauth2等单点登录对接接口
- 应用列表、应用免密跳转
- 登录日志
- 消息中心
- 个人中心
控制台服务
项目名:md-console。主要提供以下功能接口:
- 组织、岗位、用户
- 资源(菜单、按钮、接口)、数据权限、角色
- 系统配置、字典、文件、操作日志
- 消息任务、消息管理、消息模板、接口配置、接口日志
开发者平台服务
项目名:md-open。主要提供以下功能接口:
应用管理、应用申请、应用审核
开放接口、接口文档、帮助文档、oauth2权限、接口调用日志、接口回调记录
应用-接口权限
事件管理、事件触发、事件推送记录
对外接口服务
项目名:md-api。微服务架构时使用。主要提供以下功能接口:
- 单体架构中 worker-server 负责 定时任务执行、对外接口调用
- 微服务架构中 api-server 只负责对外接口调用;worker-server 只负责定时任务执行。
- 对外提供的消息发送、短信发送、邮件发送接口
- 组织增删改查接口
- 用户增删改查接口
内部网关服务
项目名:inner-gateway-server。在微服务架构时使用,提供给Web端、移动端使用。主要提供以下功能接口:
- 接口鉴权
- 接口路由
接口网关服务
项目名:sop-gateway-server。在微服务和单体架构时使用,提供给第三方接口使用。主要提供以下功能接口:
- 接口鉴权、限流
- 对接口服务负载
单体服务
项目名:boot-server。在单体架构时使用,作为单体架构的启动层。主要提供以下功能:
- 工作台服务 全部功能
- 控制台服务 全部功能
- 开发者平台 全部功能
- 内部网关服务 全部功能
定时执行器服务
项目名:worker-server。在单体架构时使用。主要提供以下功能:
- 单体架构中 worker-server 负责 定时任务执行、对外接口调用
- 微服务架构中 api-server 只负责对外接口调用;worker-server 只负责定时任务执行。
- 对外提供的消息发送、短信发送、邮件发送接口
- 组织增删改查接口
- 用户增删改查接口
- 定时任务执行
定时调度器服务
项目名:PowerJob。分布式调度器,直接使用开源项目即可:https://gitee.com/KFCFans/PowerJob。主要提供以下功能:
- 定时调度
项目启动项
单体架构启动
- 中间件
- mysql
- redis
- zookeeper
- 文件本地存储
- 后端服务
- boot-server
- worker-server
- sop-gateway-server
- PowerJob
- 前端项目
- web-workbench
- web-console
- web-open
- 中间件
- mysql
- redis
- nacos
- RustFS/MinIO/云存储 等任意一个外部OSS
- 后端服务
- boot-server
- worker-server
- sop-gateway-server
- PowerJob
- 前端项目
- web-workbench
- web-console
- web-open
- 中间件
- mysql
- redis
- nacos
- RustFS/MinIO/云存储 等任意一个外部OSS
- 后端服务
- boot-server
- worker-server
- sop-gateway-server
- PowerJob
- 前端项目
- web-workbench
- web-console
- web-open
按需启动
- 需要系统功能时
- 后端服务仅需启动 boot-server
- 前端项目按需启动 web-workbench、web-console、web-open
- 中间件仅需mysql、redis,无需nacos/zookeeper
- 需要对外提供接口时
- 后端服务仅需启动 worker-server、sop-gateway-server。
- 前端项目无需启动
- 中间件需 mysql、redis,nacos/zookeeper(2选1)
- 需要执行定时任务时
- 后端服务仅需启动 PowerJob、worker-server
- 前端项目无需启动
- 中间件仅需 mysql、redis,无需nacos/zookeeper
微服务架构启动
- 中间件
- mysql
- redis
- nacos
- 文件本地存储
- 后端服务
- console-server
- workbench-server
- open-server
- api-server
- inner-gateway-server
- sop-gateway-server
- PowerJob
- 前端项目
- web-workbench
- web-console
- web-open
- 中间件
- mysql
- redis
- nacos
- RustFS/MinIO/云存储 等任意一个外部OSS
- 后端服务
- console-server
- workbench-server
- open-server
- api-server
- inner-gateway-server
- sop-gateway-server
- PowerJob
- 前端项目
- web-workbench
- web-console
- web-open
- 中间件
- mysql
- redis
- nacos
- RustFS/MinIO/云存储 等任意一个外部OSS
- 后端服务
- console-server
- workbench-server
- open-server
- api-server
- inner-gateway-server
- sop-gateway-server
- PowerJob
- 前端项目
- web-workbench
- web-console
- web-open
按需启动
- 需要系统功能时
- 后端服务需启动 inner-gateway-server、workbench-server、console-server、open-server
- 前端项目按需启动 web-workbench、web-console、web-open
- 中间件需 mysql、redis,nacos
- 需要对外提供接口时
- 后端服务仅需启动 api-server、sop-gateway-server。
- 前端项目无需启动
- 中间件需mysql、redis,nacos
- 需要执行定时任务时
- 后端服务仅需启动 PowerJob、api-server
- 前端项目无需启动
- 中间件仅需mysql、redis,无需nacos