ZeroWeb

January 26, 2026 · View on GitHub

Quality Gate Status Coverage Maintainability Rating

ZeroWeb 是一组 BaaS (Backend as a Service),可以低成本地实现认证授权、系统管理、开放平台等功能。提供 gRPC 接口 SDK(后端集成)与 HTTP 接口 SDK(前端集成)。

功能特性

快速启动

复制并调整 docker-compose.yml 后,使用以下命令启动:

docker compose up -d

特点

微服务

ZeroWeb 的每一个微服务能够被独立地测试、构建、部署。微服务之间相互不耦合,也不会将所有微服务打包到一起。

虽然 ZeroWeb 目前的几个微服务使用的都是 Java 语言,然而使用者可以用 Rust、NodeJS,或者任何异构的语言与框架与 ZeroWeb 服务进行集成。

模块化

每一个微服务都被视为一组 HTTP 接口、一组 gRPC 接口的集合。对于使用者而言,只需根据这些接口与之交互,而接口内部是黑盒。

也因此,ZeroWeb 的单元测试针对的是这些 HTTP/gRPC 接口。且接口内部禁止使用 Mock,而是代之以 Testcontainers 保证与数据库等外部服务的对接也是正确的。

容器优先

ZeroWeb 将容器视为基础设施,所以设计是容器友好的。比如配置依靠环境变量实现、服务发现依赖 Docker Network。微服务发布的构件也是以镜像优先,目前并不提供 jar 包。

虽然是容器优先,但是并不意味着不兼容其他方式。ZeroWeb 对基础设施没有显式的依赖。shell 也可以实现环境变量,服务发现也能通过私有 DNS 实现。也就是说,ZeroWeb 是可以通过运维手段,而不需要改代码,就可以实现相当丰富的设计。

约定优先

ZeroWeb 以及与 ZeroWeb 集成的服务需要遵循一些约定。这会让一些事情变得简单。下面用一些例子进行说明。

约定一: 使用 JWT 作为认证头格式。这是微服务可以异构的前提。

约定二: 所有服务(包括前端、后端)通过 GET /metadata/menu.json 返回同构的 JSON 数组,实现菜单自省。通过这种方式,免去了在不同部署(测试环境、生产环境)之间同步菜单的麻烦。

应用架构

应用架构

部署架构

与同类产品的比较

本产品在功能上对标 RuoYi-Vue-Pro —— 一个被广泛使用的管理系统脚手架

功能特性

ZeroWebRuoYi
认证授权
用户管理未来支持
部门管理暂无计划
岗位管理暂无计划
租户管理通过运维手段解决
字典管理
参数管理
消息通知未来支持
附件管理×
第三方应用集成平台×
WebHook未来支持×
国际化管理
定时任务×
代码生成××
流程平台未来支持
操作日志通过运维手段解决
系统监控通过运维手段解决

运维方式

ZeroWebRuoYi
首选集成方式通过 Docker 镜像部署容器。可以与任意技术栈进行集成。拉代码进行二次开发。技术栈基本取决于 RuoYi。
交互方式前端通过 HTTP 或者封装的 JS SDK 进行交互。后端通过 gRPC 进行交互。前端通过 HTTP 进行交互。未封装 SDK,需要拉对应的前端代码。
应用配置推荐修改的配置通过环境变量暴露出来(可以很好地兼容 Docker 与 K8s,也兼容配置中心)。所有配置都需要改配置文件(虽然也可以通过环境变量,但是支持并不良好)。不容易做到不改配置的情况下分发多套软件(即一套代码到处运行)。
DDL管理使用 Liquibase 自动化迁移。应用启动时即执行 DDL。提供 DDL 语句,需要使用者手动执行。
遥测(链路追踪、日志)遵循 OpenTelemetry 协议接入 SkyWalking

开发方式

ZeroWebRuoYi
模块划分将不同的领域分为不同的模块。每个模块构建为独立的 Docker 镜像。领域之间的交互极少。将不同的领域划分为不同的模块。在上帝模块中引入需要的模块。
包划分按功能分包。功能与功能之间通过有限知识的接口进行交互(高内聚低耦合)。可以很轻松地将一个功能迁移到其他模块。同一模块内按 MVC 层次分包。
单元测试CoverageN/A

开发者手册

技术栈

商业化

现在以及将来,都不会对代码本身以及文档进行收费。

可能的收入途径:

  • 捐赠
  • 付费咨询
  • 培训
  • SaaS 化部署
  • 衍生的周边项目
  • 定制化二次开发

License

ZeroWeb 采用 LGPL 3.0 许可证。该许可证保证 ZeroWeb 及衍生品是自由软件,代码、文档将保持开放;同时保证以构件形式集成 ZeroWeb 的项目不会被传染。

如需二次开发,请注意:

  • 禁止修改、删除 copyright 申明。
  • 需要保留 LGPL 3.0 许可证并开源。