Skip to content

MolanDev一套代码,单体与微服务自由切换

革命性双模驱动架构,从单体极速开发到微服务平滑演进,无需重构

MolanDev Logo

什么是 MolanDev?

MolanDev 是一个完整的开源解决方案,包含框架、应用与 AI 能力:

组件说明文档
MolanDev Framework支持单体/微服务自由切换的应用框架框架文档
MolanDev Cloud基于框架构建的企业级管理系统应用文档
MolanDev Knowledge企业级 RAG 知识库服务知识检索
AI Agent 集成Meta-Tool 模式的 LLM 工具调用实践AI 集成

📊 量化指标

  • 15+ 核心模块
  • 2000+ 单元测试
  • 50+ 业务工具支持
  • MIT 开源协议

🛠️ 技术栈

层级技术
后端Spring Boot 3.5 · Spring AI 1.1 · MyBatis-Plus 3.5
前端Vue 3 · Element Plus · Vite
AIqwen3-rerank · RAG · SSE 流式输出
安全RSA+AES · 接口防篡改 · 数据脱敏

🎯 解决什么问题?

传统方案的痛点

  • 初期微服务过度设计:团队 2-3 人,却要维护 10+ 服务
  • 后期重构推倒重来:业务扩展时,单体代码已深度耦合,只能重写
  • 调试效率低下:微服务联调复杂,本地开发环境搭建困难

MolanDev 的方案

  • 一套代码双模自适应molandev.run-mode: single/cloud 一行切换
  • 从 0 到 1 极速启动:单体模式本地调试,告别微服务调试地狱
  • 从 1 到 N 平滑演进:业务扩展时按需拆分,无需推翻重来

🚀 核心特性

双模部署实战

yaml
# application.yml
molandev:
  run-mode: single  # 单体:事件本地分发
  # run-mode: cloud  # 微服务:事件通过 RabbitMQ 跨服务传递

接口即服务

java
// 定义 API 接口
@FeignClient(name = "user-service")
public interface UserApi {
    @GetMapping("/user/get")
    UserDTO getUserById(@RequestParam Long id);
}

// 实现接口(无需写 Controller)
@Service
public class UserServiceImpl implements UserApi {
    @Override
    public UserDTO getUserById(Long id) {
        return userMapper.selectById(id);
    }
}

// 框架自动判断:同服务本地调用,跨服务远程调用

后端特色

  • RBAC 权限:用户-角色-菜单的灵活权限体系
  • 字典自动翻译@DictFormat 注解自动翻译代码值
  • 操作日志@Log 注解自动记录操作信息
  • 定时任务:DelayQueue 实现的轻量级任务调度

💡 为什么选择 MolanDev?

对比项传统方案MolanDev
初期架构微服务过度设计单体极速启动
业务扩展推倒重来按需拆分
开发调试微服务联调困难本地如丝般顺滑
代码复用两套代码维护一套代码双模
学习成本分散各文档完整生态一站

🌟 Star History

如果这个项目对你有帮助,请给我们一个 Star ⭐

Star History

🤝 社区与支持

📄 开源协议

MIT License - 自由使用,无任何限制