DryDock 是一个基于 Vert.x 和 Keel 框架构建的 Java 微服务应用程序框架,采用军舰类比的设计模式,提供了完整的应用程序生命周期管理和基础设施支持。

📖 框架概述

DryDock 框架以海军舰船和航空兵的概念来抽象不同类型的应用程序,提供了从简单控制台应用到复杂微服务的完整解决方案。框架核心特性包括:

🏗️ 架构模块

🚢 Naval Package - 海军包

传统Web应用和后台服务的核心模块

海军包提供了基于舰船概念的应用程序架构,适用于传统的Web应用和后台服务。

适用场景:

✈️ Aviation Package - 航空包

现代微服务架构的推荐模块

航空包采用航母-舰载机设计模式,是2.0版本推荐的微服务架构,替代了Naval包中已弃用的组件。

核心组件:

🔧 Common Package - 通用包

所有模块的基础设施和工具

通用包提供了框架的基础能力和混入接口,为所有其他模块提供统一的基础设施。

核心接口:

🚀 快速开始

选择合适的基础类

应用类型 推荐方案 主要特性
现代微服务 AircraftCarrier 完整微服务框架,支持HTTP/队列/定时任务
Web API服务 Ironclad HTTP服务器 + 健康监控
需要监控的应用 Caravel 健康监控 + 阿里云SLS
简单控制台应用 Galley 基础功能,完全自定义
一次性任务 Privateer 快速启动,轻量级
代码生成工具 ClassFileGeneratorForMySQLTables MySQL表类自动生成

基本使用示例

微服务应用(推荐)

public class MyMicroservice extends AircraftCarrier {
    @Override
    protected String buildCliName() { return "my-service"; }
    
    @Override
    protected Bomber constructBomber() { return new MyBomber(this); }
    
    @Override
    protected Drone constructDrone() { return new MyDrone(this); }
    
    @Override
    protected Fighter constructFighter(Integer port) { 
        return new MyFighter(this, port); 
    }
    
    public static void main(String[] args) {
        new MyMicroservice().launch(args);
    }
}

Web API服务

public class MyWebService extends Ironclad {
    @Override
    protected Future<Void> launchAsIronclad() {
        // 初始化业务逻辑
        return Future.succeededFuture();
    }
    
    @Override
    public void configureHttpServerRoutes(Router router, KeelIssueRecorder<KeelEventLog> logger) {
        router.get("/api/health").handler(ctx -> ctx.response().end("OK"));
        router.get("/api/users").handler(this::handleGetUsers);
    }
}

📊 版本兼容性

版本 状态 主要变更 推荐使用
2.0.x 当前版本 引入Aviation包,弃用部分Naval组件 ✅ AircraftCarrier系列
1.x 维护中 Naval包的稳定版本 ⚠️ 逐步迁移到2.0

迁移指南

从弃用组件迁移:

🔧 配置和部署

基础配置文件

# config.properties
app.name=my-application
app.version=1.0.0

# 阿里云SLS配置(可选)
aliyun.sls.project=your-project
aliyun.sls.logstore=your-logstore
aliyun.sls.endpoint=your-endpoint

# 数据库配置(如需要)
mysql.host=localhost
mysql.port=3306
mysql.database=your_db

启动命令

# 启动完整微服务
java -jar my-app.jar

# 禁用特定组件
java -jar my-app.jar --disableQueue --disableSundial

# 指定HTTP端口
java -jar my-app.jar --receptionistPort=8080

🏆 最佳实践

1. 架构选择

2. 配置管理

3. 监控和日志

4. 错误处理

🤝 贡献和反馈

DryDock框架持续演进中,欢迎:


快速导航:

版本信息: DryDock 2.0.x 文档更新时间:2025年