Files
dc-tranlog-service/README.md
T
2026-01-26 18:08:01 +08:00

197 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# DC TranLog Server
交易日志服务器 - 处理交易数据、MTC(分钟交易数据)、价格成交量等业务逻辑
## 项目概述
**TranLogServer** 是一个**实时交易日志服务器**,主要用于:
- 接收和处理实时交易数据(股票、期货等金融产品)
- 计算和生成分钟级交易数据(MTC - Minute Transaction Count)
- 提供价格-成交量分析、买卖强度计算等增值服务
- 支持数据重建、备份、同步等功能
本项目是从C++版本转换而来的Java 17 + Spring Cloud Alibaba版本。
## 技术栈
- **Java 17**
- **Spring Boot**
- **Spring Cloud Alibaba**
- **Lombok**
- **MySQL** (可选,用于数据持久化)
## 项目结构
```
dc-tranlog-server/
├── src/main/java/com/afe/dc/tranlog/
│ ├── TranLogServerApplication.java # 主应用类
│ ├── controller/ # 控制器层
│ │ ├── DataReceiverController.java # 数据接收控制器
│ │ ├── DataQueryController.java # 数据查询控制器
│ │ └── TradeDayController.java # 交易日管理控制器
│ ├── service/ # 服务层
│ │ ├── TranLogService.java # 主服务(对应CTranLogServer)
│ │ ├── TranDatabaseService.java # 数据库服务(对应CTranDatabase)
│ │ ├── TranTableService.java # 交易表服务(对应CTranTable)
│ │ ├── MTCLogicService.java # MTC逻辑服务(对应CMTCLogic)
│ │ ├── AccumulatedLogicService.java # 累计数据服务(对应CAccumulatedLogic)
│ │ └── BuySellStrengthService.java # 买卖强度服务(对应CBuySellStrengthLogic)
│ ├── entity/ # 实体类
│ │ ├── TranRecord.java # 交易记录
│ │ ├── TranTable.java # 交易表
│ │ ├── MtcRecord.java # MTC记录
│ │ └── BsRecord.java # 买卖强度记录
│ ├── dto/ # 数据传输对象
│ │ ├── COPItem.java # COP数据项
│ │ ├── TradeDayResponse.java # 交易日响应
│ │ ├── AccumulatedData.java # 累计数据
│ │ └── BuySellStrength.java # 买卖强度
│ ├── config/ # 配置类
│ │ ├── AsyncConfig.java # 异步配置
│ │ └── ScheduleConfig.java # 定时任务配置
│ └── task/ # 定时任务
│ └── ScheduledTask.java # 定时任务类
└── src/main/resources/
└── application.yml # 配置文件
```
## 核心功能
### 1. 数据接收和处理
- 接收实时交易数据(通过REST API或消息队列)
- 处理不同类型的消息(UPDATE、DROP、REBUILD等)
- 管理交易日历和交易时间
### 2. MTC(分钟交易数据)计算
- 将实时交易数据聚合成分钟级数据
- 包含:开盘价、最高价、最低价、收盘价、成交量
### 3. 业务逻辑计算
- **累计数据**:累计成交量和成交额
- **买卖强度**:根据交易价格和成交量计算买卖强度(高/中/低)
- **价格-成交量分析**:价格-成交量分布
### 4. 定时任务
- MTC发送任务(每50ms)
- 定期重建任务(每30s)
- 价格-成交量发送任务(每50ms)
- 开盘维护任务(每天9:00)
- 收盘维护任务(每天16:00)
## 使用说明
### 启动应用
```bash
mvn spring-boot:run
```
### 配置说明
主要配置在 `application.yml` 中:
```yaml
tranlog:
trade:
start-hour: 9
start-minute: 30
period: 240 # 交易时长(分钟)
mtc:
update-period: 50 # MTC更新周期(毫秒)
rebuild:
enabled: true
schedule: "0 0 2 * * ?" # 每天凌晨2点
```
### API接口
#### 1. 接收交易数据
```
POST /api/tranlog/process
Content-Type: application/json
{
"itemNo": 123456,
"msgType": 1,
"fields": {
"1001": {...} // FID_TRAN_LOG
}
}
```
#### 2. 查询MTC记录
```
GET /api/data/mtc/{itemNo}?dateIndex=0&startIndex=0&endIndex=100
```
#### 3. 查询累计数据
```
GET /api/data/accumulated/{itemNo}
```
#### 4. 查询买卖强度
```
GET /api/data/buysell/{itemNo}?is15Tick=false
```
## 架构说明
### C++ 到 Java 的映射关系
| C++ 类 | Java 对应 | 说明 |
|--------|----------|------|
| `CTranLogServer` | `TranLogService` + `DataReceiverController` | 主服务器类 |
| `CTranDatabase` | `TranDatabaseService` | 数据访问层 |
| `CTranTable` | `TranTableService` + `TranTable` | 交易表 |
| `CMTCLogic` | `MTCLogicService` | MTC计算逻辑 |
| `CAccumulatedLogic` | `AccumulatedLogicService` | 累计数据逻辑 |
| `CBuySellStrengthLogic` | `BuySellStrengthService` | 买卖强度逻辑 |
### 数据流
```
外部数据源
↓
DataReceiverController (REST API)
↓
TranLogService::process()
↓
TranDatabaseService::updateTran()
↓
TranTableService::updateTran()
↓
业务逻辑更新 (MTCLogicService, AccumulatedLogicService等)
```
## 注意事项
1. **线程安全**:使用 `ReentrantReadWriteLock` 保证线程安全
2. **内存管理**:数据主要存储在内存中(ConcurrentHashMap),类似Redis
3. **性能优化**:使用异步处理和定时任务提高性能
4. **扩展性**:支持水平扩展,可以部署多个实例
## 开发说明
### 代码转换说明
本项目按照 `source/项目快速理解指南-面向Java程序员.md` 中的转换逻辑进行转换:
1. **C++类 → Java类**:使用Spring的`@Service`、`@RestController`等注解
2. **线程 → 异步**:使用`@Async`和`ThreadPoolTaskExecutor`
3. **定时器 → 定时任务**:使用`@Scheduled`
4. **多播通信 → REST API/消息队列**:使用Spring MVC或RabbitMQ/Kafka
5. **读写锁**:使用`ReentrantReadWriteLock`
### 待完善功能
1. **消息队列集成**:集成RabbitMQ或Kafka接收实时数据
2. **数据持久化**:完善MySQL持久化功能
3. **Redis缓存**:集成Redis缓存热点数据
4. **监控和日志**:集成Spring Boot Actuator和日志系统
5. **单元测试**:添加单元测试和集成测试
## 许可证
Copyright (c) 2025