本Demo基于云原生理念,使用TypeScript/Node.js技术栈,模拟实时数据湖仓一体架构的核心思想:
数据源 → 数据摄取 → 实时处理 → 分层存储 → 统一查询 → 数据治理
| 概念组件 | 技术栈实现 | 说明 |
|---|---|---|
| Apache Kafka | Redis Streams | 消息队列,实现数据流 |
| Apache Flink | Node.js Stream Processing | 实时数据处理引擎 |
| Apache Hudi/Iceberg | PostgreSQL分层表 | 数据湖存储层 |
| ClickHouse/Doris | PostgreSQL + 索引优化 | 分析查询引擎 |
| Airflow | Node-cron | 任务调度 |
| Atlas/DataHub | 元数据API | 数据治理 |
| Kubernetes | Docker Compose | 容器化部署 |
src/
├── config/ # 配置管理
├── services/ # 核心服务
│ ├── ingestion/ # 数据摄取服务(模拟Kafka)
│ ├── processing/ # 实时处理服务(模拟Flink)
│ ├── storage/ # 存储服务(数据湖)
│ └── query/ # 查询服务(分析引擎)
├── controllers/ # API控制器
├── models/ # 数据模型
├── middleware/ # 中间件
└── utils/ # 工具函数
infrastructure/ # 基础设施
├── docker/ # Docker配置
├── postgres/ # 数据库脚本
├── elk/ # ELK配置
└── ci-cd/ # CI/CD配置
- 数据摄取层: 模拟实时数据源,通过Redis Streams实现消息队列
- 实时处理层: 使用Node.js Stream处理,实现窗口计算、聚合等
- 存储层: PostgreSQL实现分层存储(Bronze/Silver/Gold)
- 查询层: RESTful API提供统一数据访问接口
- 治理层: 元数据管理、血缘追踪、质量监控
- 容器化: Docker + Docker Compose
- 监控: ELK Stack (Elasticsearch + Logstash + Kibana)
- CI/CD: GitHub Actions
- 数据库: PostgreSQL
- 缓存: Redis
- Docker & Docker Compose
- Node.js 18+ (本地开发)
- Git
# 克隆项目
git clone <repository-url>
cd dataapi
# 启动所有服务
./start.sh- 主应用: http://localhost:3000
- API文档: http://localhost:3000
- Kibana: http://localhost:5601
- pgAdmin: http://localhost:8080
- Redis Insight: http://localhost:8001
查看 API_EXAMPLES.md 了解详细的API使用示例。
- Redis Streams模拟Kafka的消息队列功能
- Node.js Stream Processing实现窗口计算和实时聚合
- 支持多消费者组和负载均衡
- Bronze层: 原始数据存储,保持数据完整性
- Silver层: 清洗和丰富的数据,提供业务价值
- Gold层: 聚合指标和业务KPI,支持快速查询
- RESTful API提供统一数据访问
- 支持实时查询和历史数据分析
- 内置数据质量监控和血缘追踪
- 元数据管理和血缘追踪
- 数据质量自动监控
- 多维度数据分析和报告
- ELK Stack提供全栈日志监控
- 实时性能指标和健康检查
- 分布式链路追踪
# 安装依赖
npm install
# 启动开发服务器
npm run dev
# 构建项目
npm run build
# 运行测试
npm test# 构建镜像
docker build -t data-lakehouse-demo .
# 运行容器
docker run -p 3000:3000 data-lakehouse-demo# 应用日志
docker-compose logs -f dataapi
# 所有服务日志
docker-compose logs -f
# 特定服务日志
docker-compose logs -f postgres redis elasticsearch# 停止服务
docker-compose down
# 重启服务
docker-compose restart
# 清理数据
docker-compose down -v# API健康检查
curl http://localhost:3000/api/v1/health
# 服务状态
docker-compose ps