# dwarfeng-dht
**Repository Path**: dwarfeng/dwarfeng-dht
## Basic Information
- **Project Name**: dwarfeng-dht
- **Description**: DHT 高速数据传输协议支持
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-06-13
- **Last Updated**: 2026-06-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# dwarfeng-dht
DHT 高速数据传输协议支持。
Data High-speed Transmission for DwArFeng
该项目提供 DHT(Data High-speed Transmission)高速数据传输二进制协议的编解码能力,将带通道、时间和值的数据编码为紧凑的二进制帧,
并支持从二进制帧还原数据,项目基于 `subgrade` 构建。
---
## 特性
1. Subgrade 架构支持。
2. 标准数据结构:`Data`、`GeneralData`(毫秒时间基线 + 毫秒内纳秒偏移)。
3. 面向高速传输场景的 DHT 二进制帧编解码:9 字节协议头、4 字节子包头、大端序字段布局。
4. 通道编解码器映射:通过 `DhtConfig` 维护通道 ID 与 `ValueCodec` 的绑定关系。
5. 内置基础值编解码器:支持字节、短整型、整型、长整型、浮点型、双精度浮点型、布尔、字符串、字符、日期和字节数组。
6. 高速数据分组编码:按通道 ID 与毫秒时间戳聚合数据,同一帧内承载多个纳秒偏移子包。
7. 数据解码还原:从 DHT 帧中还原通道、发生时间、毫秒内纳秒偏移和值。
8. 支持通过 `DhtQosService` 在单处理器和多处理器场景中统一访问 DHT 编解码能力。
9. 支持 Spring XML XSD 命名空间配置。
10. `dwarfeng-dht-api` 模块提供 spring-telqos 集成(`DhtCommand`)。
运行 `dwarfeng-dht-core/src/test` 下的示例以观察核心特性。
| 示例类名 | 说明 |
|-------------------------------------------------|-------------|
| com.dwarfeng.dht.node.example.DhtHandlerExample | DHT 编解码流程示例 |
运行 `dwarfeng-dht-api/src/test` 下的示例以观察 API 扩展特性。
| 示例类名 | 说明 |
|--------------------------------------------------------|------------------------------------|
| com.dwarfeng.dht.api.integration.example.TelqosExample | Telqos 示例:通过 `dht` 指令操作 DHT QoS 服务 |
## 文档
该项目的文档位于 [docs](./docs) 目录下,包括:
### wiki
wiki 为项目的开发人员为本项目编写的详细文档,包含不同语言的版本,主要入口为:
1. [简介](docs/wiki/zh-CN/Introduction.md) - 镜像的 `README.md`,与本文件内容基本相同。
2. [目录](docs/wiki/zh-CN/Contents.md) - 文档目录。
## 安装说明
1. 下载源码。
使用 git 进行源码下载。
```shell
git clone git@github.com:DwArFeng/dwarfeng-dht.git
```
对于中国用户,可以使用 gitee 进行高速下载。
```shell
git clone git@gitee.com:dwarfeng/dwarfeng-dht.git
```
2. 项目安装。
进入项目根目录,执行 maven 命令:
```shell
mvn clean source:jar install
```
3. 项目引入。
在项目的 `pom.xml` 中添加如下依赖:
`dwarfeng-dht-core` 提供核心 DTO、协议工具、值编解码器、Handler 实现和 Spring XSD 支持,为大多数场景的必选依赖:
```xml
com.dwarfeng
dwarfeng-dht-core
${dwarfeng-dht.version}
```
如需使用 spring-telqos 命令行集成,可额外引入 `dwarfeng-dht-api`:
```xml
com.dwarfeng
dwarfeng-dht-api
${dwarfeng-dht.version}
```
4. enjoy it.
## 如何使用
1. 运行 `dwarfeng-dht-core/src/test` 下的示例以观察核心编解码特性。
2. 运行 `dwarfeng-dht-api/src/test` 下的示例以观察 spring-telqos 运维指令特性。
3. 观察项目结构,将其中的配置运用到其它的 subgrade 项目中。
### 单实例模式
使用 xml 或者配置类生成一个 `DhtHandlerImpl` 实例,并按需生成 `DhtQosHandlerImpl` 与 `DhtQosServiceImpl`。
在项目的 `bean-definition.xml` 中追加配置,示例如下:
```xml
```
### 多实例模式
使用 xml 或者配置类生成多个 `DhtHandlerImpl` 实例,并通过 `DhtQosHandlerImpl` 统一路由。
在项目的 `bean-definition.xml` 中追加配置,示例如下:
```xml
```
### XSD 配置
可以使用 `dht` 命名空间装配 `DhtConfig`、`DhtHandler`、`DhtQosHandler` 与 `DhtQosService`。
在项目的 `application-context-dht.xml` 中追加配置,示例如下:
```xml
```
`config` 元素可通过 `config-name` 指定 `DhtConfig` 的 bean 名称,
并通过 `channel-value-codec` 子元素配置通道 ID 与 `ValueCodec` 的映射。
`channel-value-codec` 元素可通过 `channel-id`、`value-codec-ref`、`value-codec-class`
指定通道 ID、已有值编解码器引用或值编解码器实现类。
`handler` 元素可通过 `handler-name`、`config-ref` 指定处理器 bean 名称和配置引用。
`qos` 元素可通过 `qos-handler-name`、`qos-service-name`、`sem-ref`
指定 QoS 处理器 bean 名称、QoS 服务 bean 名称和 `ServiceExceptionMapper` 引用。
### 任意数量的实例模式
自行设计 `DhtHandler` 的工厂类,调用相关工厂方法生成 `DhtHandlerImpl` 实例。